【问题标题】:While loop does not stop when the condition is met满足条件时while循环不会停止
【发布时间】:2019-01-29 12:32:11
【问题描述】:

当它打印出“你闻起来很有趣特朗普!”时,我想停止这个 while 循环。代码确实停了,但是没有停在正确的句子上,我这里做错了什么?

while True:

  from time import sleep
  from random import randint

  greetings = ["Hello","Howdy","You smell funny"]
  title = ["Human.", "Trump!" , "Maid."]
  greeting = "{x}, {y}".format(x=greetings[randint(0,2)], y=title[randint(0,2)])

  if greeting == "{x}, {y}".format(x=greetings[2], y=title[1]):
    break
  else:
    sleep(0.3)
    print(greeting)

【问题讨论】:

  • 正确缩进您的代码,人们将更有能力提供帮助。无论哪种方式,问题都是一旦满足您的标准,您就永远不会打印问候语。 break 语句退出 while 循环,print(greeting) 永远不会被执行。
  • 您可能还想在循环之外进行导入。
  • @JimNilsson,谢谢你的提醒,现在我正确地缩进了它们。我现在看到了问题,所以看起来我只是添加了一行,在“if”上方打印问候语就可以了。

标签: python string while-loop formatting break


【解决方案1】:

当它到达break 并停止循环时,它还没有打印“问候”。只需将print(greeting) 移动到if greeting == ... 之前即可。

【讨论】:

    【解决方案2】:

    您可以使用 Flag 而不是 'break' 来退出循环。

    Break_Flag=True
    while Break_Flag:
        from time import sleep
        from random import randint
        greetings = ["Hello","Howdy","You smell funny"]
        title = ["Human.", "Trump!" , "Maid."]
        greeting = "{x}, {y}".format(x=greetings[randint(0,2)], y=title[randint(0,2)])
        if greeting == "{x}, {y}".format(x=greetings[2], y=title[1]):
            print(greeting,"Stop")  
            Break_Flag=False
        else:
            sleep(0.3)
            print(greeting)    
    

    【讨论】:

    • 如何插入Python代码,我的代码看起来乱七八糟。
    • 在每行代码前,输入 4 个空格。我为您编辑了这个,等待审核。
    • 非常感谢。另一个问题,如果我从 PyCharm 复制代码并且每行仍然需要插入 4 个空格?
    • 我不知道,但每次你在这里写答案时,你都可以在下面看到你的答案的预览。如果它没有像这样显示,作为一个代码,然后添加 4 个空格。
    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 2016-03-14
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多