oop面向对象编程python

1.定义一个圆类(Circle),求圆的面积和周长


import mathclass Circle():def __init__(self, R ,name):self.radius = Rself.name = namedef girth(self):return 2 * self.radius * math.pidef area(self):return self.radius ** 2 * math.pic1= Circle(10,"c1")
c2= Circle(20,"c2")
c3= Circle(30,"c3")
print(f"{c1.name} girth is {c1.girth():.2f} and area is {c1.area():.2f}")
print(f"{c2.name} girth is {c2.girth():.2f} and area is {c2.area():.2f}")
print(f"{c3.name} girth is {c3.girth():.2f} and area is {c3.area():.2f}")

2.定义一个三角形类(Strange),属性是三边的长度,求三角形的面积和周长

# _*_ coding : utf-8 _*_
# @TIME : 2024/1/17 19:10
# @Author : gu
# @File : Triangle
# @Project : pytest
import mathclass Triangle():def __init__(self,side1,side2,side3):lis=[side1,side2,side3]lis.sort()if lis[0]+lis[1]>=lis[2]:self.side1 = side1self.side2 = side2self.side3 = side3else:self.side1 = 0self.side2 = 0self.side3 = 0def girth(self):return self.side1 + self.side2 + self.side3def area(self):p=self.girth()/2area = math.pow((p*(p-self.side1)*(p-self.side2)*(p-self.side3)),0.5)return areat2= Triangle(3,4,5)
t1= Triangle(1,3,5)
print(f"t1 girth is {t1.girth():.2f} and area is {t1.area():.2f}")
print(f"t2 girth is {t2.girth():.2f} and area is {t2.area():.2f}")

3.创建一个学员类,并设计三个字段用于表示学生的成绩(语文、数学、英语):然后定义一个列表表示一个班的学生(10人),依次输入每个学生的信息和成绩,输入的同时将学员的每科成绩划分等级(100-90:A     89-80:B    79-70:C    69-60:D 60以下:E)最后输出所有学员的信息

# _*_ coding : utf-8 _*_
# @TIME : 2024/1/17 19:30
# @Author : gu
# @File : Student
# @Project : pytest
class student():def __init__(self, name, math, eng, lan):self.name = nameself.math = mathself.eng = engself.lan = lan@staticmethoddef to_level(score):if score >= 90:return 'A'elif score >= 80:return 'B'elif score >= 70:return 'C'elif score >= 60:return 'D'elif score >= 0:return 'E'else:return '输入错误'def math_level(self):return self.to_level(self.math)def eng_level(self):return self.to_level(self.eng)def lan_level(self):return self.to_level(self.lan)def __str__(self):return f"姓名{self.name} 数学成绩{self.math} 语文成绩{self.lan} 英语成绩{self.eng}语文评级{self.lan_level()} 数学评级{self.math_level()} 英语评级{self.eng_level()} "lis=['student1', 'student2', 'student3', 'student4', 'student5','student6', 'student7', 'student8', 'student9', 'student10']
s=['']*len(lis)
for i in range(0,len(lis)):scoree=input(f"输入{lis[i]}的成绩 分别是数学 英语 语文").split(',')score=list(map(int,scoree))s[i]=student(lis[i],score[0],score[1],score[2])print(f"{s[i].name} 的英语评级是{s[i].eng_level()} 语文评级{s[i].lan_level()} 数学评级{s[i].math_level()}")
for i in s:print(i)

4.编一个关于求某门功课总分和平均分的程序

- 每个学生的信息包括姓名和某门功课的成绩

- 假设5个学生

- 类和对象的处理要合理


