【问题标题】:How to prevent infinite loop in Boolean while loop?如何防止布尔while循环中的无限循环?
【发布时间】:2012-10-18 06:51:50
【问题描述】:

我的代码如下:

maybeYes = raw_input("Please enter Yes to continue.")
    if maybeYes != "Yes":
        print "Try again."
        # ask for input again
    else:
        pass

在我想让它再次要求输入的地方填写什么?

【问题讨论】:

  • 我猜这行 - “会给你声誉”,你想说......“会增加你作为 SO 提问者的声誉,而不是分数”

标签: while-loop boolean infinite-loop


【解决方案1】:

您应该直接在循环中执行 raw_input。

while True:
    result = raw_input("...")
    if result != "Yes":
        print "Try again."
        continue
    else:
        break

【讨论】:

    【解决方案2】:

    这将循环打印wrong,直到用户键入yesYesYEsYESyEsyeS,因为在检查@987654328 之前输入被转换为全大写@,那么你的代码就可以继续...

    while raw_input("Please enter Yes to start: ").upper() != 'YES':
           print 'Wrong'
    
    print 'Correct'
    
    #Carry on here 
    

    输出:

    Please enter Yes to start: nowg
    Wrong
    Please enter Yes to start: wggwe
    Wrong
    Please enter Yes to start: Yes
    Correct
    

    【讨论】:

    • 不知道为什么这被否决了,它不仅是正确的,而且比其他 2 个当前答案更干净、更健壮?
    • 可能是因为人们开始喜欢投票了.. :)
    【解决方案3】:

    在我看来你想要一个无限循环。

    maybeYes = raw_input("Please enter Yes to continue.")
    while maybeYes != "Yes":
        maybeYes = raw_input("Please try again.")
    

    但是,您始终可以添加计数器/转义。

    maybeYes = raw_input("Please enter Yes to continue.")
    attempts = 0
    while maybeYes != "Yes" and attempts < 10:
        maybeYes = raw_input("Please try again.")
        attempts += 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 2015-06-25
      • 2012-12-24
      • 2011-08-01
      • 2013-02-22
      • 2011-11-19
      相关资源
      最近更新 更多