Python、PyIDE用户输入循环有时不起作用

Python、PyIDE用户输入循环有时不起作用,python,function,input,while-loop,pycharm,Python,Function,Input,While Loop,Pycharm,我使用pyide。我做了一个while循环来循环输入。它只接受用户键入1或2,否则将继续循环。当我运行它时,有时需要我在接受它并结束循环之前键入1或2两次 欢迎来到刽子手!请按1表示英语,按2表示意大利语,然后按enter。2 欢迎来到刽子手!请按1表示英语,按2表示意大利语,然后按enter。2 我是意大利人。喜剧演员 如图所示,需要2个输入来中断循环。它似乎有40%的时间是这样做的 循环如下: while True: if user_input() == '1': print('Yo

我使用pyide。我做了一个while循环来循环输入。它只接受用户键入1或2,否则将继续循环。当我运行它时,有时需要我在接受它并结束循环之前键入1或2两次

欢迎来到刽子手!请按1表示英语,按2表示意大利语,然后按enter。2

欢迎来到刽子手!请按1表示英语,按2表示意大利语,然后按enter。2

我是意大利人。喜剧演员

如图所示,需要2个输入来中断循环。它似乎有40%的时间是这样做的

循环如下:

while True:
if user_input() == '1':
    print('You have selected English. Let us begin')
    break
elif user_input() == '2':
    print('Hai scelto italiano. Proseguiamo')
    break
else:
    user_input()
有时这不会发生,有时需要3个输入。。。代码有问题吗

user_input()函数的作用很简单:

def user_input():
    inp_1 = input('Welcome to hangman! Please press 1 for English, 2 for Italian and press enter.')
    return inp_1

您正在条件中调用
user\u input()
,这意味着每次都必须调用该函数来检查条件是否为真(这将提示用户输入)。相反,调用它一次并将结果存储在变量中

while True:
    choice = user_input()
    if choice == '1':
        print('You have selected English. Let us begin')
        break
    elif choice == '2':
        print('Hai scelto italiano. Proseguiamo')
        break

您正在条件中调用
user\u input()
,这意味着每次都必须调用该函数来检查条件是否为真(这将提示用户输入)。相反,调用它一次并将结果存储在变量中

while True:
    choice = user_input()
    if choice == '1':
        print('You have selected English. Let us begin')
        break
    elif choice == '2':
        print('Hai scelto italiano. Proseguiamo')
        break

请修正你的缩进。你能确定它需要3次输入的时间有什么不同吗?是否存在需要1的情况?抱歉,我在复制代码时忽略了这一点。没有什么不同,它是完全随机的。它甚至不接近随机。好吧,我注意到的是,有时它需要1,有时2,有时3,而输入是相同的。不管怎样,它已经在下面解决了,谢谢你的输入:)请修正你的缩进。你能确定它需要3个输入的时间有什么不同吗?是否存在需要1的情况?抱歉,我在复制代码时忽略了这一点。没有什么不同,它是完全随机的。它甚至不接近随机。好吧,我注意到的是,有时它需要1,有时2,有时3,而输入是相同的。不管怎样,它已经在下面解决了,谢谢你的输入:)谢谢,这基本上解决了它,尽管仍然有一些奇怪的地方。如果我不是第一次键入1或2,它将再次需要1或2的多个输入来结束循环(这是在应用您的修复之后)。@Vellutante您是否使用了我在回答中使用的代码?因为您所描述的问题听起来像您仍然保留了
else
-语句。如果您是对的,删除了else语句,它就可以完美地工作。再次感谢!谢谢,这基本上解决了这个问题,尽管还有一些特殊的地方。如果我不是第一次键入1或2,它将再次需要1或2的多个输入来结束循环(这是在应用您的修复之后)。@Vellutante您是否使用了我在回答中使用的代码?因为您所描述的问题听起来像您仍然保留了
else
-语句。如果您是对的,删除了else语句,它就可以完美地工作。再次感谢!