oop面向对象编程python

news2025/5/24 15:14:33

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


import math


class Circle():
    def __init__(self, R ,name):
        self.radius = R
        self.name = name

    def girth(self):
        return 2 * self.radius * math.pi

    def area(self):
        return self.radius ** 2 * math.pi


c1= 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 math


class Triangle():
    def __init__(self,side1,side2,side3):
        lis=[side1,side2,side3]
        lis.sort()
        if lis[0]+lis[1]>=lis[2]:
            self.side1 = side1
            self.side2 = side2
            self.side3 = side3
        else:
            self.side1 = 0
            self.side2 = 0
            self.side3 = 0


    def girth(self):
        return self.side1 + self.side2 + self.side3

    def area(self):
        p=self.girth()/2
        area = math.pow((p*(p-self.side1)*(p-self.side2)*(p-self.side3)),0.5)
        return area

t2= 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 = name
        self.math = math
        self.eng = eng
        self.lan = lan

    @staticmethod
    def 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 = name
        self.score = score

    def 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 # 初始化总分为0
    for 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 : pytest

class Hero:
    name: str
    health: int
    magic: int
    status: str

    def __init__(self, name, health, magic, status):
        self.name = name
        self.health = health
        self.magic = magic
        self.status = status

    def use_skill(self):
        if self.magic > 0:
            print(f"{self.name} 使用了技能")
            self.status = '使用技能'
            self.magic -= 1
        else:
            print("能量不足")
            self.status= "能量耗尽"
    def hearted(self):
        if self.health > 0:
            print(f"{self.name}收到攻击")
            self.status = '收到伤害'
            self.health -= 1
        else:
            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.coloradmin.cn/o/1392961.html

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

相关文章

全球移动通信市场,正在经历哪些新变化?

2023年已经结束了。回顾这一年的全球移动通信市场,如果让我用一个词来总结,那就是——“厚积薄发”。 从表面上来看,似乎并没有什么大事情发生。但实际上,平静的湖面之下,却是一片波涛汹涌、风云激荡。 无论是消费互联…

springcloud Eureka服务注册与发现

文章目录 代码地址Eureka基础知识什么是服务治理什么是服务注册与发现 单机版eurekaServerIDEA生成eurekaServer端服务注册中心类似物业公司EurekaClient端cloud-provider-payment8001修改EurekaClient端cloud-consumer-order80 集群Eureka构建步骤新建cloud-eureka-server7002…

Android平台Unity下如何通过WebCamTexture采集摄像头数据并推送至RTMP服务器或轻量级RTSP服务

技术背景 我们在对接Unity下推送模块的时候,遇到这样的技术诉求,开发者希望在Android的Unity场景下,获取到前后摄像头的数据,并投递到RTMP服务器,实现低延迟的数据采集处理。 在此之前,我们已经有了非常成…

Jxls 实现动态导出功能

目录 引言前端页面后端代码excel模板导出效果 引言 在实际做项目的过程中,导出报表时需要根据每个人所关注的点不一样,所需导出的字段也不一样,这时后端就需要根据每个所选的字段去相应的报表,这就是本文要讲的动态导出报表。 前端…

线程的使用

线程的创建方式 1、实现Runnable Runnable规定的方法是run(),无返回值,无法抛出异常 实现Callable 2、Callable规定的方法是call(),任务执行后有返回值,可以抛出异常 3、继承Thread类创建多线程 继承java.lang.Thread类&#xff0…

Docker registry镜像仓库,私有仓库及harbor管理详解

目录 registry镜像仓库概述 Docker 镜像仓库(Docker Registry): registry 容器: 私有仓库概述 搭建本地私有仓库示例 Harbor概述 harbor架构 详解构成 Harbor由容器构成 Harbor部署示例 环境准备 部署Docker-Compose服…

uniapp中uview组件库的NoticeBar 滚动通知 使用方法

目录 #平台差异说明 #基本使用 #配置主题 #配置图标 #配置滚动速度 #控制滚动的开始和暂停 #事件回调 #API #Props #Events 该组件用于滚动通告场景,有多种模式可供选择 #平台差异说明 AppH5微信小程序支付宝小程序百度小程序头条小程序QQ小程序√√√√…

【不需要网络不需要显卡】本地部署GPT

【不需要网络/不需要显卡】本地部署GPT 大家好,我是老 J 我们都知道ChatGPT目前只有两种使用方式,一种是直接去官网访问,适合个人用户;另一种是API调用,适合企业或者网站使用。这两种方式的门槛都比较高,…

10个用于Android开发的有用的Kotlin库及示例

