用户输入并卡在while循环中

时间:2015-04-25 03:51:41

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

我希望我的代码接受用户输入,然后提示用户继续,如果他们回答“' 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)? ')

2 个答案:

答案 0 :(得分:5)

这不是or的工作方式:

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

你可能意味着:

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

您的版本or s prompt != 'y''n',它们始终至少产生最后一个真值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 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)? ')

答案 1 :(得分:-2)

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