# 第 1-6 课课堂练习:Agent 学习打卡统计器 # # 完成要求: # 1. 根据注释使用 for、range()、if、continue、计数器和累加器。 # 2. 输入内容需要转换为正确的数字类型。 # 3. 使用有意义的英文蛇形变量名。 # 4. 注意冒号和四个空格缩进。 # 5. 不要删除题目注释。 # 6. 完成后使用题目提供的数据检查结果。 # 练习一:接收计划打卡天数。 # 使用 int() 转换,并保存到 planned_days。 # 练习二:在循环开始前创建三个统计变量: # 1. total_hours:总学习时长,初始值为 0.0; # 2. effective_days:有效学习日数量,初始值为 0; # 3. invalid_records:无效记录数量,初始值为 0。 # 练习三:使用 for 和 range() 循环 planned_days 次。 # 建议让循环变量 day 从 1 开始,这样提示语可以直接显示“第几天”。 # 注意:range() 的结束值不包含在结果中,需要自行计算正确结束值。 # 练习四:在循环中接收当天学习小时数。 # 提示语应包含当前 day,例如“请输入第 1 天的学习小时数”。 # 使用 float() 转换,并保存到 daily_hours。 # 练习五:在循环中判断 daily_hours 是否等于 -1。 # 如果等于 -1: # 1. invalid_records 增加 1; # 2. 输出“本条记录无效,已跳过”; # 3. 使用 continue 跳过本次循环剩余代码。 # 练习六:对于没有被 continue 跳过的有效记录: # 1. 把 daily_hours 累加到 total_hours; # 2. 如果 daily_hours 大于 0,让 effective_days 增加 1; # 3. 如果 daily_hours 等于 0,输出“今天没有完成学习”。 # 练习七:循环结束后,判断总目标是否达标。 # total_hours 大于或等于 5 时,target_reached 为 True,否则为 False。 # 请直接使用比较运算生成布尔值,不必使用 if 分别赋值。 # 练习八:使用字符串乘法输出 30 个等号,再使用 f-string 输出统计报告: # 1. 计划打卡天数 planned_days; # 2. 总学习时长 total_hours; # 3. 有效学习日 effective_days; # 4. 无效记录 invalid_records; # 5. 总目标是否达标 target_reached。 # 练习九:使用 if...else 输出最终建议: # - target_reached 为 True:输出“学习总时长已达标,请保持节奏。” # - target_reached 为 False:输出“学习总时长尚未达标,请继续努力。” # 练习十:额外完成一个独立的 while 循环。 # 1. 创建 review_count,初始值为 1; # 2. 当 review_count 小于或等于 3 时,输出“正在进行第几次复习”; # 3. 每次循环末尾让 review_count 增加 1; # 4. 确保循环能够正常结束。 # 第一次运行请使用以下数据: # 计划打卡天数:5 # 第 1 天:2 # 第 2 天:0 # 第 3 天:1.5 # 第 4 天:-1 # 第 5 天:3 # # 预期结果: # total_hours = 6.5 # effective_days = 3 # invalid_records = 1 # target_reached = True # while 循环依次输出第 1、2、3 次复习,然后正常结束。 # 第二次运行可以测试未达标情况: # 计划打卡天数:3 # 第 1 天:1 # 第 2 天:0 # 第 3 天:2 # # 预期结果: # total_hours = 3.0 # effective_days = 2 # invalid_records = 0 # target_reached = False # 完成后进行自查: # 1. for 循环是否正好执行 planned_days 次; # 2. -1 是否只增加无效记录,没有加入总时长; # 3. 0 是否加入总时长,但没有增加有效学习日; # 4. continue 是否位于无效数据分支中; # 5. 统计变量是否都在循环外初始化; # 6. while 循环是否能够在三次后正常结束。