在Python中使用raw_input收集输入

时间:2013-11-14 18:11:02

标签: python input python-2.x

所以我试图使用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):

下标记

5 个答案:

答案 0 :(得分: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":

答案 1 :(得分:0)

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

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

另外,据我所知,if语句中的条件不正确。请参阅有关inor运算符的Python文档。

答案 2 :(得分:0)

您可以在raw_input来电中提示:

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

对于这个逻辑:if userInput != "morning" or "night"你真的想要if userInput != "morning" and userInput != "night"。编写它的另一种方法是`如果userInput不在('morning','night')。类似的逻辑适用于你的第二个if语句。

答案 3 :(得分:0)

您在运行代码时实际上是在调用Input1(时间)吗?如果你不打电话,它将无法运行。

答案 4 :(得分:-2)

raw_input()已重命名为input()

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