导致从另一个文件导入for循环和显示函数的问题



这段代码打印了正确的结果,但是当涉及到显示时。骰子,它说die1, die2等没有定义。

import dice是从另一个文件

导入文件被确认工作正常

如果我手动分配每个骰子滚动与它的工作,例如。di1 = int(random.randint(1,6))

"

import dice
import random
roll = ["die1", "die2", "die3", "die4", "die5"]
roll = [int(random.randint(1,6)) for i in range(1, 6)]  
print(roll)
increments = {3: 2, 5: 4}
petals = 0
for die in roll:
petals += increments.get(die, 0)
print(petals)
dice.display_dice(die1, die2, die3, die4, die5)

"

当您第一次像这样分配列表时:

roll = ["die1", "die2", "die3", "die4", "die5"] #------------- 1
roll = [int(random.randint(1,6)) for i in range(1, 6)] #------ 2

你只是用你在(2)定义的列表覆盖你在(1)定义的列表。

所以你没有任何变量的名字,你试图使用(die1, die2,…)等等)。

@Iain Shelvington建议的方法,解包您在(2)中创建的列表,这意味着它将解包列表到它的元素中,这些元素基本上是您试图通过未定义的变量名称传递的值。这就是为什么它有效。

如果你真的想要有名字的东西,你可以分别定义每一个,或者使用字典之类的东西。你可以这样做:

dies = ["die1", "die2", "die3", "die4", "die5"]
rolls = [int(random.randint(1,6)) for i in range(1, 6)]
roll = dict(zip(dies, rolls))

然后你可以调用它们中的每一个,例如:

roll['die1']

最新更新