10个用于Android开发的有用的Kotlin库及示例 在Android开发领域,Kotlin已成为一门领先的语言,带来了现代语法和功能的浪潮。随着Kotlin的崛起,涌现出了许多专为其定制的库,进一步增强了开发体验。本文将深入介绍其中的10个库&…

【论文阅读】One For All: Toward Training One Graph Model for All Classification Tasks

目录 0、基本信息1、研究动机2、创新点——One For All :unique features3、准备4、具体实现4.1、用TAGs统一来自不同领域的图数据4.2、用NOI(NODES-OF-INTEREST)统一不同图任务4.2.1、NOI子图4.2.2、NOI提示结点 4.3、用于图的上下文学习&am…

Rust之构建命令行程序(三):重构改进模块化和错误处理

开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 重构改进模块化和错误处理 为了改进我们的程序,我们将修复与程序结构及其处理潜在错误的方式有关的四个问题。首先,我们的main函数现在执行两项任务:解析参数和…

Find My相机|苹果Find My技术与相机结合,智能防丢,全球定位

相机是一种利用光学成像原理形成影像并使用底片记录影像的设备,是用于摄影的光学器械。相机让我们能够记录下美丽的风景和珍贵的时刻。当我们到达一个迷人的地方,或者经历了一个特别难忘的时刻时,我们可以使用照相机来拍摄照片,记录下这些美好的回忆。照相机可以帮助…

最新 生成pdf文字和表格

生成pdf文字和表格 先看效果 介绍 java项目&#xff0c;使用apache的pdfbox工具&#xff0c;可分页&#xff0c;自定义列 依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.22<…

鸿蒙开发(四)UIAbility和Page交互

通过上一篇的学习&#xff0c;相信大家对UIAbility已经有了初步的认知。在上篇中&#xff0c;我们最后实现了一个小demo&#xff0c;从一个UIAbility调起了另外一个UIAbility。当时我提到过&#xff0c;暂不实现比如点击EntryAbility中的控件去触发跳转&#xff0c;而是在Entry…

Qt编程之仿gnome-terminal终端样式 +颜色文字显示

Qt仿linux 终端样式 颜色文字 1.说再多废话不如直接show code2.实现效果 本文采用QTextBrowser作为文本显示窗口&#xff0c;进行文本的显示。本文实例实现的效果并没有终端的输入效果&#xff0c;这里只是提供一些仿终端样式思路。 1.说再多废话不如直接show code 1.ui文件…

Openwrt 下动态路由协议(quagga-OSPF)配置与验证

文章目录 前言网络拓扑静态路由方式动态路由方式Openwrt下 Quagga 安装Quagga 配置R1路由器zebra配置R1路由器ospf配置R2路由器zebra配置R2路由器ospf配置OSPF协议分析REF本文将在两台openwrt系统上安装配置quagga, 搭建一套完整环境,来验证OSPF动态路由的基本功能和实际效果,…

关于变量在多个.C文件中使用(Undefined symbol tempbuff (referred from main.o).问题解决)

1、如图结构&#xff0c;想在multimenu.C和usart1.c中使用变量tempbuff 于是&#xff0c;就将使用的代码移动了过来&#xff0c;为SetTxData1_toLCD(0x00,0x01);和UserUart1Send( tempbuff1,sizeof(tempbuff1));&#xff0c;编译后提示错误如下&#xff1a; communication_prot…

从零开始学习Python基础语法:打开编程大门的钥匙

文章目录 一、引言1.1 Python作为一种流行的编程语言的介绍1.2 Python的应用领域和适用性 二、为什么选择Python2.1 Python的简洁性和易读性2.2 Python的跨平台特性 三、Python在数据科学和人工智能领域的应用3.1 第一个Python程序3.1.1 Hello, World!&#xff1a;编写并运行你…

XXL-Job的搭建接入Springboot项目(详细)

一、XXL-Job介绍 XXL-Job 是一款开源的分布式任务调度平台&#xff0c;由 Xuxueli&#xff08;徐雪里&#xff09;开发。它基于 Java 技术栈&#xff0c;提供了一套简单易用、高可靠性的任务调度解决方案。 XXL-Job 的主要作用是帮助开发者实现定时任务的调度和执行。它可以用…

安装脚手架Vue CLI详解!!!

Vue CLI基本介绍&#xff1a; Vue CLI是Vue官方提供的一个全局命令工具。可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 安装脚手架好处&#xff1a; 开箱即用&#xff0c;零配置&#xff1b;内置babel等工具&#xff1b;标准化 安装步骤&#…