【问题标题】:User input and stuck in while loop用户输入并卡在 while 循环中
【发布时间】:2015-07-03 20:15:13
【问题描述】:

我希望我的代码接受用户输入,然后提示用户继续,如果他们回答“y”则它要求另一个输入,如果他们回答“n”则程序停止并且如果他们输入任何其他字符只是继续提示他们,直到他们输入“y”或“n”。

正如代码所示,我正在尝试使用 while 循环不断提示用户,直到他们输入“y”或“n”。但是,当我到达 while 循环时,它不会在输入“y”或“n”时停止。

def test():

    number = input('Input a number then press enter:')    
    print(number)
    prompt = input('Continue (y/n)? ')

    if prompt == 'y':
        number = input('Input a number then press enter:')
        print(number)
        prompt = input('Continue (y/n)? ')
    elif prompt == 'n':
        pass

    else:
        while prompt != 'y' or 'n':
        prompt = input('Continue (y/n)? ')

【问题讨论】:

  • 请修正缩进。这很重要。

标签: python python-3.x if-statement while-loop


【解决方案1】:

or 不是这样工作的:

while prompt != 'y' or 'n':

你的意思可能是:

while prompt != 'y' or prompt != 'n':

您的版本 ors prompt != 'y''n',总是至少产生最后一个真值 ('n')。

完整代码:

def test():

    number = input('Input a number then press enter:')    
    print(number)
    prompt = input('Continue (y/n)? ')

    if prompt == 'y':
        number = input('Input a number then press enter:')
        print(number)
        prompt = input('Continue (y/n)? ')
    elif prompt == 'n':
        pass

    else:
        while prompt != 'y' or prompt != 'n':
            prompt = input('Continue (y/n)? ')

要执行这些类型的输入循环,我通常使用 while Truebreak

def test():

    prompt = 'y'
    while True:
        if prompt == 'y':
            number = input('Input a number then press enter:')
            print(number)
        elif prompt == 'n':
            break
        prompt = input('Continue (y/n)? ')

【讨论】:

  • 好的,谢谢,我已经更改了,所以有第二个提示!= n,但是当我运行时它仍然卡在while循环中?
  • 你可以使用调试器吗?你能打印prompts 的值来弄清楚发生了什么吗?
  • 我能用异常处理解决我的问题吗?
  • 当我到达 else 时,它​​会执行 while 循环,但我希望它返回并在输入“y”时执行 if 语句,如果输入“n”则执行 elif。它现在只是继续运行while循环。
  • @MrWallace 查看我对如何操作的编辑。更正后的代码对我有用,但我太累了,无法遵循不同的执行路径。祝你好运。
【解决方案2】:

您必须使用 raw_input() 才能将非数值变量作为输入。

【讨论】:

  • 没有。这是 Python 3。看到标签了吗?
猜你喜欢
  • 2013-11-16
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-11
相关资源
最近更新 更多