python-homework 面向对象

58 阅读4分钟

定义一个用户类,类名称是User

class User():
    # 初始化实例对象属性
    def __init__(self, name, age, gender, tel):
        self.name = name
        self.age = age
        self.gender = gender
        self.tel = tel

    def study(self):
        print("我是" + self.name + ",我爱学习")

    # __str__内置魔术方法,用于输出User的相关信息
    def __str__(self):
        return "[name=" + self.name + ",age=" + str(self.age) + ",gender=" + self.gender + ",tel=" + self.tel + "]"
    
if __name__ == "__main__":
    # 传递属性的值,实例化对象
    u = User("张三", 17, "男", "13124564456")
    # 重写了__str__(sef),打印__str__(sef)返回的字符串
    print(u)
    u.study()

运行结果:

image.png

定义学员信息类,包含姓名、成绩属性,定义成绩打印方法(90分及以上显示优秀,80分及以上显示良好,70分及以上显示中等,60分及以上显示合格,60分以下显示不及格)

class Student():
    def __init__(self, name, score):
        self.name = name
        self.score = score

    def print_grade(self):
        if self.score >= 90:
            print(f'学员姓名:{self.name},学员成绩:{self.score},优秀')
        elif self.score >= 80:
            print(f'学员姓名:{self.name},学员成绩:{self.score},良好')
        elif self.score >= 70:
            print(f'学员姓名:{self.name},学员成绩:{self.score},中等')
        elif self.score >= 60:
            print(f'学员姓名:{self.name},学员成绩:{self.score},及格')
        else:
            print(f'学员姓名:{self.name},学员成绩:{self.score},不及格')

if __name__ == "__main__":
    name = input('请输入姓名:')
    score = int(input('请输入成绩:'))
    tom = Student(name, score)
    tom.print_grade()

运行结果:

image.png

小明体重75.0公斤,小明每次跑步会减掉0.50公斤,小明每次吃东西体重增加1公斤

class Person():
    def __init__(self, name, weight):
        self.name = name
        self.weight = weight

    def __str__(self):
        return f"姓名:{self.name},目前体重:{self.weight}kg"

    def run(self):
        self.weight -= 0.5

    def eat(self):
        self.weight += 1

if __name__ == '__main__':
    xiaoming = Person('小明', 60.0)
    print(xiaoming)

    xiaoming.eat()
    print(xiaoming)

    xiaoming.run()
    print(xiaoming)

运行结果:

image.png

编写Prime类实现输出大于m且紧随m的k个素数

class Prime:
    def __init__(self, start_value, number):
        self.start_value = start_value
        self.number = number

    def prime_number(self):
        count = 0
        i = self.start_value + 1
        while count < self.number:
            for j in range(2, i):
                if i % j == 0:
                    break
            else:
                count = count + 1
                print(i, end=" ")
            i = i + 1

if __name__ == '__main__':
    m = int(input("起始值m:"))
    k = int(input("素数个数k:"))
    prime = Prime(m, k)
    prime.prime_number()

运行结果:

image.png

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

import math

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

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

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

if __name__ == '__main__':
    circle = Circle(1)
    print("圆的面积为:%.4f"%circle.area())
    print("圆的周长为:%.4f"%circle.perimeter())

运行结果:

image.png

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

import math

class Triangle:
    def __init__(self, side1, side2, side3):
        self.side1 = side1
        self.side2 = side2
        self.side3 = side3

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

    # 三边分别为 a、b、c,半周长为s
    # 海伦公式:area = sqrt(s * (s - a) * (s - b) * (s - c))
    def area(self):
        s = self.perimeter() / 2  
        area = math.sqrt(s * (s - self.side1) * (s - self.side2) * (s - self.side3))
        return area
    
if __name__ == '__main__':
    triangle = Triangle(2, 3, 4)
    print("三角形的周长为:%.4f"%triangle.perimeter())
    print("三角形的面积为:%.4f"%triangle.area())

运行结果:

image.png

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

class Student:
    def __init__(self, name, score_chinese, score_math, score_english):
        self.name = name
        self.score_chinese = score_chinese
        self.score_math = score_math
        self.score_english = score_english

    def get_grade(self, score):
        if score >= 90:
            return "A"
        elif score >= 80:
            return "B"
        elif score >= 70:
            return "C"
        elif score >= 60:
            return "D"
        else:
            return "E"
        
if __name__ == '__main__':
    students = []   
    for i in range(10):
        name = input(f"输入第{i+1}位学生的姓名:")
        score_chinese = int(input(f"输入第{i+1}位学生的语文成绩:"))
        score_math = int(input(f"输入第{i+1}位学生的数学成绩:"))
        score_english = int(input(f"输入第{i+1}位学生的英语成绩:"))
        student = Student(name, score_chinese, score_math, score_english)
        students.append(student)

    print("姓名\t语文成绩\t数学成绩\t英语成绩")
    for student in students:
        print(f"{student.name}\t{student.get_grade(student.score_chinese)}\t{ student.get_grade(student.score_math)}\t{student.get_grade(student.score_english)}")

运行结果:

image.png

编一个关于求某门功课总分和平均分的程序,每个学生的信息包括姓名和某门功课的成绩,假设5个学生,类和对象的处理要合理

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score

class Course:
    def __init__(self, students):
        self.students = students

    def _total_score(self):
        total_score = 0
        for student in self.students:
            total_score += student.score
        return total_score

    def _average_score(self):
        score = self._total_score()
        average_score = score / len(self.students)
        return average_score

if __name__ == '__main__':
    students = []
    for i in range(5):
        name = input(f"输入第{i+1}位学生的姓名:")
        score = float(input(f"请输入{i+1}的成绩:"))
        student = Student(name, score)
        students.append(student)

    course = Course(students)
    total_score = course._total_score()
    average_score = course._average_score()

    print("该门功课的总分为:%.4f"%total_score)
    print("该门功课的平均分为:%.4f"%average_score)

运行结果:

image.png

设计一个游戏角色类,字段:角色名、血量、魔法、状态,方法:释放技能、被伤害,要求:设计合理

class Character:
    def __init__(self, name, bp, mp,status):
        self.name = name
        self.bp = bp
        self.mp = mp
        self.status = status

    def release_skill(self):
        if self.mp >= 10:
            self.mp -= 10
            print(f"{self.name}释放了一次技能")
        else:
            print(f"{self.name}魔法值不足,无法释放技能")

    def be_injured(self, damage):
        self.bp -= damage
        if self.bp <= 0:
            self.bp = 0
            self.status = "死亡"
            print(f"{self.name}已死亡")
        else:
            print(f"{self.name}受到了{damage}点伤害,当前血量为{self.bp}")

if __name__ == '__main__':
    c = Character(' kuyayay', 50, 30, '正常')
    c.release_skill()
    c.release_skill()
    c.be_injured(20)
    c.release_skill()
    c.be_injured(10)
    c.release_skill()
    c.be_injured(30)

运行结果:

image.png