class Student:def __init__(self, name, score):self.name = nameself.score = scoredef get_total_score(self):return sum(self.score)def get_average_score(self):return sum(self.score) / len(self.score)student1 = Student("张三", [90, 85, 80])
student2 = Student("李四", [95, 90, 75])
student3 = Student("王五", [80, 70, 60])
student4 = Student("赵六", [85, 75, 65])
student5 = Student("孙七", [70, 60, 50])students = [student1, student2, student3, student4, student5]
def calculate_and_print(subject_index):total_score = 0 # 初始化总分为0for student in students: # 遍历所有的学生对象total_score += student.score[subject_index]average_score = total_score / len(students)print(f"该门功课的总分是{total_score},平均分是{average_score}")calculate_and_print(0)
calculate_and_print(1)
calculate_and_print(2)

5.设计一个游戏角色类

字段:角色名、血量、魔法、状态

方法:释放技能 被伤害

要求:设计合理

# _*_ coding : utf-8 _*_
# @TIME : 2024/1/17 21:39
# @Author : gu
# @File : hero
# @Project : pytestclass Hero:name: strhealth: intmagic: intstatus: strdef __init__(self, name, health, magic, status):self.name = nameself.health = healthself.magic = magicself.status = statusdef use_skill(self):if self.magic > 0:print(f"{self.name} 使用了技能")self.status = '使用技能'self.magic -= 1else:print("能量不足")self.status= "能量耗尽"def hearted(self):if self.health > 0:print(f"{self.name}收到攻击")self.status = '收到伤害'self.health -= 1else:self.status = '死'print("阵亡")hero = Hero('蛮王',100,100,"存活")
print(hero.status)
hero.use_skill()
print(hero.status)
hero.hearted()
print(hero.status)
for i in range(100):hero.use_skill()
print(hero.status)
for i in range(100):hero.hearted()
print(hero.status)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/632488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker之nacos集群部署

前言 Nacos 是一个开源的注册中心和配置中心,用于实现微服务架构中的服务发现、服务治理和动态配置管理。在 Docker 中使用 Nacos,你可以通过拉取官方提供的 Docker 镜像并运行容器的方式来快速部署 一.Nacos镜像拉取及独立模式 镜像拉取命令详解&…

【自动化测试】看完这篇文章,让你了解到你和大厂的差距到底在哪儿

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

sc.pl.umap 画feature plot

今天有时间尝试测试了这个scanpy的feature plot,其实很简单,就是使用 sc.pl.umap(adata,color"gene name"), 但是这个地方就有一个问题,这个画出来的值是原始的基因值还是scale之后的,这个我得搞清楚 首先看使用例子,参…

企业为什么需要选择软件测试外包公司?有哪些查找途径?

软件测试外包公司是专门为软件企业提供软件测试服务的机构。这些公司拥有一支经验丰富、专业化的软件测试团队,能够帮助企业进行软件产品的测试、评估和质量保证。 一、企业为什么需要选择软件测试外包公司?   1.专业的测试团队:外包公司拥有经验丰富…

赤藓糖醇行业研究:预计2029年将达到3.5亿美元

赤藓糖醇是一种四碳糖醇,存在于多种食物中,如葡萄、梨、西瓜等,可由微生物发酵法和化学合成法两种方法制备,目前商业化生产中均采用微生物发酵法。赤藓糖醇由葡萄糖发酵制作而成,上游原料主要包括葡萄糖、玉米淀粉糖和…

C++(13)——string

上篇文章中介绍了中部分函数的用法,本篇文章将继续对其他的函数进行介绍: 1. substr: string substr (size_t pos 0, size_t len npos) const; 函数的两个参数如上述代码所示,此函数的主要作用是根据一个已有的的对象的起始坐标开始&a…

STM32---基本定时器(含源码)小白可入

写在前面:定时器是STM32中一个十分重要的外设,并且在STM32中具有多个定时器。定时器的包括基本定时器、通用定时器以及高级控制定时器,这些定时器相关独立,不共享任何资源。当然,其难易程度也是逐渐增加的,…

如何实现固定公网地址远程访问本地部署的Termux MySQL数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备,尽管最初并非设计为服务器,但是随着技术的进步我们可以将Android配置为生产力工具,变成一个随身…

postman测试文件上传接口设置说明

