作业练习:
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()
运行结果: