青少年 Python 入门 | 每天打开看一看——「暑假倒计时日历」+ 每日一句
青少年 Python 入门 | 每天打开看一看——「暑假倒计时日历」 每日一句适合人群Python 入门建议 4~8 年级掌握datetime/list/for后项目定位单课时60 分钟成品是一个每天都能用的倒计时工具核心大概念时间是一种数据类型——日期可以加减、可以比较、可以格式化和数字一样是一等公民目录为什么做倒计时版本一算天数——3 行代码出结果版本二进度条——把还剩多少天画出来版本三文字日历——这个月还剩几天版本四每日一句 完整工具完整代码教学指南1. 为什么做倒计时暑假有一个残酷的事实放假第一天觉得两个月很长。刷了半个月手机后突然发现——只剩 30 天了。倒计时的作用不是制造焦虑而是让时间变得可见。当学生每天打开程序看到还剩 45 天和一条励志语它是一种温柔的提醒。编程层面这个项目引入了一个重要的认知升级时间不是只能看的——代码可以算它、比它、格式化它。datetime模块让日期变得和数字一样可操作。2. 版本一算天数——3 行代码出结果fromdatetimeimportdate summer_enddate(2026,8,31)# 暑假结束日期假设 9 月 1 日开学todaydate.today()# 今天left(summer_end-today).days# 两个日期相减得到的是 timedelta 对象print(今天str(today))print(暑假结束str(summer_end))print(还剩 str(left) 天)今天2026-06-20 暑假结束2026-08-31 还剩 72 天三行核心代码已经能跑了。但学生看到的是裸数字——72 天没什么感觉。接下来我们把它变成直观的视觉。关键概念date.today()返回今天的日期。两个日期相减得到一个timedelta对象.days取出天数。日期和数字一样可以做运算——这就是时间是数据类型的含义。3. 版本二进度条——把还剩多少天画出来fromdatetimeimportdate summer_startdate(2026,6,20)# 暑假开始summer_enddate(2026,8,31)# 暑假结束todaydate.today()total_days(summer_end-summer_start).days# 暑假总天数passed_days(today-summer_start).days# 已经过去的天数left_days(summer_end-today).days# 剩余天数# 计算百分比percent_passedpassed_days/total_days*100percent_leftleft_days/total_days*100# 画进度条总长 30 格bar_width30passed_barint(bar_width*passed_days/total_days)left_barbar_width-passed_bar bar[*passed_bar.*left_bar]print()print( ----------------------------------------)print( | 暑 假 倒 计 时 |)print( ----------------------------------------)print()print( 开始str(summer_start) 结束str(summer_end))print()print( bar)print()print( 已过去str(passed_days) 天 (str(round(percent_passed,1))%))print( 剩余str(left_days) 天 (str(round(percent_left,1))%))print()效果---------------------------------------- | 暑 假 倒 计 时 | ---------------------------------------- 开始2026-06-20 结束2026-08-31 [.............................] 已过去0 天 (0.0%) 剩余72 天 (100.0%)教学点 * passed_bar是字符串乘法——一个等号重复 N 次。这是 Python 里最简单也最常用的可视化手段。没有图形界面也能画图。4. 版本三文字日历——这个月还剩几天倒计时告诉你还有多少天日历告诉你每一天的位置。importcalendarfromdatetimeimportdatedefprint_month_calendar(year,month,today):打印这个月的文字日历标注今天和暑假结束日print()print( str(year) 年 str(month) 月)print( 一 二 三 四 五 六 日)# 获取这个月的日历矩阵calcalendar.monthcalendar(year,month)forweekincal:line fordayinweek:ifday0:lineline # 这个月没有这天elifdaytoday.dayandmonthtoday.month:lineline [str(day).zfill(2)]# 今天是 [20]else:lineline str(day).zfill(2) print(line)print()# 使用print_month_calendar(2026,6,date.today())print_month_calendar(2026,7,date.today())print_month_calendar(2026,8,date.today())效果2026 年 6 月 一 二 三 四 五 六 日 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 [20] 21 22 23 24 25 26 27 28 29 30calendar.monthcalendar()返回一个嵌套列表——每一行是一个星期每个元素是一天的日期0 表示不属于这个月。这是 Python 标准库自带的不需要安装任何东西。学生看到[20]被方括号括起来会有一种我的位置被标记了的感觉。这就是数据可视化最基础的形态——在正确的位置放正确的符号。5. 版本四每日一句 完整工具现在把所有功能整合起来倒计时进度条 日历 随机励志语再加上每日心情记录importrandomfromdatetimeimportdate# 励志语库quotes[今天翻的书就是明天数的钱。——不是是知识的重量。,暑假不学习开学徒伤悲。,每天进步一点点暑假结束你就是不一样的自己。,别人在刷手机你在刷题——差距就是这么拉开的。,每一个你羡慕的学霸暑假都在偷偷努力。,玩可以但别忘了今天的任务。,自律给我自由。——这句话是真的。,暑假不是用来荒废的是用来弯道超车的。,]defdaily_checkin():每日签到 心情记录print()print( ----- 今日打卡 -----)moods{1:[开心],2:[一般],3:[疲惫],4:[充实]}print( 今天的心情1.开心 2.一般 3.疲惫 4.充实)mood_choiceinput( )moodmoods.get(mood_choice,[未记录])noteinput( 今天做了什么一句话)# 追加到心情日记文件today_strstr(date.today())withopen(暑假心情日记.txt,a,encodingutf-8)asf:f.write(today_str mood note\n)print( 已记录)defshow_mood_history():显示历史心情print()print( ----- 心情日记 -----)try:withopen(暑假心情日记.txt,r,encodingutf-8)asf:linesf.readlines()iflen(lines)0:print( 还没有记录。)else:forlineinlines[-10:]:# 最近 10 条print( line.rstrip())print()print( 显示最近 str(min(10,len(lines))) 条)exceptFileNotFoundError:print( 还没有记录。)6. 完整代码点击展开完整代码可直接运行 暑假倒计时日历 每日一句 每天打开看看暑假还剩多少天 importcalendarimportrandomfromdatetimeimportdate# 配置 SUMMER_STARTdate(2026,6,20)# 你的暑假开始日SUMMER_ENDdate(2026,8,31)# 你的暑假结束日quotes[今天翻的书就是明天知识的重量。,暑假不学习开学徒伤悲。,每天进步一点点暑假结束你会感谢自己。,别人刷手机你刷题——差距这么来的。,每一个学霸的暑假都藏着悄悄的努力。,玩可以别忘了今天的任务。,自律给我自由。,暑假不是用来荒废的是用来弯道超车的。,种一棵树最好的时间是十年前其次是今天。,你今天的努力是明天选择的权利。,]# 倒计时视图 defshow_countdown():todaydate.today()total(SUMMER_END-SUMMER_START).days passed(today-SUMMER_START).days left(SUMMER_END-today).daysifleft0:print()print( 暑假已经结束新学期加油)returnbar_width30filledint(bar_width*passed/total)iftotal0else0emptybar_width-fillediffilled0:bar[*(filled-1).*empty]else:bar[.*(bar_width-1)]print()print( ----------------------------------------)print( | 暑 假 倒 计 时 |)print( ----------------------------------------)print()print( bar)print()print( 暑假str(SUMMER_START) ~ str(SUMMER_END))print( 已过str(passed) 天 | 剩余str(left) 天)print( 进度str(round(passed/total*100,1))% 已完成)print()# 一句励志语print( [每日一句])print( random.choice(quotes))print()# 日历视图 defshow_calendars():todaydate.today()# 显示 6/7/8 三个月的日历formin[6,7,8]:print()print( str(2026) 年 str(m) 月)print( 一 二 三 四 五 六 日)calcalendar.monthcalendar(2026,m)forweekincal:line fordayinweek:ifday0:lineline elifdaytoday.dayandmtoday.month:# 今天用方括号标记lineline [str(day).zfill(2)]elif(m6anddaySUMMER_START.day)or\(m8anddaySUMMER_END.day):# 不在暑假范围内的日期用 · 标记lineline · else:lineline str(day).zfill(2) print(line)print()# 心情打卡 defdaily_checkin():print()print( ----- 今日打卡 -----)print( 心情1.开心 2.一般 3.疲惫 4.充实)mood_map{1:[开心],2:[一般],3:[疲惫],4:[充实]}moodmood_map.get(input( ),[未记录])noteinput( 今天做了什么一句话)today_strstr(date.today())withopen(暑假心情日记.txt,a,encodingutf-8)asf:f.write(today_str mood note\n)print( 已记录)defshow_mood_history():print()print( ----- 心情日记 -----)try:withopen(暑假心情日记.txt,r,encodingutf-8)asf:linesf.readlines()iflen(lines)0:print( 还没有记录。)returnstartmax(0,len(lines)-10)foriinrange(start,len(lines)):print( lines[i].rstrip())print()print( 显示最近 str(len(lines)-start) 条)exceptFileNotFoundError:print( 还没有记录。从今天开始打卡吧)# 主菜单 defmain():print()print( ----------------------------------------)print( | 暑 假 倒 计 时 日 历 |)print( | Summer Countdown |)print( ----------------------------------------)whileTrue:print()print( 1. 查看倒计时)print( 2. 查看暑假日历)print( 3. 每日心情打卡)print( 4. 查看心情日记)print( 0. 退出)print()choiceinput( 请选择)ifchoice0:print()print( 明天再来暑假不等人珍惜每一天。)breakelifchoice1:show_countdown()elifchoice2:show_calendars()elifchoice3:daily_checkin()elifchoice4:show_mood_history()else:print( 输入有误~)main()7. 教学指南分层教学路径[全部学生] 版本一3 行 date 运算 (8 min) ↓ [大部分学生] 版本二进度条 字符串乘法 百分比 (15 min) ↓ [进阶学生] 版本三日历 calendar.monthcalendar (15 min) ↓ [挑战学生] 版本四心情打卡 文件读写整合 (20 min)课堂节奏60 分钟时间内容形式0~3 min运行完整版展示倒计时 日历演示3~10 min版本一date.today() 日期减法学生跟打10~25 min版本二进度条——字符串乘法*n讲解 跟打25~40 min版本三日历——monthcalendar 方括号标记今天讲解 学生独立40~55 min版本四每日一句 心情记录学生独立55~60 min互相展示 “明天开始真的打卡”分享核心概念强化概念在项目中的体现一句话日期是数据类型date.today()“日期和数字一样——能存进变量、能做减法、能比较”timedelta.days“两个日期相减得到的是一个’时间差’对象”字符串乘法 * 30“一个字符乘以 N 次 重复 N 次最简单的画图方式”嵌套列表monthcalendar“日历 列表的列表。外层是周内层是天”文件追加open(..., a)a模式不清空文件每次追加一行常见错误与引导学生常犯的错引导方式日期减法忘记.dayssummer_end - today返回的是timedelta(72)不是72。加.days才能拿到数字进度条全是.或全是“查一下passed和total的值——可能是日期设定的问题或者整数除法5/10 0。用5.0/10或先乘后除”monthcalendar返回的0导致打印出错“0表示’这天不属于这个月’用if day 0跳过即可”zfill(2)写在不对的地方“zfill是字符串的方法str(5).zfill(2)正确5.zfill(2)错误”文件模式w和a搞混“w 每次覆盖重写a 追加在末尾。心情日记用a否则每天覆盖前一天的”课外延伸让学生把程序设置成开机自启动Windows 的启动文件夹放一个快捷方式。每天打开电脑第一眼就看到倒计时。这在技术上是简单的创建一个.bat文件但带来的仪式感是巨大的。Python 3.6 直接运行 | 无需第三方库 |datetime和calendar都是标准库标签#青少年编程#Python入门#倒计时#日历#datetime#少儿编程#教培#暑假

相关新闻

音视频合成免费,2026音视频合成工作流,5款选型指南

音视频合成免费,2026音视频合成工作流,5款选型指南

音视频合成免费方案为什么总是卡在「对齐」这一步做口播、带货、课程拆条的人,几乎都绕不开一个问题:音频和视频怎么自动对齐。很多人第一反应是搜「音视频合成免费」,想先找个不花钱的工具把声音和画面合在一起,结果发现免费方案…

2026/7/6 4:09:21阅读更多 →
数据是抽象的,尤其是海量数据,

数据是抽象的,尤其是海量数据,

人的大脑很难直接对大量数据进行分析并获得印象,然而从另一个角度看,数据也可以异常美丽,人们设计了很多工具,让枯燥的数据图形化,本文介绍了50个数据图形化工具,它们以令人难以置信的方式让我们看到了数据…

2026/7/6 4:09:21阅读更多 →
技术创业者要明白用户和市场永远在迭代,总还有机会!

技术创业者要明白用户和市场永远在迭代,总还有机会!

写给技术创业的程序员:别死磕热门赛道,行业永续,用户与市场永远在迭代 前言 很多程序员走上创业这条路,最先陷入的误区就是跟风:什么火做什么,AI火爆就扎堆大模型应用、短视频红利就全部扑向剪辑工具、电商…

2026/7/6 4:04:21阅读更多 →
从零构建AI账号自动化管理系统:架构设计与工程实践

从零构建AI账号自动化管理系统:架构设计与工程实践

1. 项目概述:为什么我们需要一个完整的AI账号自动化方案? 最近在折腾各种AI大模型服务时,我遇到了一个非常现实且棘手的问题:账号管理。无论是为了测试不同模型的API性能、进行多账号的负载压测,还是单纯为了规避某些服…

2026/7/6 8:54:49阅读更多 →
基于Docker与设备指纹伪装实现多AI编程助手账号自动化管理

基于Docker与设备指纹伪装实现多AI编程助手账号自动化管理

1. 项目概述:当AI编程助手成为生产力标配 如果你和我一样,每天要和多个AI编程助手打交道——比如同时用着A平台的Copilot、B平台的Claude Code、还有C平台的内部测试版——那你一定深有体会:账号切换的繁琐、额度管理的混乱,以及最…

2026/7/6 8:54:49阅读更多 →
2026年,市面上口碑好的老山檀香源头工厂究竟哪家才是首选?

2026年,市面上口碑好的老山檀香源头工厂究竟哪家才是首选?

在香文化盛行的当下,老山檀香凭借其独特的香气和深厚的文化底蕴,成为众多香友、文玩玩家、礼佛与收藏爱好者的心头好。然而,老山檀香市场鱼龙混杂,要选到优质的老山檀香产品并非易事。今天,我们就来深入探讨一下2026年…

