尝试使用带有函数的原始输入

时间:2013-05-01 22:03:02

标签: python function raw-input

我是python的新手,我正在尝试使用raw_input和函数为程序创建一个命令。由于某种原因,它一直没有奏效。这是我一直在测试的代码:

raw_input()

def test():
    print "hi, this will be amazing if it works"

4 个答案:

答案 0 :(得分:6)

raw_input将阻止,直到您输入内容。当收到换行符时(用户按下回车键),该值将被返回并可以存储。您似乎没有试图调用您的函数test。也许你想尝试这样的事情(如果你需要,我可以进一步解释)

name = raw_input("What is your name: ")

def test(username):
    print "Hi %s, this will be amazing if it works" % (username,)

test(name)

根据您的其他评论,这是安全的方式:

# Define two functions test() and other()
def test():
    print "OMG, it works..."

def other():
    print "I can call multiple functions"

# This will be to handle input for a function we don't have
def fail():
    print "You gave a bad function name.  I only know about %s" % (", ".join(funcs.keys()))

# This is a dictionary - a set of keys and values.  
# Read about dictionaries, they are wonderful.  
# Essentially, I am storing a reference to the function
# as a value for each key which is the value I expect the user to ender.
funcs = {"test": test, "other": other}

# Get the input from the user and remove any trailing whitespace just in case.
target = raw_input("Function to run? ").strip()

# This is the real fun.  We have the value target, which is what the user typed in
# To access the value from the dictionary based on the key we can use several methods.
# A common one would be to use funcs[target]
# However, we can't be sure that the user entered either "test" or "other", so we can 
# use another method for getting a value from a dictionary.  The .get method let's us
# specify a key to get the value for, as wel as letting us provide a default value if
# the key does not exist.  So, if you have the key "test", then you get the reference to 
# the function test.  If you have the key "other", then you get the reference to the 
# function other.  If you enter anything else, you get a reference to the function fail.

# Now, you would normally write "test()" if you wanted to execute test.  Well the 
# parenthesis are just calling the function.  You now have a reference to some function
# so to call it, you have the parenthesis on the end.
funcs.get(target, fail)()

# The above line could be written like this instead
function_to_call = funcs.get(target, fail)
function_to_call()

答案 1 :(得分:3)

您需要将raw_input()的输出分配给类似的内容(documentation):

s = raw_input('--> ')

你的代码也可以工作(太棒了吗?)你刚刚定义了一个函数但没有调用它。将它添加到Python文件的末尾(没有缩进,一直到左边):

test()

答案 2 :(得分:0)

如果要使用输入,则必须将raw_input()的值赋给某些内容,如变量。

然后记住,在你调用def之前,def中的所有内容(缩进部分)都不会执行。这可能就是为什么没有任何作用,你不是在说def。

只需将test()放在某处即可调用它,然后打印出来。

在调用之前,函数不会运行。调用时执行的代码是'def'下的缩进部分。您可以将一些代码放在一个可能多次调用的函数中,而不必每次都再写一次。

答案 3 :(得分:0)

input = raw_input()

def test():
    print "hi, this will be amazing if it works"

if input == "test":
    test()