You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让代码拒绝无效输入并重复提示(仅使用循环实现)

如何让代码拒绝无效输入并重复提示(仅使用循环实现)

看起来你现在的问题是,只要输入不是"y",不管是无效内容还是"n",循环都会直接退出对吧?咱们来调整一下逻辑,核心就是在获取用户输入的时候,加一个小循环来校验输入的有效性,直到用户输入"y"或者"n"为止。

先说说你现有代码的问题:当前逻辑里,输入后只判断了如果是"n"就break,但如果是其他无效内容(比如"abc"、"123"这类),sYesOrNo就不等于"y",外层的while循环条件不满足,自然就退出了,这显然不是你想要的效果。

下面是修改后的代码,完全只用循环实现,没有用到函数:

sYesOrNo = "y"
while sYesOrNo == "y" :
    fSalesPrice = getFloatInput("Enter property sales value: ")
    fProperty_Values.append(fSalesPrice)
    
    # 新增内层循环:强制用户输入有效的Y/N
    while True:
        sYesOrNo = input("Enter another value Y or N: ").lower()
        # 检查输入是否在允许的选项里
        if sYesOrNo in ("y", "n"):
            break
        # 输入无效时给出提示,让用户重新输入
        print("Invalid input! Please enter Y or N only.")
    
    if sYesOrNo == "n" :
        break

简单解释下修改的关键点:

  • 新增的内层while True是个无限循环,它会一直运行,直到用户输入了"y"或者"n"——只要输入不在这两个选项里,就会打印错误提示,然后再次弹出输入框。
  • 这样处理后,外层循环只会在两种情况下变化:用户输入"y"时继续下一轮录入,输入"n"时break退出;无效输入会被内层循环完全拦住,根本不会影响外层循环的执行逻辑。

备注:内容来源于stack exchange,提问作者RLA

火山引擎 最新活动