如何让循环随每次迭代变化的number变量持续运行直至得到123?
问题解决:自动迭代生成123的奇偶统计循环
原代码存在的问题
- 奇偶统计变量
evennumbers和oddnumbers在循环外初始化,未在每次循环重置,导致累计了历史所有数字的奇偶数据,而非当前处理的数字。 - 总长度
a仅在初始时赋值,未随每次循环的新数字更新,无法正确反映当前数字的总位数。 - 错误使用
input(print(...)),题目要求自动生成新数字,无需手动输入,直接赋值计算结果即可。
修正后的代码
# 获取初始输入数字 number = input("请输入初始数字: ") while number != '123': even_count = 0 odd_count = 0 # 遍历当前数字的每一位统计奇偶 for digit in number: num = int(digit) if num % 2 == 0: even_count += 1 else: odd_count += 1 # 计算当前数字总位数 total_count = len(number) # 生成新数字并更新循环变量 number = f"{even_count}{odd_count}{total_count}" # 可选:打印迭代过程,方便观察 print(f"当前生成数字: {number}") print("已得到目标数字123")
修正说明
- 每次循环开始时重置
even_count和odd_count为0,确保只统计当前数字的奇偶数量。 - 总位数直接取当前
number的长度,保证每次计算的准确性。 - 直接将奇偶数量+总位数拼接成新字符串赋值给
number,实现自动循环迭代,无需人工介入。
内容的提问来源于stack exchange,提问作者IlllIlII
相关产品推荐
相关产品推荐

