我一直在做一个类似胭脂的游戏,在保存随机生成的世界时我遇到了一个问题。
以下代码:
import random import pickle
size = 6
a = [["WHAT"]*size for x in xrange(size)]
def make():
for x in range(0, size):
for z in range(0, size):
a[x][z] = random.choice(["T","G", "S", "M"])
def save():
try:
pickle.dump( a, open( "save.p", "wb" ) )
except:
print "Error"
def load():
a = pickle.load( open( "save.p", "rb" ) )
def printworld():
for x in range(0, size):
print""
for z in range(0, size):
print a[x][z],
print "",
make()
printworld()
save()
print""
make()
printworld()
print""
load()
printworld()
输出以下内容:
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
什么时候输出:
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
G G S T T S
S M G G S G
T M S G T M
S M S T G G
M T S G M S
G G S G M S
G G T M M S
T G G G T G
T M S G M M
G S M S M S
M S T M G T
M G G T G S
答案 0 :(得分:1)
def load():
a = pickle.load( open( "save.p", "rb" ) )
在这里,您要写入一个局部变量a
,然后将其丢弃。您需要添加global a
才能为全局变量分配新值。
在下一个问题中,请用文字写下代码应该做什么以及实际发生了什么。在这里你可能写过:
此代码应生成一个列表并将其保存到文件中,生成一个新列表,然后加载原始列表。但加载后,当我打印它的值时,我仍然会看到第二个列表的值而不是原始列表的值。