Python如何用for循环替代while循环反复获取用户输入的合法整数
Python 使用for循环实现序列求和需求
修改说明
原有代码的两处while循环都可以替换为for循环实现,同时优化了冗余的分支判断逻辑,保留所有原有功能:
- 输入校验环节:使用Python无限for循环实现,直到用户输入非负整数才终止,和原有while逻辑完全一致
- 序列计算环节:经推导该序列的循环执行次数刚好等于输入的n值,直接使用固定次数的for循环即可,无需额外终止条件判断,同时删除冗余的
lastTerm变量和分支判断代码 - 优化了变量命名:将原代码中和内置函数重名的
sum改为total,避免命名冲突
完整实现代码
# 要求使用for-loop实现,结果保留2位小数 # 程序接收用户输入的非负整数n,计算对应序列的和 # 输入校验for循环:无限循环直到拿到合法输入 for _ in iter(int, 1): n = int(input("请输入要计算的数值: ")) if n >= 0: break total = 0 # 序列计算for循环:遍历k从0到n-1 for k in range(n): total += (n - k) / (k + 1) # 保留2位小数输出 print("{:.2f}".format(total))
逻辑验证
- 当n=0时,
range(0)为空,循环不执行,total为0,输出0.00,符合预期 - 当n=1时,循环执行1次,计算得1,输出
1.00,符合预期 - 当n为其他正整数时,循环执行n次,累加所有项的结果和原有代码完全一致
内容的提问来源于stack exchange,提问作者JohnDoe8920
相关产品推荐
相关产品推荐

