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

Python入门课程编程问题:计算每日翻倍金额并对比付款方案

编程问题:两种收益方案对比计算

题目要求:你可以选择一次性获得100万美元,或者从1美分开始,每天金额翻倍,持续30天。编写程序计算翻倍方式的最终金额,判断哪种方案所得金额更高。

我的尝试代码:

i = 0.01
for i in range(31):
  day = i
  day_1 = day * (2 ** 2)
  print(i)
i = 0.01
for i in range(31):
  day = i
  day_1 = day * (2 ** 2)
  
  print(i)

我不知道如何让程序自动计算到第30天的每日金额,不想逐天编写代码,希望找到更高效的实现方法。


解决方案

你的代码存在几个逻辑问题:

  • 初始化i=0.01后,循环里用range(31)直接覆盖了i的值,导致初始金额没被用到
  • 计算翻倍的公式错误,2**2是翻4倍,不符合每天翻倍的逻辑
  • 没有正确迭代更新每日的金额

下面提供两种高效实现方式:

方式一:循环迭代计算(直观易懂)

用一个变量保存当前金额,每天乘以2,循环30次即可得到最终金额:

# 初始金额为1美分(0.01美元)
current_money = 0.01

# 循环30天,每天翻倍
for _ in range(30):
    current_money *= 2

# 对比两种方案
one_time_reward = 1000000.0
print(f"30天后翻倍方案总金额: ${current_money:.2f}")
print(f"一次性奖励金额: ${one_time_reward:.2f}")

if current_money > one_time_reward:
    print("翻倍方案所得金额更高!")
else:
    print("一次性拿100万美元更划算!")

方式二:数学公式直接计算(效率更高)

第n天的金额公式为:初始金额 × 2^(n-1),30天的话直接计算0.01 × 2^29即可,无需循环:

initial = 0.01
total_money = initial * (2 ** 29)
one_time_reward = 1000000.0

print(f"30天后翻倍方案总金额: ${total_money:.2f}")
print(f"一次性奖励金额: ${one_time_reward:.2f}")
print("翻倍方案更赚!" if total_money > one_time_reward else "一次性拿100万更好!")

如果需要查看每天的金额,只需要在循环里加入打印语句即可:

current_money = 0.01
print("每日金额变化:")
for day in range(1, 31):
    print(f"第{day}天: ${current_money:.2f}")
    current_money *= 2
print(f"第30天最终金额: ${current_money/2:.2f}")  # 最后一次循环后金额是第31天的,所以除以2得到第30天的结果

内容的提问来源于stack exchange,提问作者Jantek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 03:13:24