这段代码打印了正确的结果,但是当涉及到显示时。骰子,它说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']