通过for循环分配变量

时间:2016-04-09 12:52:17

标签: python python-3.x variables for-loop automation

我尝试使用for循环为变量赋值 - 在这种情况下,所有变量都被称为:' die1',' die2',&#39 ; die3'等

import random
for i in range(5):
    die[i] = random.randint(1,6)

我想要实现的目标是以5个变量分配随机数。我尝试了几种不同的方式,但最终还是“死了”。变量未分配或我无法使用' i'或者我计算的另一个变量。

4 个答案:

答案 0 :(得分:2)

对于您的口译员,die1die2等是不相关的实体。如果应按照您的情况对其进行分组,请考虑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']