2026/7/6 8:54:49阅读更多 →
从零构建高可用加密即时通讯系统:WebSocket网关与端到端加密实践

从零构建高可用加密即时通讯系统:WebSocket网关与端到端加密实践

1. 项目概述:从零构建一个能抗能打的通讯系统最近几年,无论是企业内部协作,还是各类社交、游戏应用,对即时通讯(IM)的需求都在爆炸式增长。用户不再满足于简单的文字收发,对消息的实时性、可靠性…

2026/7/6 8:54:49阅读更多 →
AI Agent智能体:从核心架构到实战开发的完整指南

AI Agent智能体:从核心架构到实战开发的完整指南

1. 项目概述:从工具到智能体的范式跃迁最近和不少同行、朋友聊天,发现一个挺有意思的现象:大家嘴上都在聊AI Agent,但细问下来,很多人对它的理解还停留在“一个更聪明的聊天机器人”或者“一个能自动执行任务的脚本”层…

2026/7/6 8:54:49阅读更多 →
防火玻璃到底是不是安全玻璃(一)

防火玻璃到底是不是安全玻璃(一)

防火玻璃到底是不是安全玻璃(一) ——两个完全相反的正确答案 防火玻璃是不是安全玻璃? 对于这个问题,有两个完全相反的答案,“是”和“不是”。 但是,在现行国家标准体系下,这两个答案竟然都是正确的!

2026/7/6 8:49:49阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/6 0:10:35阅读更多 →
Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南

Seraphine:基于LCU API的英雄联盟智能游戏助手技术解析与应用指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 技术架构先行:官方接口的合规应用 你是否曾在BP阶段手忙脚乱&#x…

2026/7/6 0:03:39阅读更多 →
多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理

多协议远程连接管理工具mRemoteNG:告别混乱,统一你的远程桌面管理 【免费下载链接】mRemoteNG mRemoteNG is the next generation of mRemote, open source, tabbed, multi-protocol, remote connections manager. 项目地址: https://gitcode.com/gh_m…

2026/7/6 0:03:39阅读更多 →
COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南

COUNT(DISTINCT) 与 GROUP BY 去重统计:5 亿数据量下的性能实测与选型指南在数据分析和处理领域,去重统计是最基础也是最频繁使用的操作之一。当数据量达到亿级规模时,不同的去重统计方法在性能上可能产生天壤之别。本文将基于 5 亿行数据的实…

2026/7/6 0:03:39阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →