1,三角形
"""
example03 - 三角形
类方法 - 发给类的消息(比静态方法多一个参数,代表接收消息的类) ---> @classmethod
静态方法 - 不是三角形对象的消息,而是发给三角形类的消息 ---> @staticmethod
Triangle.check_sides(a, b, c)
"""
import math
class Triangle:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
@classmethod
def is_valid_sides(cls, a, b, c):
return a + b > c and b + c > a and a + c > b
@staticmethod
def check_sides(a, b, c):
return a + b > c and b + c > a and a + c > b
def perimeter(self):
return self.a + self.b + self.c
def area(self):
p = self.perimeter() / 2
a, b, c = self.a, self.b, self.c
return math.sqrt(p * (p - a) * (p - b) * (p - c))
def main():
a, b, c = map(float, input('请输入三条边的长度: ').split())
if Triangle.check_sides(a, b, c):
tri = Triangle(a, b, c)
print(f'三角形的周长: {tri.perimeter()}')
print(f'三角形的面积: {tri.area()}')
else:
print('不能构成三角形!')
if __name__ == '__main__':
main()
2.用python写一个纸牌游戏
"""
2021/10/13 14:27
"""
import random
# 符号常量优于字面常量!!!!!
SPADE, HEART, CLUB, DIAMOND = range(4)
class Card:
def __init__(self, suite, face):
self.suite = suite
self.face = face
def __repr__(self):
return self.show()
def __lt__(self, other):
if self.suite != other.suite:
return self.suite < other.suite
face1 = 14 if self.face == 1 else self.face
face2 = 14 if other.face == 1 else other.face
return face1 < face2
def show(self):
suites = ('♥', '♠', '♣', '♦')
faces = ('', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K')
return f'{suites[self.suite]}{faces[self.face]}'
class Poker:
def __init__(self):
self.cards = [Card(suite, face)
for suite in range(4)
for face in range(1, 14)]
self.index = 0
def shuffle(self):
self.index = 0
random.shuffle(self.cards)
def has_more(self):
return self.index < len(self.cards)
def deal(self):
# return self.cards.pop()
card = self.cards[self.index]
self.index += 1
return card
class Player:
def __init__(self, nickname):
self.nickname = nickname
self.cards = []
def get_card(self, card):
self.cards.append(card)
def arrange(self):
self.cards.sort()
poker = Poker()
poker.shuffle()
names = ('妲己', '安其拉', '瑶妹', '貂蝉')
players = [Player(name) for name in names]
for _ in range(13):
for player in players:
card = poker.deal()
player.get_card(card)
for player in players:
player.arrange()
print(player.nickname, end=': ')
print(player.cards)
# print(poker.cards)
# card1 = Card(HEART, 13)
# card2 = Card(DIAMOND, 5)
# card3 = Card(SPADE, 1)
# card4 = Card(CLUB, 10)
# print(card1, card2, card3, card4)