oop面向对象编程python

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)

posted @ 2024-01-17 21:53  f0r9  阅读(3)  评论(0编辑  收藏  举报  来源