如何用Python函数累加多组分钟:秒:十分之一秒格式的拉力赛阶段时间?
拉力赛阶段时间累加程序解决方案
现有代码问题分析
- 仅处理单个阶段的时间,未实现循环处理指定数量阶段的逻辑,也没有累加功能
- 赋值语法错误:Python中变量赋值必须是
变量 = 值,比如NewB = b - 60,而非b - 60 = NewB - 缺失完整的时间进位逻辑:未处理十分之一秒满10进1秒的情况,且秒数进位的逻辑也不完整
- 未维护总时间的累加变量,无法得到所有阶段的总时长
修正后的实现方案
将所有时间转换为十分之一秒这一最小单位进行累加,最后再转换回分钟:秒:十分之一秒的格式,能简化进位处理,避免分步计算的错误。
完整代码
# 获取阶段数并验证输入范围 while True: try: stage_count = int(input("How many stages are there? ")) if 4 <= stage_count <= 14: break print("Stage count must be between 4 and 14. Please try again.") except ValueError: print("Please enter a valid integer.") # 初始化总时间(单位:十分之一秒) total_tenths = 0 # 循环输入每个阶段的时间 for i in range(stage_count): print(f"\nEnter time for stage {i+1}:") try: minutes = int(input("Minutes: ")) seconds = int(input("Seconds: ")) tenths = int(input("Tenths: ")) # 将当前阶段时间转换为十分之一秒,累加到总时间 stage_tenths = minutes * 60 * 10 + seconds * 10 + tenths total_tenths += stage_tenths except ValueError: print("Please enter valid integers for time values.") exit() # 将总时间转换回分钟:秒:十分之一秒格式 total_minutes = total_tenths // (60 * 10) remaining_tenths = total_tenths % (60 * 10) total_seconds = remaining_tenths // 10 total_tenths_final = remaining_tenths % 10 # 格式化输出,确保数字位数符合要求(分钟3位,秒2位,十分之一秒1位) print(f"\nTotal time: {total_minutes:03d}:{total_seconds:02d}:{total_tenths_final:d}")
代码说明
- 输入验证:确保阶段数在4-14之间,且输入为有效整数
- 统一单位累加:把每个阶段的时间都转换成十分之一秒,直接累加,避免分步进位的复杂逻辑
- 格式转换:将总时间(十分之一秒)反向转换为分钟、秒、十分之一秒,自动处理所有进位
- 格式化输出:使用格式化字符串保证输出格式符合
MMM:SS:T的要求(分钟补零到3位,秒补零到2位)
内容的提问来源于stack exchange,提问作者THEMAN99NFS
相关产品推荐
相关产品推荐

