2

因此,我正在尝试使用以下程序获取程序的输入,raw_input并且我有:

def Input1(time):

    userInput = raw_input()
    print ("Please choose either morning or night: ")

    if userInput != "morning" or "night":
        print ("Invalid entry. Select again")
        Input1(time)

    if userInput in "morning" or "night":
        Input2(year)

第二条if语句提示它进行更多的编程。

当我尝试运行该程序时,它会运行所有内容,但不会要求用户输入任何内容。有任何想法吗?

虽然它没有显示,但所有内容都在def Input1(time):

4

5 回答 5

1

这段代码不好有很多原因:

def Input1(time):

函数名不应以大写字母开头。

userInput = raw_input()
print ("Please choose either morning or night: ")

简单写:userInuput = raw_input("请选择早上或晚上:")

if userInput != "morning" or "night":

这相当于:

if userInput != "morning" or True:

这总是正确的......

    print ("Invalid entry. Select again")
    Input1(time)

在这里,您进行递归调用,再次询问...但是没有任何返回,这意味着将多次调用以下内容(实际上没有,因为您无法退出该函数)。

if userInput in "morning" or "night":
    Input2(year)

同样的错误,应该是:

if userInput in ["morning", "night"]:

或者

if userInput == "morning" or userInput == "night":
于 2013-11-14T18:58:57.067 回答
0

查看运算符的顺序。首先,您要求用户输入;之后,您打印“请选择”提示。因此,在用户输入值之前不会出现此提示。正确的方法:

userInput = raw_input("Please choose either morning or night:")

此外,if据我了解,您在语句中的条件是不正确的。请参阅有关inor运算符的 Python 文档。

于 2013-11-14T18:19:07.877 回答
0

您可以在raw_input通话中提示:

userInput = raw_input("Please choose either morning or night: ")

对于这个逻辑:if userInput != "morning" or "night"你实际上想要if userInput != "morning" and userInput != "night". 另一种写法是`if userInput not in ('morning', 'night')。类似的逻辑适用于您的第二个 if 语句。

于 2013-11-14T18:19:16.913 回答
0

当您运行代码时,您实际上是在调用 Input1(time) 吗?如果您不调用它,它将不会运行。

于 2013-11-14T18:19:20.003 回答
-2

raw_input()改名为input()

来自http://docs.python.org/dev/py3k/whatsnew/3.0.html

于 2013-11-14T18:20:48.060 回答