You need to enable JavaScript to run this app. Python实现数字翻倍至上限的循环时如何正确统计迭代次数
优惠活动
大模型
产品
解决方案
定价
更多

Python实现数字翻倍至上限的循环时如何正确统计迭代次数

代码修正方案

首先梳理原代码的核心问题:

  • 冗余的外层for循环:for number in range(0, upper_range)没有实际作用,既会和内部输入的number变量冲突,也和while循环的翻倍逻辑重复,完全可以移除。
  • 计数逻辑误用enumerate:enumerate的适用场景是遍历序列类对象时同步获取索引值,你将最终数值转成字符串拆分为列表再套enumerate,本质是在统计字符串的字符数,和循环执行次数没有关联;且enumerate是惰性迭代器,直接转字符串会输出内存地址,完全达不到计数效果。
  • 冗余的无效代码:number * 2这行计算结果没有赋值给任何变量,属于无意义代码,可以直接删除。
  • 输出格式不匹配:循环内的打印没有同步迭代序号,最终统计语句没有使用实际计数值。

修正实现步骤

  1. 初始化独立的循环计数器:在进入while循环前设置iteration_count = 0,每执行一次翻倍操作,将计数器值加1,这是统计循环执行次数最直接的方式,不需要依赖enumerate或者字符串转换的旁路逻辑。
  2. 调整循环内的打印格式:每次完成翻倍操作后,按照{当前计数}: {翻倍后的值}的格式输出,匹配你期望的展示样式。
  3. 修正最终统计语句:直接调用计数器存储的数值作为迭代次数,将原有错误的enumerate对象替换为实际计数值,统计目标值使用预设的上限即可。

修正后的可运行代码

def double_function():
    print('Enter an upper range to target')
    upper_range = int(input())
    print('Enter a number to double')
    initial_number = float(input())
    current_value = initial_number
    iteration_count = 0
    while current_value < upper_range:
        iteration_count += 1
        current_value = current_value * 2
        print(f"{iteration_count}: {current_value}")
    print(f"It took {iteration_count} iterations to reach {upper_range}")

double_function()

运行效果验证

当输入上限为1000、初始值为1时,输出完全匹配预期:

1: 2.0
2: 4.0
3: 8.0
4: 16.0
5: 32.0
6: 64.0
7: 128.0
8: 256.0
9: 512.0
10: 1024.0
It took 10 iterations to reach 1000

补充说明:如果确实需要用enumerate实现类似逻辑,也可以在循环时把每次翻倍后的结果存入列表,再用enumerate遍历列表生成带序号的输出,但这种方式会额外存储所有历史翻倍值,对于翻倍类的简单循环来说,直接用独立计数器的实现更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 08:15:04