You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现空罐换汽水计算逻辑出错,寻求代码修正方案

修正空瓶换汽水的代码逻辑错误

你的代码存在多处逻辑偏差,导致结果不正确,具体问题和修正方案如下:

原代码的问题

  • 初始空瓶数错误:一开始将a设为n-3,完全忽略了初始的n个空瓶可以直接参与兑换(比如n=5时,初始有5个空瓶,而非2个)。
  • 循环条件错误:仅当a>2时才执行兑换,但实际上只要空瓶数≥3就可以兑换。
  • 空瓶数更新错误:兑换后未将新喝汽水产生的空瓶计入,导致空瓶数量计算严重偏离实际。
  • 输出逻辑错误:两次print语句会导致输出多个结果,不符合题目要求的单一输出。

修正方案

方案一:模拟兑换过程(直观易理解)

通过循环模拟每一次兑换的过程,逐步累计喝的总数和剩余空瓶数:

n = int(input())
total = n  # 初始喝了n瓶汽水
empty = n  # 初始空瓶数量为n

while empty >= 3:
    exchange_num = empty // 3  # 计算当前可兑换的汽水数量
    total += exchange_num  # 累计喝的总数
    # 更新空瓶数:兑换后剩余的空瓶 + 新喝汽水产生的空瓶
    empty = empty % 3 + exchange_num

print(total)

方案二:数学公式法(高效无循环)

根据兑换规则推导数学公式:3个空瓶换1瓶汽水,等价于每消耗2个空瓶就能额外喝1瓶(兑换的汽水喝完会产生1个空瓶,净消耗2个)。最终总喝的数量公式为:总数 = 初始数量 + (初始数量 - 1) // 2

n = int(input())
print(n + (n - 1) // 2)

两种方案测试结果均符合要求:

  • 输入5 → 输出7
  • 输入100 → 输出149

内容的提问来源于stack exchange,提问作者金善璽

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:55:17