我尝试使用for循环为变量赋值 - 在这种情况下,所有变量都被称为:' die1',' die2',&#39 ; die3'等
import random
for i in range(5):
die[i] = random.randint(1,6)
我想要实现的目标是以5个变量分配随机数。我尝试了几种不同的方式,但最终还是“死了”。变量未分配或我无法使用' i'或者我计算的另一个变量。
答案 0 :(得分:2)
对于您的口译员,die1
,die2
等是不相关的实体。如果应按照您的情况对其进行分组,请考虑list
:
die = [random.randint(1,6) for _ in range(5)]
现在您可以访问die[0]
,die[1]
等。如果您确实需要自变量,可以使用:
die1, die2, die3, die4, die5 = [random.randint(1,6) for _ in range(5)]
但是,如果左侧的变量数与右侧的list
/ tuple
的长度不匹配,则会出现错误。出于灵活性原因,我建议使用列表。
答案 1 :(得分:0)
假设目标是填充名为die
的列表,那么您可以定义它并在每次迭代时附加整数:
import random
die = []
for _ in range(5):
die.append(random.randint(1, 6))
如果您指的是不同的变量,可以使用vars动态定义它们:
import random
die1, die2, die3, die4, die5 = [0] * 5
for i in range(5):
vars()['die{}'.format(i)] = random.randint(1, 6)
定义局部变量的行不是必需的,尽管它在IDE中更容易使用。
如果您对第一部分或第二部分的意思很少,我认为schwobaseggl的解决方案更优雅。
答案 2 :(得分:0)
我建议您制作一个您指定的固定尺寸列表,这样每次拨打append
时它都不会增长。
import random
die = [0] * 5
def roll():
for i in range(5):
die[i] = random.randint(1, 6)
现在您可以致电roll
并更新骰子列表。
答案 3 :(得分:0)
如果变量数量很大,则可能无法在开头提及所有变量名称。相反,它们可以在for循环的每次迭代中创建,并作为键存储在字典中,而与它们相关联的随机数可以作为它们的值存储在字典中。
您可以使用字符串连接来创建变量名称,例如'die'+'1' = 'die1'
。如果将'die1'称为'n',则将新键添加到字典Dict[n]=randint(1,6)
,其中randint(1,6)是与'die1'对应的值。这样,您可以轻松地将这些变量用于数学运算。
from random import randint
Dict={}
count=1
for i in range(5):
n='die'+str(count)
DICT[n]=randint(1,6)
count=count+1
print DICT
print DICT['die1'],DICT['die2']
print DICT['die1']+DICT['die2']