我是一个休闲的游戏玩家和业余程序员,对Python有一点了解。我试图做一个简单的文本冒险游戏引擎,所以我需要从玩家的原始输入。在
这是python3.2.2,所以我的行是:
var = input("What do you want to do? ").lower()
这行代码行得通,但是我不想把整行代码输入到一个函数中(类似于“getinput()”)。根据我所读到的input()和函数,我正在寻找一个函数,它不返回任何值,但作为“副作用”更改另一个变量的状态(这里是“var”)
我有一个不带参数的工作函数“halt()”:
^{pr2}$调用“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)。在
正确的方法是:
^{pr2}$当你把一些东西传递给Python函数时,通常不可能修改它,除非它是可变的。这将您限制为Python类型的一小部分,例如列表或字典。在
最好让函数返回一个值。这就是Python的工作方式。在
注意:如果您要使用Python 3.x之前的任何版本,一定要考虑使用raw_input()函数,因为普通input()函数只接受来自用户的语法有效的输入,否则将引发语法错误。在
我不知道你到底想做什么,但我已经把你上面写的东西改了一下,这样它就可以用了。我建议你试试:
首先是函数getinput()。。。在
第二部分。。。在
^{pr2}$相关问题 更多 >
编程相关推荐