-
定义一个狗类和一个人类:
狗拥有属性:姓名、性别和品种 拥有方法:叫唤
class Dog: def __init__(self,name,gender,breed): self.name=name self.gender=gender self.breed=breed def call(self): return '叫唤' a=Dog('小黄','公','中华田园犬') print(f'这只小狗名叫{a.name},性别为{a.gender},品种是{a.breed},它会{a.call()}') 这只小狗名叫小黄,性别为公,品种是中华田园犬,它会叫唤
人类拥有属性:姓名、年龄、狗 拥有方法:遛狗
class Person: def __init__(self,name,age,is_dog): self.name=name age1 = age self.age= age1 self.is_dog=is_dog def walk_the_dog(self): return '遛狗' a=Person('小明','18','没有狗') print(f'这个人名叫{a.name},年龄为{a.age},{a.is_dog},他会{a.walk_the_dog()}') 这个人名叫小明,年龄为18,没有狗,他会遛狗
-
定义一个矩形类,拥有属性:长、宽 拥有方法:求周长、求面积
class Rectangle: def __init__(self,x=5,y=4): self.length=x self.wide=y def area(self): return self.length*self.wide a=Rectangle(6,7) print(a.area()) 42
-
定义一个二维点类,拥有属性:x坐标、y坐标 拥有方法:求当前点到另外一个点的距离
class Point: def __init__(self,x,y): self.x=x self.y=y def distance(self,b): return ((self.x-b.x)**2+(self.y-b.y)**2)**0.5 a=Point(4,5) b=Point(1,1) print(b.x) print(f'两圆的距离是{a.distance(b)}') 5.0
-
定义一个圆类,拥有属性:半径、圆心 拥有方法:求圆的周长和面积、判断当前圆和另一个圆是否外切
class Circle: pi=3.14 def __init__(self,r,x0,y0): self.r=r self.x0=x0 self.y0=y0 def perimeter(self): return Circle.pi*2*self.r def area(self): return Circle.pi*self.r**2 def is_touch(self,a): return ((self.x0 - a.x0) ** 2 + (self.y0 - a.y0) ** 2) ** 0.5 == a.r+ self.r c1=Circle(2,0,0) c2=Circle(3,3,4) print(f'圆1的周长为{c1.perimeter()},圆1的面积为{c1.area()}') print(f'圆2的周长为{c2.perimeter()},圆2的面积为{c2.area()}') print(f'是否外切:{(c2.is_touch(c1))}') 圆1的周长为12.56,圆1的面积为12.56 圆2的周长为18.84,圆2的面积为28.26 是否外切:True
-
定义一个线段类,拥有属性:起点和终点, 拥有方法:获取线段的长度
class lines: def __init__(self,x0=0,y0=0,x1=3,y1=4): self.x0=x0 self.y0=y0 self.x1 = x1 self.y1 = y1 def length(self): return ((self.x0-self.x1)**2+(self.y0-self.y1)**2)**0.5 a=lines() print(a.length()) 5.0
-
写一个斗地主游戏类(根据生活经验添加类的内容)
import random class ChinesePoker: list1 = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2'] list2 = ['♦', '♣', '♥', '♠'] list4 = [] for i in list1: for j in list2: list4.append(j + i) list4.extend(['joker','JOKER']) #生成有序的牌组 def shuffle(self,list1): # 洗牌 random.shuffle(list1) return ChinesePoker.list4 def deal(self,list0): # 发牌 player1=[] player2 = [] player3 = [] i1=iter(list0) for i in range(17): player1.append(next(i1)) player2.append(next(i1)) player3.append(next(i1)) a = random.randint(0, 2) # 随机给予某个玩家地主,发最后三张牌 if a == 0: player1.extend(list(i1)) elif a == 1: player2.extend(list(i1)) elif a == 2: player3.extend(list(i1)) return player1,player2,player3 def richard_card(self,players): #理牌 list1={str(i): i for i in range(3,11)} list1.update({'J':11,'Q':12,'K':13,'A':14,'2':15,'oker':16,'OKER':17}) return sorted(players[0], key=lambda x: list1[x[1:]]),sorted(players[1], key=lambda x: list1[x[1:]]),sorted(players[2], key=lambda x: list1[x[1:]]) a=ChinesePoker() #本局斗地主对象 list1=ChinesePoker.list4 #初始牌 list0=a.shuffle(list1) #洗牌 players=(a.deal(list0)) #发牌 print(a.richard_card(players)) #理牌
day17-面向对象作业
于 2022-10-15 14:46:43 首次发布