我有一个名为 step_segment
的列表。它永远不应该是一个元组。
当我在 main
程序中按“7”时。我得到:
Traceback (most recent call last):
File "G:\programming\python\new_globals.py", line 205, in <module>
main()
File "G:\programming\python\new_globals.py", line 203, in main
pick_random(STATS, step_segment, seen, master)
File "G:\programming\python\new_globals.py", line 125, in pick_random
step_segment, STATS = take_step(step_segment, STATS)
File "G:\programming\python\new_globals.py", line 69, in take_step
step_segment.append(STATS)
AttributeError: 'tuple' object has no attribute 'append'
错误仅在调用 pick_random()
时发生:
def pick_random(STATS, seen, master):
step_segment = []
#if len(seen) >= 256:
# return seen, master
while (len(step_segment)) < 128:
step_segment, STATS = take_step(step_segment, STATS)
if STATS[5] == "B": # when there's a battle:
randy = random.choice([0,1])
if randy == 1: # choose randomly between G and B
step_segment = do_fight(step_segment, STATS)
else:
step_segment = do_glitch(step_segment, STATS)
seen = seen + [STATS[0],STATS[5]]
#if step_segment not in master:
master.append(step_segment)
time = get_frames(step_segment)
print seen
print time
#return pick_random(STATS, seen, master)
return seen, master
最佳答案
do_flight()
返回一个二元组:
return step_segment, STATS
解压失败:
step_segment = do_fight(step_segment, STATS)
在此之后,step_segment
成为一个元组。
你可能打算写
step_segment, STATS = do_fight(step_segment, STATS)
作为一般性建议,您可能希望保持方法签名的一致性以避免此类错误和/或学习一些面向对象的编程,这样您就不必在任何地方都传递相同的变量。
关于Python 认为我的列表是一个元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22406838/