所以我试图创建一个函数,让我简单地调用函数,并给它10个值和一个变量,它将随机地将该变量更改为提供的值之一。
import random
place = "NA"
def randomize (value1, value2, value3, value4, value5, value6, value7, value8, value9, value10, variable):
global variable
variable = random.choice([value1, value2, value3, value4, value5, value6, value7, value8, value9, value10])
randomize ("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom", place)
print place
然而,这告诉我以下内容:
SyntaxError: name 'variable' is local and global
在Python中,通常不会修改输入参数。我知道这是C中的标准,但是更容易返回值并将变量赋值给函数的输出:
import random
def randomize(*values):
return random.choice(values)
place = "NA"
print place
place = randomize("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom")
print place
实现您要实现的目标的一种方法是不将全局变量place
作为参数传递给函数。
import random
place = "NA"
def randomize (value1, value2, value3, value4, value5, value6, value7, value8, value9, value10):
global place
place = random.choice([value1, value2, value3, value4, value5, value6, value7, value8, value9, value10])
randomize ("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom")
print place
编辑
正如您所指出的那样,您也希望将此函数用于其他变量,为此,您只需返回random.choice....
并调用randomize
函数即可根据需要更改任意数量的变量值。
下面的代码片段用于更改两个变量的值,一个是全局变量place
,另一个是myVar
import random
place = "NA"
def randomize (value1, value2, value3, value4, value5, value6, value7, value8, value9, value10):
return random.choice([value1, value2, value3, value4, value5, value6, value7, value8, value9, value10])
place = randomize ("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom")
myVar = randomize ("Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks", "Warehouse", "ThroneRoom", "Bedroom")
print place
print myVar
对于1, 2, 3, ... n
值,你应该使用list。您还需要编写更少的代码,因此它可以更好地扩展。你应该尽量避免使用global variables ...你可以找到in the global internet的原因。对于此示例,您甚至可以保存方法定义。
import random
places = ["Dungeon", "Plains", "Castle", "Prison", "Tavern", "Armory", "Docks",
"Warehouse", "ThroneRoom", "Bedroom"] # list with n elements...
place = random.choice(places)
print place