→Python会诚实地告诉你假期还剩下多少
from datetime import datetimes, e = ) for s in ['起始', '终止']]
x = e - s
n = datetime.now()
dts =
, s.days, '天', s.seconds // 3600, '小时', s.seconds // 60 % 60, '分钟', s.seconds % 60, '秒', round((s.days * 86400 + s.seconds) / (x.days * 86400 + x.seconds) * 100, 1), '%') for i, s in enumerate(dts)]
本来想写在一行里的,但是那玩意可读性太差,报错找不到在哪{:10_266:}
其实也不是不可以 exec 大法()
exec("from datetime import datetime\ns, e = ) for s in ['起始', '终止']]\nx = e - s\nn = datetime.now()\ndts = \n, s.days, '天', s.seconds // 3600, '小时', s.seconds // 60 % 60, '分钟', s.seconds % 60, '秒', round((s.days * 86400 + s.seconds) / (x.days * 86400 + x.seconds) * 100, 1), '%') for i, s in enumerate(dts)]")
愿大家能在寒假结束前完成寒假作业!享受难得的休闲时光,然后进入史上最短的学期。
运行示例:
= RESTART: C:/Users/Administrator/Desktop/days.py
起始日期:2026 2 4 0 0 0
终止日期:2026 3 4 0 0 0
已过 12 天 14 小时 45 分钟 34 秒 45.1 %
还剩 15 天 9 小时 14 分钟 25 秒 54.9 %
# 打算优化一下,显示一个进度条,配上 os.system('cls') 做成动态效果 果然冷清 鱼油你好!你提供的代码片段确实有些缺失,但意图很清晰:计算假期剩余时间并显示进度。下面是一个优化版本,添加了进度条和动态刷新效果。
首先,我们使用 datetime 模块处理日期,用 os.system('cls') 清屏实现动态更新(自动适配Windows和Linux/Mac)。代码会每秒更新一次,直到假期结束。
注意:运行后按 Ctrl+C 可以终止程序。
以下是完整代码:
import datetime
import os
import time
def main():
# 获取用户输入起始和终止日期
start_str = input("起始日期(格式:年 月 日 时 分 秒,例如:2026 2 4 0 0 0):")
end_str = input("终止日期(格式:年 月 日 时 分 秒,例如:2026 3 4 0 0 0):")
# 将字符串转换为datetime对象
start = datetime.datetime.strptime(start_str, "%Y %m %d %H %M %S")
end = datetime.datetime.strptime(end_str, "%Y %m %d %H %M %S")
total_duration = end - start# 假期总时长
while True:
now = datetime.datetime.now()
# 如果当前时间超过终止日期,结束循环
if now > end:
os.system('cls' if os.name == 'nt' else 'clear')
print("假期已经结束!")
break
elapsed = now - start# 已过时间
# 如果当前时间早于起始日期,假期还未开始
if elapsed.total_seconds() < 0:
os.system('cls' if os.name == 'nt' else 'clear')
print("假期还未开始!")
break
# 计算进度百分比
percentage = elapsed.total_seconds() / total_duration.total_seconds() * 100
percentage = min(percentage, 100)# 限制最大为100%
# 计算剩余时间
remaining = end - now
# 构建进度条(长度50个字符)
bar_length = 50
filled_length = int(bar_length * percentage / 100)
bar = '#' * filled_length + '-' * (bar_length - filled_length)
# 清屏(跨平台)
os.system('cls' if os.name == 'nt' else 'clear')
# 显示进度条和时间信息
print(f"假期进度: [{bar}] {percentage:.1f}%")
print(f"已过: {elapsed.days} 天 {elapsed.seconds // 3600} 小时 {elapsed.seconds // 60 % 60} 分钟 {elapsed.seconds % 60} 秒")
print(f"还剩: {remaining.days} 天 {remaining.seconds // 3600} 小时 {remaining.seconds // 60 % 60} 分钟 {remaining.seconds % 60} 秒")
print("按 Ctrl+C 退出")
# 每秒更新一次
time.sleep(1)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n程序已退出")
except Exception as e:
print(f"输入错误:{e}")
代码说明:
- 使用 strptime 解析输入日期,确保格式匹配。
- 进度条用 # 表示已完成部分,- 表示剩余部分。
- os.name 判断操作系统,Windows用 cls,其他用 clear 清屏。
- 添加了异常处理,避免输入错误或意外退出。
运行示例:
输入起始和终止日期后,屏幕会动态显示进度条和时间,类似以下效果(每秒刷新):
假期进度: [####################------------------------] 45.1%
已过: 12 天 14 小时 45 分钟 34 秒
还剩: 15 天 9 小时 14 分钟 25 秒
希望这个优化版本能帮助你更好地管理假期时间!享受休闲时光,高效完成作业哦~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 假期里少见的python贴,必须支持 import datetime
start = input('起始日期(示例2026-02-17 06:06:06,时间可以省略):')
start_date = datetime.datetime.fromisoformat(start)
end = input('终止日期(示例2026-02-18 06:06:06,时间可以省略):')
end_date = datetime.datetime.fromisoformat(end)
now = datetime.datetime.now()
past = now - start_date
future = end_date - now
duration = end_date - start_date
pastinfo = str(past).replace(':',' ').replace('.',' ').split()
print('已过{1}天{3}小时{4}分钟{5}秒,占{0:.2%}'.format(past/duration,*pastinfo))
futureinfo = str(future).replace(':',' ').replace('.',' ').split()
print('还有{1}天{3}小时{4}分钟{5}秒,占{0:.2%}'.format(future/duration,*futureinfo))
没有任何新功能的代码 smallwh 发表于 2026-2-16 16:27
假期里少见的python贴,必须支持
{:10_256:}其实是老鱼油闲的没事干回来看看
页:
[1]