Postman介绍及下载链接地址 Download Postman | Get Started for Free 打开postman 选择POST方法,然后设置goform 设置Header参数 设置Body参数,选择数据form-data 添加文件, 选择为文件属性 添加需要上传的文件

MySql三方工具

Yearning 1.1.1 Yearning简介 Yearning 开源的MySQL SQL语句审核平台,提供数据库字典查询,查询审计,SQL审核等多种功能。 Yearning 1.x 版本需Inception提供SQL审核及回滚功能。 Inception是集审核,执行,回滚于一体的…

封装日期时间组件

概述 该组件包含日期选择&#xff0c;任意时间选择、固定时间点选择。 子组件代码(date-picker.vue) <template><div id"date_picker"><el-popover placement"top" width"322" trigger"click" ref"popover&quo…

照片修复可以用哪些工具?分享3款实用的!

展给了我们重新唤醒这些记忆的可能。现在&#xff0c;有许多工具可以帮助我们修复这些珍贵的照片&#xff0c;让它们重新焕发生机。那么&#xff0c;有哪些工具可以做到这一点呢&#xff1f;接下来&#xff0c;让我们一起来看看吧&#xff01; 一、智能修复软件 现在市面上有许…

vue2嵌入高德地图选择地址后显示地址和经纬度

以高德地图为里&#xff0c;申请key&#xff0c;选择js api服务&#xff0c;获取key和密钥. vue2项目代码引入相关依赖&#xff1a; npm i amap/amap-jsapi-loader -S 封装成组件: <template><div><el-row :gutter"15" class""><…

C++设计模式(李建忠)笔记2

C设计模式&#xff08;李建忠&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT&#xff1a;https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 文章目录 C设计模…

C#,入门教程(19)——循环语句(for,while,foreach)的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(18)——分支语句&#xff08;switch-case&#xff09;的基础知识https://blog.csdn.net/beijinghorn/article/details/124039953 一、for循环 当老师进入教室&#xff0c;从门口开始分别按行、列点名&#xff0c;看看哪位翘课&…

sqlilabs第五十三五十四关

Less-53(GET - GET - Error based - ORDER BY CLAUSE-String- Stacked injection) 手工注入 单引号闭合&#xff0c;和上一关一样堆叠注入解决 自动注入 和上一关一样 Less-54(GET - challenge - Union- 10 queries allowed -Variation 1) 手工注入 这一关开始后面的可以看…

Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞 限制容器之间的网络流量 限制容器的内存使用量 为Docker启用内容信任 将容器的根文件系统挂载为只读 审核Docker文件和目录 默认情况下&#xff0c;同一主机上的容器之间允许所有网络通信。 如果不需要&#xff0c;请限制所有容器间的通信。 将需要相互通…

IMX6LL|时钟控制

一.时钟控制模块 4个层次配置芯片时钟 晶振时钟PLL与PFD时钟PLL选择时钟根时钟/外设时钟 1.1晶振时钟 系统时钟来源 RTC时钟源&#xff1a;32.768KHz&#xff0c;连接RTC模块&#xff0c;进行时间计算。系统时钟&#xff1a;24MHz&#xff0c;芯片主晶振 1.2PLL和PFD倍频时钟…

Jenkins-Pipeline

Pipeline 1 安装插件 2 新建一个 Pipline 工程 3 配置Pipeline 脚本 agent的使用可以参考这个文档 pipeline {agent anystages {stage(Build) { steps {echo Building project...}}stage(Test) { steps {echo Testing project...}}stage(Deploy) { steps {echo Deploying …

Go新项目-Gin中wire的依赖注入方式实战(6)

选型Go项目过程中&#xff0c;针对依赖注入方式的分析和使用 参考资料 https://go.dev/blog/wirehttps://medium.com/dche423/master-wire-cn-d57de86caa1bhttps://toutiao.io/posts/et0t2lk/previewhttps://imlht.com/archives/223/https://lailin.xyz/post/go-training-week…