python数码管倒计时程序_Python小程序之倒计时

利用当前最流行的编程语言Python,来实现一个小案例,最终功能如下图展示:

2020010210270869.png

20200102102916635.png

代码为面向过程来写的,没作优化处理,可以利用Python封装继承多态的特性去进行优化,这里暂时不作展示。

详细代码和注释如下:

import time

input_years = 0

input_month = 0

input_day = 0

localtime = time.localtime(time.time())

leap_years = False

while True:

try:

input_years = int(input("输入年:"))

input_month = int(input("输入月:"))

input_day = int(input("输入日:"))

except:

print("请输入数字,谢谢!")

continue

if input_years < localtime[0]:

print("请输入大于或等于当前年份")

continue

if input_month in [1, 3, 5, 7, 8, 10, 12]:

if input_day > 31 or input_day < 1:

print("大月31天")

continue

break

elif input_month in [4, 6, 9, 11]:

if input_day > 30 or input_day < 1:

print("小月30天")

continue

break

elif input_month == 2:

if input_years % 100 == 0 and input_years % 400 == 0:

if input_day > 29 or input_day < 1:

print("闰年2月29天")

continue

break

elif input_years % 4 == 0 and input_years % 100 != 0:

if input_day > 29 or input_day < 1:

print("闰年2月29天")

continue

break

elif input_years % 3200 == 0 and input_years % 172800 == 0:

if input_day > 29 or input_day < 1:

print("闰年2月29天")

continue

break

else:

if input_day > 28 or input_day < 1:

print("平年2月28天")

continue

break

else:

print("请输入1至12月,谢谢!")

continue

tm_year = localtime[0]

tm_mon = localtime[1]

tm_day = localtime[2]

tm_hour = localtime[3]

tm_min = localtime[4]

tm_sec = localtime[5]

tm_y_day = localtime[7]

if input_years % 100 == 0 and input_years % 400 == 0:

leap_years = True

elif input_years % 4 == 0 and input_years % 100 != 0:

leap_years = True

elif input_years % 3200 == 0 and input_years % 172800 == 0:

leap_years = True

a = 0

# 计算输入的年里这一日是这一年的第多少天

for i in range(1, input_month + 1):

for j in range(1, 32):

if input_month == i and input_day == j:

a += 1

print(f"这是{input_years}年第{a}天")

break

a += 1

if i in [1, 3, 5, 7, 8, 10, 12]:

if j >= 31:

break

elif i in [4, 6, 9, 11]:

if j >= 30:

break

elif i == 2:

if leap_years:

if j >= 29:

break

else:

if j >= 28:

break

if input_years == tm_year: # 查询的年份距离当前年份是同一年

for d in range(a - tm_y_day - 1, -1, -1):

Var_Hour = 23 - time.localtime(time.time())[3]

Var_Min = 59 - time.localtime(time.time())[4]

Var_Sec = 60 - time.localtime(time.time())[5]

for i in range(Var_Hour, 0, -1):

for j in range(Var_Min, 0, -1):

for k in range(Var_Sec, 0, -1):

print("\r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k),

end="")

time.sleep(1)

if k == 1:

Var_Sec = 60

break

else:

if input_years - tm_year == 1: # 查询的年份距离当前年份大于一整年

for d in range(365 - tm_y_day + a - 1 if leap_years else 366 - tm_y_day + a - 1, -1, -1):

Var_Hour = 23 - time.localtime(time.time())[3]

Var_Min = 59 - time.localtime(time.time())[4]

Var_Sec = 60 - time.localtime(time.time())[5]

for i in range(Var_Hour, 0, -1):

for j in range(Var_Min, 0, -1):

for k in range(Var_Sec, 0, -1):

print("\r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k),

end="")

time.sleep(1)

if k == 1:

Var_Sec = 60

break

else:

var_y = tm_year + 1

y = -1

# 判断输入的年份至今年中间有多少个闰年,每个闰年加1天

while var_y <= input_years:

if var_y % 100 == 0 and var_y % 400 == 0:

y += 1

var_y += 1

elif var_y % 4 == 0 and var_y % 100 != 0:

y += 1

var_y += 1

elif var_y % 3200 == 0 and var_y % 172800 == 0:

y += 1

var_y += 1

var_y += 1

print(f"{input_years}至{tm_year + 1}年有{y + 1}个闰年")

y = (input_years - tm_year - 1) * 365 + y

for d in range(365 - tm_y_day + a + y - 1 if leap_years else 366 - tm_y_day + a + y - 1, -1, -1):

Var_Hour = 23 - time.localtime(time.time())[3]

Var_Min = 59 - time.localtime(time.time())[4]

Var_Sec = 60 - time.localtime(time.time())[5]

for i in range(Var_Hour, 0, -1):

for j in range(Var_Min, 0, -1):

for k in range(Var_Sec, 0, -1):

print("\r距离%d年%d月%d日还剩%d天%02d小时%02d分钟%02d秒" % (input_years, input_month, input_day, d, i, j, k),

end="")

time.sleep(1)

if k == 1:

Var_Sec = 60

break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值