Python入门者求助:浮点数乘法实现每日里程递增计算失败
解决每日跑步里程递增计算的问题
嘿,我一眼就看出你代码里的核心问题啦——你对“每日增加10%”的计算逻辑搞反了!
问题根源
你写的nextday = nextday * (10/100)或者nextday = nextday * 0.10,是把当天的里程变成前一天的10%,这会让里程越来越少,完全不符合“每天增加10%”的要求。正确的计算应该是:当天里程 = 前一天里程 × 1.1(也就是在原基础上增加10%)。
另外你的循环条件也会因为这个错误陷入死循环:因为里程一直在变小,firstday <= event的条件永远成立,程序就一直跑下去,自然没输出。
修正后的代码
firstday = float(input("How many miles you will run the first day? ")) event = float(input("How many miles is the event? ")) # 先处理首日就达标的情况 if firstday >= event: print(0) else: current_miles = firstday days = 0 while current_miles < event: current_miles *= 1.1 # 每天增加10%,等价于乘以1.1 days += 1 print(days)
代码解释
- 初始判断:如果第一天的里程已经达到或超过赛事要求,直接输出0天,逻辑更严谨。
- 正确的递增逻辑:
current_miles *= 1.1是current_miles = current_miles * 1.1的简写,完美实现“每日增加10%”的要求。 - 循环终止条件:当当前里程超过赛事要求时,停止循环并输出天数。
举个例子验证
比如输入首日跑5英里,赛事要求10英里:
- 第1天:5 × 1.1 = 5.5英里
- 第2天:5.5 × 1.1 = 6.05英里
- ...
- 第8天:5 × 1.1^7 ≈ 9.74英里,还没到10
- 第9天:9.74 ×1.1≈10.71英里,达标,所以输出9天
这样运行就会正常输出结果啦!
内容的提问来源于stack exchange,提问作者devil25machina
相关产品推荐
相关产品推荐

