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

在while循环中实现持续提示合法用户输入的问题排查

问题分析与修复方案

原代码的核心问题

  • 输入负数时,input()的返回值没有赋值给num,导致num仍为初始的负数,后续流程逻辑混乱。
  • 错误使用了while...else结构:while的else分支仅在循环条件不成立且未被break终止时执行,这里用来处理非法输入完全不符合逻辑,会导致仅提示一次就结束程序。

修复后的代码(纯while循环实现)

# 持续获取合法的非负整数输入
while True:
    try:
        num = int(input("请输入一个非负整数:"))
        if num >= 0:
            break
        else:
            print("仅允许输入非负整数,请重新输入!")
    except ValueError:
        print("输入不是整数,请重新输入!")

# 用while循环计算阶乘
if num == 0:
    print("0的阶乘是1")
else:
    factor = 1
    while num > 1:
        factor *= num
        num -= 1
    print(f"阶乘结果是:{factor}")

代码说明

  1. 输入校验循环:用while True构建无限循环,直到用户输入合法的非负整数才通过break跳出。加入try-except处理非整数输入的情况,覆盖所有非法输入场景。
  2. 阶乘计算逻辑:单独处理0的阶乘(固定为1),正整数则用while循环逐步累乘,直到num递减到1为止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 02:57:35