Python 面向对象练习

文章介绍了如何在Python中定义Circle、Strange和Student类,分别计算圆的面积和周长,三角形的面积和周长,以及设计学员类处理成绩和等级。还展示了如何创建对象实例并操作其属性和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 作业练习:

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

import math
class Circle(object):
    def __init__(self,r):
        self.r=r

    def get_area(self):
        return math.pi*math.pow(self.r,2)

    def get_perimeter(self):
        return 2*math.pi*self.r

if __name__=='__main__':
    r=int(input("plese input the circle's r:"))
    c=Circle(r)
    print('圆的面积为:{0:0.2f}'.format(c.get_area()))
    print('圆的周长为:{0:0.2f}'.format(c.get_perimeter()))

运行结果:

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

import math
class Strange(object):
    def __init__(self,a1,a2,a3):
        self.a1=a1
        self.a2=a2
        self.a3=a3

    def get_area(self):
        firstnum=(self.a1+self.a2+self.a3)/2
        S=math.sqrt(firstnum*(firstnum-self.a1)*(firstnum-self.a2)*(firstnum-self.a3))
        return S

    def get_perimeter(self):
        return self.a1+self.a2+self.a3

if __name__=='__main__':
    a1 = int(input("请输入三角形的第一条边:"))
    a2 = int(input("请输入三角形的第二条边:"))
    a3 = int(input("请输入三角形的第三条边:"))
    S=Strange(a1,a2,a3)
    print('三角形的面积为:{0:0.2f}'.format(S.get_area()))
    print('三角形的周长为:{0:0.2f}'.format(S.get_perimeter()))

运行结果:

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

class Student():

    def __init__(self,name,chinese,math,English):
        self.name=name
        self.chinese=chinese
        self.math=math
        self.English=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'

students=[]
for i in range(10):
    name=input("请输入学生的姓名:")
    chinese=int(input("请输入语文成绩:"))
    math=int(input("请输入数学成绩:"))
    English=int(input("请输入英语成绩:"))
    student=Student(name,chinese,math,English)
    students.append(student)

for student in students:
    print("姓名:",student.name)
    print("语文成绩:",student.chinese,"等级:",student.get_grade(student.chinese))
    print("数学成绩:",student.math,"等级:",student.get_grade(student.math))
    print("英语成绩:",student.English,"等级:",student.get_grade(student.English))
    print()

运行结果:

 

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

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

  • 假设5个学生

  • 类和对象的处理要合理

class Student():

    def __init__(self,name):
        self.name=name
        self.scores=[]

    def get_score(self,score):
        self.scores.append(score)

    def get_total(self):
        return sum(self.scores)

    def get_average(self):
        if len(self.scores)==0:
            return 0
        return sum(self.scores)/len(self.scores)

def main():
    students=[]
    for i in range(5):
        name=input(f"请输入第{i+1}个学生的姓名:")
        student=Student(name)
    for j in range(5):
        score=int(input(f'请输入{name}的第{j+1}个成绩:'))
        student.get_score(score)

    students.append(student)
    for student in students:
        total=student.get_total()
        average=student.get_average()
        print(f"{student.name}的总分为:{total},平均分为:{average:.2f}")

if __name__=='__main__':
    main()

运行结果:

5.设计一个游戏角色类

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

方法:释放技能 被伤害

要求:设计合理

class Game_role:  # 创建一个游戏角色类
    role_name = ''  # 角色名字属性
    hp = 0  # 角色血量属性
    mp = 0  # 角色魔法属性
    state = ''  # 角色状态属性

    def __init__(self, role_name, hp, mp, state):  # __init__是一个魔法函数可以自动初始化角色属性
        self.role_name = role_name  # 初始化角色属性
        self.hp = hp  # 初始化角色属性
        self.mp = mp  # 初始化角色属性
        self.state = state  # 初始化角色属性

    def play(data):  # 创建角色释放技能函数
        data.mp = data.mp - 50  # 角色释放技能魔法量减50
        data.hp = data.hp - 99  # 角色受到攻击血量减了99
        return '{}释放了一个技能消耗了{}法力\n{}受到了攻击血量仅剩{}点状态变为{}'.format(data.role_name, data.mp,
                                                                       data.role_name, data.hp,
                                                                       data.state)  # 返回数据


data1 = Game_role('孙悟空', 100, 100, '濒临死亡')  # 创建角色对象,给角色赋值并自动初始化
data2 = Game_role('貂蝉', 99, 100, '献祭武魂')  # 创建角色对象,给角色赋值并自动初始化
print(data1.play())  # 输出角色一释放技能函数
print(data2.play())  # 输出角色二释放技能函数

运行结果:

示例:

1.定义学员信息类,包含姓名、成绩属性,定义成绩打印方法(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},不及格')

      #实例化对象
name1=input('请输入学生姓名:')
score1=int(input('请输入学生的成绩:'))
tom = Student(name1,score1)
tom.print_grade()

运行结果:

2.

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

  • 对象:小明

  • 属性:姓名、体重

  • 方法:跑步、吃东西

#创建Person类
class Person():

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

    # 用str方法返回return信息
    def __str__(self):
        return f'姓名:{self.name},目前体重:{self.weight}KG'

    #定义run方法代表跑步
    def run(self):
        self.weight-=0.5

    #定义eat方法代表吃饭
    def eat(self):
        self.weight+=1

#实例化对象
xiaoming=Person('小明',75.0)
print(xiaoming)

xiaoming.eat()
print(xiaoming)

xiaoming.run()
print(xiaoming)

 运行结果:

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

class Prime:

    def __init__(self,start,number):
        self.start=start
        self.number=number

    def prime_number(self):
        count=0
        i=self.start+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

m=int(input("请输入起始值m:"))
k=int(input("请输入需要的素数的个数k:"))
prime1=Prime(m,k)
prime1.prime_number()

运行结果: 

好的,下面是一些 Python 面向对象练习题: 1. 创建一个名为 `Person` 的类,该类具有以下属性: * `name`:字符串,表示人的姓名。 * `age`:整数,表示人的年龄。 * `gender`:字符串,表示人的性别。 该类还应具有一个名为 `speak` 的方法,该方法将打印一个字符串,表示该人正在说话。 2. 创建一个名为 `Rectangle` 的类,该类具有以下属性: * `width`:浮点数,表示矩形的宽度。 * `height`:浮点数,表示矩形的高度。 该类还应具有以下方法: * `area`:返回矩形的面积。 * `perimeter`:返回矩形的周长。 3. 创建一个名为 `BankAccount` 的类,该类具有以下属性: * `balance`:浮点数,表示银行账户的余额。 该类还应具有以下方法: * `deposit`:向银行账户中存入指定金额。 * `withdraw`:从银行账户中取出指定金额。 4. 创建一个名为 `Animal` 的类,该类具有以下属性: * `name`:字符串,表示动物的名称。 * `species`:字符串,表示动物的物种。 该类还应具有一个名为 `make_sound` 的方法,该方法将打印一个字符串,表示该动物正在发出声音。 5. 创建一个名为 `Car` 的类,该类具有以下属性: * `make`:字符串,表示汽车品牌。 * `model`:字符串,表示汽车型号。 * `year`:整数,表示汽车的生产年份。 该类还应具有以下方法: * `get_make`:返回汽车品牌。 * `get_model`:返回汽车型号。 * `get_year`:返回汽车的生产年份。 以上是一些 Python 面向对象练习题,希望能帮助你提高 Python 面向对象编程的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值