Python函数将外部变量设置为用户输入作为sid

2024-09-29 21:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一个休闲的游戏玩家和业余程序员,对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吗?在


Tags: to函数代码you游戏inputvar玩家
3条回答

你说得对,问题是关于范围的。这行的x:

x = input("What do you want to do? ").lower()

不更改传递给它的值-它在函数的局部作用域中创建一个新变量(也称为x)。在

正确的方法是:

^{pr2}$

当你把一些东西传递给Python函数时,通常不可能修改它,除非它是可变的。这将您限制为Python类型的一小部分,例如列表或字典。在

def getinput(x):
    x[0] = input("What do you want to do? ").lower()
    print("")

var = [""]
getinput(var)
print(var[0])

最好让函数返回一个值。这就是Python的工作方式。在

注意:如果您要使用Python 3.x之前的任何版本,一定要考虑使用raw_input()函数,因为普通input()函数只接受来自用户的语法有效的输入,否则将引发语法错误。在

我不知道你到底想做什么,但我已经把你上面写的东西改了一下,这样它就可以用了。我建议你试试:

首先是函数getinput()。。。在

def getinput():
    x = raw_input("What do you want to do? ").lower() #prompts for the value of x
    print "" #prints a blank line
    return x

第二部分。。。在

^{pr2}$

相关问题 更多 >

    热门问题