我是一名休闲游戏玩家和业余程序员,懂一点 Python。我正在尝试制作一个简单的文本冒险游戏引擎,因此我需要从玩家那里获取原始输入。
这是 Python 3.2.2,所以我的行是这样的:
var = input("What do you want to do? ").lower()
该行有效,但我不想输入整行,而是想将它变成一个函数(类似于“getinput()”)。从我读到的有关 input() 和函数的内容中,我正在寻找一个不返回任何内容,但会更改另一个变量的状态(此处为“var”)作为“副作用”的函数。
我确实有一个不带参数的工作函数“halt()”:
def halt():
input("(Press Enter to continue...) ")
print("")
调用“halt()”给出提示,等待 Enter,然后打印一个空行并继续,这是我想要的。
我试图开始工作的函数如下所示:
def getinput(x):
x = input("What do you want to do? ").lower()
print("")
定义getinput(x)后:
var = ""
getinput(var)
print(var)
该片段不打印用户的输入,我很困惑为什么。我需要做什么才能以预期的方式完成这项工作?
我试图用一个函数做的事情是不可能的,还是我对作用域一无所知?我应该在 codereview 吗? ?
请您参考如下方法:
你是对的,这个问题是关于范围的。此行中的 x:
x = input("What do you want to do? ").lower()
不会更改传递给它的值 - 它会在函数的局部范围内创建一个新变量(也称为 x)。
正确的做法是:
def getinput():
return input("What do you want to do? ").lower()
x = getinput()
print(x)
