【问题标题】:How do I end an infinite loop in python if no input(or the enter key is pressed) is provided in the loop如果循环中没有提供输入(或按下回车键),如何在 python 中结束无限循环
【发布时间】:2020-07-03 13:14:54
【问题描述】:

这是我的代码

while True:
    query = str(input()) 

    if query in phone_book: #phone_book is a dictionary here
        print(phone_book.get(query))
    elif query not in phone_book:
        print('Not found')
    elif query == (''): #I tried using none instead of empty string but it kept running the loop
        break

【问题讨论】:

  • 在最后一个elif条件elif not query中尝试如下使用。

标签: python infinite-loop


【解决方案1】:

使用not 声明:

if query in phone_book: #phone_book is a dictionary here
    print(phone_book.get(query))
elif query not in phone_book:
    print('Not found')
elif not query:
    break

【讨论】:

  • 您认为query 可能存在什么值,您的elif not query 和OP 的elif query == ('') 之间有什么区别?你知道query 是一个字符串。
【解决方案2】:

您的条件顺序错误。

您的前两个条件是 query in phone_bookquery not in phone_book 彼此相反,因此其中一个将评估 True,并且永远不会到达 elif query == ('') 行。

试试这个:

while True:
    query = str(input()) 
    if query == '':
        break
    elif query in phone_book: #phone_book is a dictionary here
        print(phone_book.get(query))
    elif query not in phone_book:
        print('Not found')

或者只是使用else作为最后一个:

while True:
    query = str(input()) 
    if query == '':
        break
    elif query in phone_book: #phone_book is a dictionary here
        print(phone_book.get(query))
    else:
        print('Not found')

【讨论】:

    【解决方案3】:

    尝试使用 Try 和 except 方法来打破循环:

        while(True):
            try:
                query = input()
                if query in phoneBook:
                    print(f"{query}={phoneBook.get(query)}")
                elif  query not in phoneBook:
                    if (query ==''):
                        break
                    else:
                        print("Not found")
            except:
                break
    

    在这里,当您在代码中没有提供任何输入时,计算机会将其作为空格并打印“未找到”,因此当输入与字典内容不匹配时,我们需要检查输入是否是无效输入或没有输入以中断循环的“ENTER”。有时也会出错,所以无论如何都要使用 Try-Except 方法来打破循环。

    【讨论】:

      猜你喜欢
      • 2011-07-14
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2017-10-30
      相关资源
      最近更新 更多