🎯 本课目标
学习使用datetime模块获取和处理时间 掌握各种时间格式的显示方法 学会计算时间差和进行时间转换 制作倒计时器和计时器程序 创建智能日程提醒系统 综合应用前8课知识解决时间相关问题
⏰ 趣味引入:时间是什么?
小实验:请回答以下问题,不要看钟表!
现在大概是几点? 今天星期几? 这个月有多少天?
你发现了什么?人脑能大概知道时间,但不精确。而计算机是时间管理大师,它能精确到百万分之一秒!
时间的秘密:
计算机内部用数字表示时间 从1970年1月1日开始计时(UNIX时间戳) 每过1秒,数字就加1 全世界用统一的时间标准(UTC)
今天,让我们教计算机成为你的时间小管家!
🕰️ 第一部分:认识datetime模块
导入datetime模块
# 导入datetime模块
import datetime
print("datetime模块已就绪!")
print("现在可以处理时间了!")
获取当前时间
import datetime
# 获取当前日期和时间
now = datetime.datetime.now()
print("当前完整时间:", now)
print(f"类型:{type(now)}")
# 获取当前日期
today = datetime.date.today()
print("当前日期:", today)
# 获取当前时间
current_time = datetime.datetime.now().time()
print("当前时间:", current_time)
📅 第二部分:时间的各个部分
拆分时间的各个部分
import datetime
# 获取当前时间
now = datetime.datetime.now()
print("🔍 时间的各个部分:")
print("=" * 30)
# 拆解时间
print(f"年份:{now.year}年")
print(f"月份:{now.month}月")
print(f"日期:{now.day}日")
print(f"小时:{now.hour}时")
print(f"分钟:{now.minute}分")
print(f"秒:{now.second}秒")
print(f"微秒:{now.microsecond}微秒")
print(f"星期:星期{now.weekday() + 1}") # weekday()返回0-6,0是周一
# 判断上午/下午
if now.hour < 12:
am_pm = "上午"
elif now.hour < 18:
am_pm = "下午"
else:
am_pm = "晚上"
print(f"现在是{am_pm}")
练习1:智能问候程序
# 智能问候程序
import datetime
print("🤖 智能问候程序")
print("=" * 20)
# 获取当前时间
now = datetime.datetime.now()
hour = now.hour
minute = now.minute
# 获取用户名字
name = input("你叫什么名字?")
# 根据时间问候
if5 <= hour < 12:
greeting = "早上好"
elif12 <= hour < 14:
greeting = "中午好"
elif14 <= hour < 18:
greeting = "下午好"
elif18 <= hour < 22:
greeting = "晚上好"
else:
greeting = "夜深了"
print(f"{greeting},{name}!")
print(f"现在是{hour:02d}:{minute:02d}")
# 附加提醒
if hour < 6:
print("💤 天还没亮,再睡会儿吧!")
elif hour < 9:
print("🌅 美好的一天开始了!")
elif hour < 12:
print("📚 学习的好时光!")
elif hour < 14:
print("🍚 午饭时间到!")
elif hour < 17:
print("💪 下午继续加油!")
elif hour < 20:
print("🎮 放松一下,但别忘了作业!")
else:
print("🌙 该准备睡觉了!")
练习2:生日计算器
# 生日计算器
import datetime
print("🎂 生日计算器")
print("=" * 20)
# 获取当前日期
today = datetime.date.today()
print(f"今天是:{today}")
# 输入生日
birth_year = int(input("你的出生年份:"))
birth_month = int(input("你的出生月份:"))
birth_day = int(input("你的出生日期:"))
# 创建生日日期
birthday = datetime.date(birth_year, birth_month, birth_day)
print(f"你的生日是:{birthday}")
# 计算年龄
age = today.year - birthday.year
# 调整如果今年生日还没过
if (today.month, today.day) < (birthday.month, birthday.day):
age -= 1
print(f"你现在{age}岁")
# 计算下一个生日
next_birthday = datetime.date(today.year, birth_month, birth_day)
if next_birthday < today:
next_birthday = datetime.date(today.year + 1, birth_month, birth_day)
# 计算距离下一个生日的天数
days_to_birthday = (next_birthday - today).days
print(f"距离你的下一个生日还有{days_to_birthday}天")
# 计算是星期几
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
birthday_weekday = weekdays[next_birthday.weekday()]
print(f"你的下一个生日是{birthday_weekday}")
🎨 第三部分:格式化时间显示
时间格式化方法
import datetime
now = datetime.datetime.now()
print("🕐 时间格式化展示")
print("=" * 30)
# 方法1:strftime 格式化
print("1. 基本格式:")
print(f" 年-月-日:{now.strftime('%Y-%m-%d')}")
print(f" 时:分:秒:{now.strftime('%H:%M:%S')}")
print(f" 完整时间:{now.strftime('%Y-%m-%d %H:%M:%S')}")
print("\n2. 中文格式:")
print(f" {now.year}年{now.month}月{now.day}日")
print(f" 星期{now.weekday() + 1}")
print(f" {now.hour:02d}时{now.minute:02d}分{now.second:02d}秒")
print("\n3. 12小时制:")
hour_12 = now.hour % 12
if hour_12 == 0:
hour_12 = 12
am_pm = "上午"if now.hour < 12else"下午"
print(f" {am_pm}{hour_12}:{now.minute:02d}")
print("\n4. 其他格式:")
print(f" 简写日期:{now.strftime('%y/%m/%d')}") # 两位年份
print(f" 月份全名:{now.strftime('%B')}")
print(f" 月份简写:{now.strftime('%b')}")
print(f" 星期全名:{now.strftime('%A')}")
print(f" 星期简写:{now.strftime('%a')}")
# 格式化符号表
print("\n📋 常用格式化符号:")
format_codes = [
("%Y", "四位年份(2023)"),
("%y", "两位年份(23)"),
("%m", "月份(01-12)"),
("%B", "月份全名(January)"),
("%b", "月份简写(Jan)"),
("%d", "日期(01-31)"),
("%H", "24小时制小时(00-23)"),
("%I", "12小时制小时(01-12)"),
("%M", "分钟(00-59)"),
("%S", "秒(00-59)"),
("%p", "上午/下午(AM/PM)"),
("%A", "星期全名(Monday)"),
("%a", "星期简写(Mon)"),
("%w", "星期数字(0-6,0是周日)"),
]
for code, meaning in format_codes:
result = now.strftime(code)
print(f" {code:3} = {meaning:15} → 示例:{result}")
项目1:精美时钟
# 精美时钟程序
import datetime
import time
import os
print("🕐 精美时钟")
print("=" * 30)
print("按 Ctrl+C 停止")
try:
whileTrue:
# 清屏(不同系统命令不同)
os.system('cls'if os.name == 'nt'else'clear')
# 获取当前时间
now = datetime.datetime.now()
# 创建美观的时钟界面
print("\n" + "═" * 40)
print(" " * 15 + "🕐 数字时钟")
print("═" * 40)
# 显示日期
date_str = now.strftime("%Y年%m月%d日")
weekday_str = ["一", "二", "三", "四", "五", "六", "日"][now.weekday()]
print(f"📅 日期:{date_str} 星期{weekday_str}")
# 显示时间(大字体效果)
time_str = now.strftime("%H:%M:%S")
print("\n" + " " * 12 + "╔══════════╗")
print(" " * 12 + f"║ {time_str} ║")
print(" " * 12 + "╚══════════╝")
# 显示12小时制
hour_12 = now.hour % 12
if hour_12 == 0:
hour_12 = 12
am_pm = "上午"if now.hour < 12else"下午"
print(f"⏰ 12小时制:{am_pm}{hour_12:02d}:{now.minute:02d}:{now.second:02d}")
# 显示秒的小数部分
print(f"⏱️ 毫秒:{now.microsecond // 1000:03d}")
# 进度条显示一天进度
total_seconds = now.hour * 3600 + now.minute * 60 + now.second
day_progress = total_seconds / 86400
bar_length = 30
filled = int(bar_length * day_progress)
bar = "█" * filled + "░" * (bar_length - filled)
print(f"📊 今天进度:[{bar}] {day_progress*100:.1f}%")
# 问候语
if now.hour < 6:
greeting = "🌙 夜深了,早点休息"
elif now.hour < 12:
greeting = "🌅 早上好,新的一天开始了!"
elif now.hour < 14:
greeting = "🍚 中午好,午饭时间到!"
elif now.hour < 18:
greeting = "☀️ 下午好,继续加油!"
elif now.hour < 22:
greeting = "🌆 晚上好,放松一下!"
else:
greeting = "🌃 该准备睡觉了!"
print(f"\n💬 {greeting}")
print("═" * 40)
# 等待1秒
time.sleep(1)
except KeyboardInterrupt:
print("\n⏹️ 时钟已停止")
⏱️ 第四部分:时间计算和比较
时间差计算
import datetime
print("⏱️ 时间差计算")
print("=" * 20)
# 创建两个时间
time1 = datetime.datetime(2023, 10, 1, 8, 30, 0) # 10月1日 8:30
time2 = datetime.datetime(2023, 10, 1, 16, 45, 30) # 10月1日 16:45:30
print(f"时间1:{time1}")
print(f"时间2:{time2}")
# 计算时间差
time_diff = time2 - time1
print(f"\n时间差:{time_diff}")
print(f"总秒数:{time_diff.total_seconds()}秒")
print(f"总分钟数:{time_diff.total_seconds() / 60:.1f}分钟")
print(f"总小时数:{time_diff.total_seconds() / 3600:.2f}小时")
# 获取时间差的各个部分
print("\n🔍 详细时间差:")
print(f"天数:{time_diff.days}天")
print(f"秒数:{time_diff.seconds}秒")
print(f"微秒:{time_diff.microseconds}微秒")
# 计算时分秒
total_seconds = time_diff.total_seconds()
hours = int(total_seconds // 3600)
minutes = int((total_seconds % 3600) // 60)
seconds = int(total_seconds % 60)
print(f"分解为:{hours}小时{minutes}分钟{seconds}秒")
项目2:倒计时器
# 倒计时器
import datetime
import time
print("⏳ 倒计时器")
print("=" * 20)
# 选择倒计时类型
print("请选择倒计时类型:")
print("1. 特定日期倒计时(如生日、节日)")
print("2. 自定义时间倒计时(如考试、比赛)")
print("3. 简单时间倒计时(小时、分钟、秒)")
choice = input("\n你的选择(1-3):")
if choice == "1":
# 特定日期倒计时
print("\n🎯 特定日期倒计时")
event_name = input("事件名称(如:生日、春节):")
year = int(input("年份:"))
month = int(input("月份:"))
day = int(input("日期:"))
target_date = datetime.datetime(year, month, day)
elif choice == "2":
# 自定义时间倒计时
print("\n🎯 自定义时间倒计时")
event_name = input("事件名称:")
print("\n请输入目标时间:")
year = int(input("年份:"))
month = int(input("月份:"))
day = int(input("日期:"))
hour = int(input("小时(0-23):"))
minute = int(input("分钟(0-59):"))
target_date = datetime.datetime(year, month, day, hour, minute)
elif choice == "3":
# 简单倒计时
print("\n🎯 简单倒计时")
event_name = input("事件名称:")
hours = int(input("小时:"))
minutes = int(input("分钟:"))
seconds = int(input("秒:"))
# 计算目标时间(当前时间 + 倒计时时间)
now = datetime.datetime.now()
target_date = now + datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds)
else:
print("❌ 无效选择,使用默认设置")
event_name = "默认倒计时"
target_date = datetime.datetime.now() + datetime.timedelta(hours=1)
print(f"\n⏰ 倒计时开始:{event_name}")
print(f"目标时间:{target_date.strftime('%Y-%m-%d %H:%M:%S')}")
print("\n按 Ctrl+C 停止倒计时")
try:
whileTrue:
# 获取当前时间
now = datetime.datetime.now()
# 计算剩余时间
if now < target_date:
time_left = target_date - now
# 计算各个部分
days = time_left.days
hours = time_left.seconds // 3600
minutes = (time_left.seconds % 3600) // 60
seconds = time_left.seconds % 60
# 显示倒计时
print(f"\r⏳ 剩余时间:{days}天 {hours:02d}:{minutes:02d}:{seconds:02d}", end="")
# 等待1秒
time.sleep(1)
else:
print(f"\n\n🎉 时间到!{event_name}!")
print("🔔 倒计时结束!")
break
except KeyboardInterrupt:
print(f"\n\n⏹️ 倒计时已停止")
# 显示统计信息
now = datetime.datetime.now()
if now < target_date:
time_passed = datetime.datetime.now() - (target_date - (target_date - now))
print(f"⏱️ 本次倒计时进行了:{time_passed}")
else:
time_passed = target_date - (target_date - (datetime.datetime.now() - target_date))
print(f"⏱️ 倒计时准时结束")
项目3:学习计时器
# 学习计时器
import datetime
import time
print("📚 学习计时器")
print("=" * 20)
print("帮助你记录学习时间,科学安排休息")
# 学习任务
task = input("你要学习什么科目?")
study_time = int(input("计划学习多少分钟?"))
break_time = int(input("休息多少分钟?"))
print(f"\n⏰ 学习计划:")
print(f"科目:{task}")
print(f"学习:{study_time}分钟")
print(f"休息:{break_time}分钟")
print("=" * 20)
cycles = 0
total_study_time = 0
total_break_time = 0
try:
whileTrue:
cycles += 1
# 学习阶段
print(f"\n🎯 第{cycles}轮学习开始!")
print(f"科目:{task}")
study_end = datetime.datetime.now() + datetime.timedelta(minutes=study_time)
while datetime.datetime.now() < study_end:
time_left = study_end - datetime.datetime.now()
minutes = int(time_left.total_seconds() // 60)
seconds = int(time_left.total_seconds() % 60)
print(f"\r📖 学习剩余:{minutes:02d}:{seconds:02d}", end="")
time.sleep(1)
total_study_time += study_time
print(f"\n\n✅ 学习完成!本轮学习了{study_time}分钟")
# 休息阶段
print(f"\n☕ 开始休息{break_time}分钟")
break_end = datetime.datetime.now() + datetime.timedelta(minutes=break_time)
while datetime.datetime.now() < break_end:
time_left = break_end - datetime.datetime.now()
minutes = int(time_left.total_seconds() // 60)
seconds = int(time_left.total_seconds() % 60)
print(f"\r🌴 休息剩余:{minutes:02d}:{seconds:02d}", end="")
time.sleep(1)
total_break_time += break_time
print(f"\n\n⏰ 休息结束!")
# 询问是否继续
print(f"\n📊 学习统计:")
print(f" 已完成{cycles}轮学习")
print(f" 总学习时间:{total_study_time}分钟")
print(f" 总休息时间:{total_break_time}分钟")
continue_study = input("\n是否继续下一轮学习?(是/否)")
if continue_study.lower() != "是":
break
except KeyboardInterrupt:
print(f"\n\n⏹️ 学习计时已停止")
# 最终统计
print(f"\n{'='*30}")
print("📊 最终学习报告")
print("="*30)
print(f"学习科目:{task}")
print(f"完成轮数:{cycles}轮")
print(f"总学习时间:{total_study_time}分钟")
print(f"总休息时间:{total_break_time}分钟")
print(f"总时长:{total_study_time + total_break_time}分钟")
# 建议
if cycles >= 3:
print("\n💡 建议:你已经学习了很长时间,应该好好休息!")
elif total_study_time >= 60:
print("\n💡 建议:学习时间超过1小时,可以安排一次长休息!")
else:
print("\n💡 建议:保持良好的学习节奏!")
📅 第五部分:日程管理和提醒
项目4:智能课程表
# 智能课程表
import datetime
print("📅 智能课程表")
print("=" * 20)
# 定义课程表
schedule = {
0: ["语文", "数学", "英语", "体育", "美术"], # 周一
1: ["数学", "语文", "科学", "音乐", "自习"], # 周二
2: ["英语", "数学", "社会", "体育", "班会"], # 周三
3: ["语文", "英语", "科学", "美术", "自习"], # 周四
4: ["数学", "语文", "英语", "音乐", "大扫除"], # 周五
5: ["周末", "周末", "周末", "周末", "周末"], # 周六
6: ["周末", "周末", "周末", "周末", "周末"], # 周日
}
# 课程时间
class_times = [
"08:00-08:40",
"08:50-09:30",
"10:00-10:40",
"10:50-11:30",
"14:00-14:40"
]
# 获取当前时间
now = datetime.datetime.now()
weekday = now.weekday() # 0=周一, 6=周日
current_time = now.time()
# 显示今日课表
print(f"今天是{now.strftime('%Y年%m月%d日')}")
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
print(f"📅 {weekdays[weekday]} 课程表")
print("\n" + "="*30)
for i, (course, time_slot) inenumerate(zip(schedule[weekday], class_times), 1):
print(f"第{i}节 {time_slot:12}{course}")
print("="*30)
# 判断当前是什么课
if weekday >= 5: # 周末
print("\n🎉 今天是周末!好好休息!")
else:
# 检查当前时间对应的课程
current_class = None
class_index = -1
# 定义课程时间段
class_periods = [
(datetime.time(8, 0), datetime.time(8, 40)), # 第1节
(datetime.time(8, 50), datetime.time(9, 30)), # 第2节
(datetime.time(10, 0), datetime.time(10, 40)), # 第3节
(datetime.time(10, 50), datetime.time(11, 30)),# 第4节
(datetime.time(14, 0), datetime.time(14, 40)), # 第5节
]
for i, (start, end) inenumerate(class_periods):
if start <= current_time <= end:
current_class = schedule[weekday][i]
class_index = i
break
if current_class:
print(f"\n⏰ 现在正在上:第{class_index+1}节 {current_class}")
print(f" 时间:{class_times[class_index]}")
# 计算距离下课还有多久
end_time = class_periods[class_index][1]
time_left = datetime.datetime.combine(datetime.date.today(), end_time) - now
minutes_left = int(time_left.total_seconds() // 60)
seconds_left = int(time_left.total_seconds() % 60)
if minutes_left > 0:
print(f" ⏳ 距离下课还有:{minutes_left}分钟{seconds_left}秒")
else:
print(f" ⏰ 快下课了!")
else:
# 判断是课前还是课后
if current_time < datetime.time(8, 0):
print(f"\n🌅 还没开始上课,好好准备!")
elif current_time > datetime.time(14, 40):
print(f"\n🎉 今天的课程已全部结束!")
else:
# 判断是课间休息
print(f"\n☕ 现在是课间休息时间")
# 显示明日课表
print(f"\n📅 明日({weekdays[(weekday + 1) % 7]})课程:")
for i, (course, time_slot) inenumerate(zip(schedule[(weekday + 1) % 7], class_times), 1):
print(f" 第{i}节 {time_slot:12}{course}")
项目5:纪念日提醒器
# 纪念日提醒器
import datetime
print("🎈 纪念日提醒器")
print("=" * 20)
# 重要纪念日
important_dates = {
"春节": datetime.date(2023, 1, 22),
"元宵节": datetime.date(2023, 2, 5),
"清明节": datetime.date(2023, 4, 5),
"劳动节": datetime.date(2023, 5, 1),
"儿童节": datetime.date(2023, 6, 1),
"端午节": datetime.date(2023, 6, 22),
"中秋节": datetime.date(2023, 9, 29),
"国庆节": datetime.date(2023, 10, 1),
"元旦": datetime.date(2024, 1, 1),
}
# 添加个人纪念日
print("是否添加个人纪念日?")
add_personal = input("(输入'是'添加,其他键跳过):")
if add_personal.lower() == "是":
num_personal = int(input("要添加几个纪念日?"))
for i inrange(num_personal):
print(f"\n添加第{i+1}个纪念日:")
name = input("纪念日名称:")
year = int(input("年份:"))
month = int(input("月份:"))
day = int(input("日期:"))
important_dates[name] = datetime.date(year, month, day)
# 获取当前日期
today = datetime.date.today()
print(f"\n今天是:{today.strftime('%Y年%m月%d日')}")
# 检查纪念日
print("\n📅 即将到来的纪念日:")
print("="*40)
upcoming_dates = []
for name, date in important_dates.items():
# 计算距离纪念日的天数
days_diff = (date - today).days
if -7 <= days_diff <= 30: # 过去7天内到未来30天内
upcoming_dates.append((name, date, days_diff))
# 按天数排序
upcoming_dates.sort(key=lambda x: x[2])
ifnot upcoming_dates:
print("近期没有重要纪念日")
else:
for name, date, days_diff in upcoming_dates:
weekday = ["一", "二", "三", "四", "五", "六", "日"][date.weekday()]
if days_diff < 0:
print(f"📅 {name}:{date.strftime('%m月%d日')} 星期{weekday}")
print(f" 已经过去{abs(days_diff)}天了")
elif days_diff == 0:
print(f"🎉 {name}:今天!")
print(f" {date.strftime('%m月%d日')} 星期{weekday}")
elif days_diff == 1:
print(f"🎯 {name}:明天!")
print(f" {date.strftime('%m月%d日')} 星期{weekday}")
elif days_diff <= 7:
print(f"⏰ {name}:{days_diff}天后")
print(f" {date.strftime('%m月%d日')} 星期{weekday}")
else:
print(f"📅 {name}:{days_diff}天后")
print(f" {date.strftime('%m月%d日')} 星期{weekday}")
print("-"*30)
# 最近的一个纪念日
if upcoming_dates and upcoming_dates[0][2] > 0:
next_name, next_date, next_days = upcoming_dates[0]
print(f"\n🎯 下一个纪念日是:{next_name}")
print(f"⏰ 距离还有:{next_days}天")
print(f"📅 日期:{next_date.strftime('%Y年%m月%d日')}")
# 星期几
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
print(f"📅 星期:{weekdays[next_date.weekday()]}")
🎮 第六部分:时间相关游戏
游戏1:时间猜谜游戏
# 时间猜谜游戏
import datetime
import random
print("⏰ 时间猜谜游戏")
print("=" * 20)
print("测试你对时间的理解!")
score = 0
questions = 5
for q inrange(1, questions + 1):
print(f"\n第{q}题:")
# 随机生成一个时间
random_hour = random.randint(0, 23)
random_minute = random.randint(0, 59)
random_time = datetime.time(random_hour, random_minute)
print(f"时间:{random_hour:02d}:{random_minute:02d}")
# 问题类型
question_type = random.choice([
"am_pm", # 判断上午下午
"quarter", # 判断刻钟
"to_half", # 差几分钟到整点/半点
"angle"# 时钟角度(简化)
])
if question_type == "am_pm":
# 判断上午下午
print("这个时间是上午还是下午?")
print("1. 上午")
print("2. 下午")
correct = 1if random_hour < 12else2
try:
answer = int(input("你的选择(1/2):"))
if answer == correct:
print("✅ 正确!")
score += 1
else:
print(f"❌ 错误!{random_hour:02d}:{random_minute:02d}是{'上午'if random_hour < 12else'下午'}")
except:
print("❌ 请输入1或2!")
elif question_type == "quarter":
# 判断刻钟
if random_minute < 15:
quarter = "一刻"
elif random_minute < 30:
quarter = "两刻"
elif random_minute < 45:
quarter = "三刻"
else:
quarter = "四刻"
print(f"这个时间是{quarter}吗?(是/否)")
# 随机决定是否正确
is_correct = random.choice([True, False])
ifnot is_correct:
# 生成错误的quarter
all_quarters = ["一刻", "两刻", "三刻", "四刻"]
all_quarters.remove(quarter)
quarter = random.choice(all_quarters)
print(f"问题:现在是{quarter}吗?")
answer = input("你的回答(是/否):")
correct_answer = "是"if is_correct else"否"
if answer == correct_answer:
print("✅ 正确!")
score += 1
else:
actual_quarter = ""
if random_minute < 15:
actual_quarter = "一刻"
elif random_minute < 30:
actual_quarter = "两刻"
elif random_minute < 45:
actual_quarter = "三刻"
else:
actual_quarter = "四刻"
print(f"❌ 错误!现在是{actual_quarter}")
elif question_type == "to_half":
# 差几分钟到整点/半点
if random_minute <= 30:
target = 30
target_name = "半点"
else:
target = 60
target_name = "整点"
minutes_to = target - random_minute
print(f"差几分钟到{target_name}?")
try:
answer = int(input("你的答案:"))
if answer == minutes_to:
print("✅ 正确!")
score += 1
else:
print(f"❌ 错误!还差{minutes_to}分钟")
except:
print("❌ 请输入数字!")
else: # angle
# 简化版时钟角度
hour_angle = (random_hour % 12) * 30 + random_minute * 0.5
minute_angle = random_minute * 6
angle = abs(hour_angle - minute_angle)
angle = min(angle, 360 - angle)
# 给出范围
if angle < 30:
range_str = "小于30度"
elif angle < 60:
range_str = "30-60度"
elif angle < 90:
range_str = "60-90度"
else:
range_str = "大于90度"
print(f"时针和分针的夹角大概是多少?")
print(f"1. 小于30度")
print(f"2. 30-60度")
print(f"3. 60-90度")
print(f"4. 大于90度")
correct_choice = 1if angle < 30else2if angle < 60else3if angle < 90else4
try:
answer = int(input("你的选择(1-4):"))
if answer == correct_choice:
print("✅ 正确!")
score += 1
else:
print(f"❌ 错误!实际角度是{angle:.1f}度")
except:
print("❌ 请输入1-4的数字!")
# 显示成绩
print(f"\n{'='*30}")
print(f"📊 答题结果:{score}/{questions}")
percentage = (score / questions) * 100
print(f"正确率:{percentage:.1f}%")
if percentage == 100:
print("🎉 太棒了!你是时间大师!")
elif percentage >= 80:
print("👍 优秀!继续加油!")
elif percentage >= 60:
print("😊 不错!继续努力!")
else:
print("💪 加油!多练习会更好!")
🔧 常见问题解答
Q1:如何获取指定日期是星期几?
import datetime
# 创建指定日期
date = datetime.date(2023, 10, 1)
# 方法1:使用weekday(),返回0-6,0是周一
weekday_num = date.weekday() # 6表示周日
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
print(f"方法1:{weekdays[weekday_num]}")
# 方法2:使用strftime
weekday_str = date.strftime("%A") # 英文全称
print(f"方法2:{weekday_str}")
# 方法3:自定义格式
weekday_cn = date.strftime("%w") # 0-6,0是周日
weekday_map = {"0": "日", "1": "一", "2": "二", "3": "三", "4": "四", "5": "五", "6": "六"}
print(f"方法3:星期{weekday_map[weekday_cn]}")
Q2:如何计算两个日期间的天数?
import datetime
# 两个日期
date1 = datetime.date(2023, 1, 1)
date2 = datetime.date(2023, 12, 31)
# 计算天数差
days_diff = (date2 - date1).days
print(f"从{date1}到{date2}有{days_diff}天")
# 包括今天
days_diff_inclusive = days_diff + 1
print(f"包括首尾共有{days_diff_inclusive}天")
Q3:如何在时间计算中处理闰年?
import datetime
import calendar
year = 2024
# 判断是否为闰年
is_leap = calendar.isleap(year)
print(f"{year}年是{'闰年'if is_leap else'平年'}")
# 获取一年的天数
days_in_year = 366if is_leap else365
print(f"{year}年有{days_in_year}天")
# 获取二月的天数
feb_days = calendar.monthrange(year, 2)[1]
print(f"{year}年2月有{feb_days}天")
📅 下节课预告
第10课:阶段项目-个性化名片生成器
下节课你将综合应用前9课所有知识:
制作个人信息系统 添加时间戳和随机ID 设计美观的输出格式 实现多种导出方式 添加个性化定制功能
准备任务:
收集你的个人信息 想想你希望名片有什么特色 准备一些创意设计想法 复习前9课的知识点
💬 给家长的话
亲爱的家长:
今天孩子学习了时间处理的相关知识,这是编程中非常实用和重要的部分。
孩子今天学会了:
✅ 使用datetime模块处理时间 ✅ 格式化显示各种时间格式 ✅ 进行时间差计算 ✅ 制作倒计时器和计时器 ✅ 创建日程管理系统
时间管理的教育价值:
您可以这样做:
实际应用:
- 家庭日程
:用孩子的程序管理家庭日程 - 学习计时
:帮助孩子合理安排学习时间 - 纪念日
:记录家庭重要纪念日 - 时间游戏
:玩时间猜谜游戏
教育引导:
培养孩子的时间管理意识 讨论时间的重要性 学习如何合理规划时间 理解计算机如何处理时间
温馨提示:
时间相关程序很实用,鼓励孩子实际使用 帮助孩子将程序应用到学习中 分享时间管理经验和技巧 讨论不同文化对时间的理解
🏆 今日成就
完成了今天的学习,你:
⏰ 掌握了时间处理的核心技能 📅 创建了智能日程管理系统 ⏱️ 实现了倒计时和计时功能 🎮 开发了时间相关游戏 🔧 解决了时间计算的各种问题
挑战任务:
为家人制作一个生日提醒程序 创建一个学习时间统计工具 设计一个世界时钟程序 实现一个番茄工作法计时器
🌟 编程心法
时间是程序的血脉
记录每一刻的变化
计算每一次的间隔
格式化每一次的展示
从获取到计算
从显示到应用
时间让程序有记忆
时间让功能有节奏
掌握时间
就掌握了程序的脉搏
记住:时间是编程中最重要的维度之一。今天你学到的不仅是技术,更是管理时间和生活的能力!
第9课结束。你现在已经能成为时间的主人了!
实践任务:1. 制作一个个人日程提醒程序2. 为学习创建番茄钟计时器3. 设计一个家庭纪念日历4. 实现一个精美数字时钟
下节课,我们将综合所有知识,制作完整的个人名片系统!
第10课见!🎉
夜雨聆风