# 倒计时时钟
import time
class CountDownClock:
def __init__(self, hour, minute, second):
"""
初始化时间
:param hour:时
:param minute:分
:param second: 秒
"""
self.hour = hour
self.minute = minute
self.second = second
def show(self):
"""显示"""
return f'{self.hour:0>2d}:{self.minute:0>2d}:{self.second:0>2d}'
def is_over(self):
"""判断倒计时计时器是否结束"""
return self.hour == 0 and self.minute == 0 and self.second == 0
def is_running(self):
"""判断倒计时计时器是否还在运行"""
return self.hour != 0 or self.minute != 0 or self.second != 0
def run(self):
"""走字"""
if not self.is_over():
self.second -= 1
if self.second < 0:
self.second = 59
self.minute -= 1
if self.minute < 0:
self.minute = 59
self.hour -= 1
clock = CountDownClock(1, 0, 1)
while not clock.is_over():
print(clock.show())
time.sleep(1)
clock.run()
print('时间到!')
# 定义一个类,描述一个三角形
class Triangle:
def __init__(self, a, b, c):
"""
初始化方法
:param a:第一条边
:param b:第二条边
:param c:第三条边
"""
self.a = a
self.b = b
self.c = c
@staticmethod # 装饰器,定义一个静态方法,不是发给对象的消息,而是发给类的消息。与类方法相同,只是类方法比静态方法多一个参数,表示接收消息的类名
def is_structure(a, b, c):
return a + b > c and a + c > b and b + c > a
@classmethod # 类方法,与静态方法相同,只是类方法比静态方法多一个参数,表示接收消息的类名
def is_valid_sides(cls, a, b, c):
return a + b > c and a + c > b and b + c > a
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())
a = float(input('输入第一条边的长度:'))
b = float(input('输入第二条边的长度:'))
c = float(input('输入第三条边的长度:'))
if Triangle.is_structure(a, b, c):
tri = Triangle(a, b, c)
print(f'三角形的周长:{tri.perimeter()}')
print(f'三角形的面积:{tri.area()}')
else:
print('不能构成三角形')
if __name__ == '__main__':
main()