python程序在pythonshell和terminal中的行为不同

python程序在pythonshell和terminal中的行为不同,python,raspberry-pi,Python,Raspberry Pi,我有一个简单的Python程序,它会询问是或否问题,我会验证输入。 如果我运行这个pythonshell,它运行得很好。如果我输入了无效字符,它将返回while的顶部 但是,如果我在终端窗口中运行此命令并尝试输入无效字符,则会出现如下所示的错误 endProgram = 0 while endProgram != 1: userInput = input("Yes or No? "); userInput = userInput.lower(); while userI

我有一个简单的Python程序,它会询问是或否问题,我会验证输入。 如果我运行这个pythonshell,它运行得很好。如果我输入了无效字符,它将返回while的顶部

但是,如果我在终端窗口中运行此命令并尝试输入无效字符,则会出现如下所示的错误

endProgram = 0
while endProgram != 1:
    userInput = input("Yes or No? ");
    userInput = userInput.lower();

    while userInput not in ['yes', 'no']:
        print("Try again.")
        break

    endProgram = userInput == 'no'

我可以清楚地看到您在python 3.2.3(后台)中使用的交互式shell。但是我看不到您正在从命令行(前台)运行的python版本

在raspberrypi上,从shell执行以下命令:

python --version
我希望在这里看到Python2.x,因为Python2和Python3之间的
input()
的行为不同,在某种程度上会导致您所看到的行为

您可能需要添加一行,如

#!/usr/bin/env python3

.py
文件的顶部,然后在其上单击
chmod+x
。之后,您应该能够直接执行它(
/guipy01.py
),并且将自动选择正确的python解释器

我可以清楚地看到您在python 3.2.3(后台)中使用的交互式shell。但是我看不到您正在从命令行(前台)运行的python版本

在raspberrypi上,从shell执行以下命令:

python --version
我希望在这里看到Python2.x,因为Python2和Python3之间的
input()
的行为不同,在某种程度上会导致您所看到的行为

您可能需要添加一行,如

#!/usr/bin/env python3

.py
文件的顶部,然后在其上单击
chmod+x
。之后,您应该能够直接执行它(
/guipy01.py
),并且将自动选择正确的python解释器

看起来您的RPi正在使用Python 2;
input
函数在那里执行
eval

Python3中的
input
相当于Python2中的
raw\u input
。(见附件)

理想情况下,您应该将RPi解释器更改为Python 3。否则,您可以使其版本不可知,如下所示:

try:
    input = raw_input
except NameError:
    pass

看起来您的RPi正在使用Python 2;
input
函数在那里执行
eval

Python3中的
input
相当于Python2中的
raw\u input
。(见附件)

理想情况下,您应该将RPi解释器更改为Python 3。否则,您可以使其版本不可知,如下所示:

try:
    input = raw_input
except NameError:
    pass

您是否在这两个平台上使用相同的Python版本<代码>输入在2和3之间更改行为。您是否在这两个版本上使用相同的Python版本<代码>输入在2和3之间更改行为。