我試圖用一個for循環賦值給變量 - 在這種情況下,所有的變量稱爲:「die1」,「die2」,「die3」等通過指定變量循環
import random
for i in range(5):
die[i] = random.randint(1,6)
我想要實現的是以5個隨機數賦值的變量結束。我嘗試了一些不同的方法,但最終得到的是'die'變量未分配,或者我無法使用'i'或另一個我計數的變量。
我試圖用一個for循環賦值給變量 - 在這種情況下,所有的變量稱爲:「die1」,「die2」,「die3」等通過指定變量循環
import random
for i in range(5):
die[i] = random.randint(1,6)
我想要實現的是以5個隨機數賦值的變量結束。我嘗試了一些不同的方法,但最終得到的是'die'變量未分配,或者我無法使用'i'或另一個我計數的變量。
對於您的翻譯,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
的長度不匹配,則會引發錯誤。出於靈活性原因,我建議使用列表。
假設目標是填補了一個名爲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的解決方案更加優雅。
我建議製作一個固定大小的列表,您分配給它,所以它不會增長,每次您撥打append
。
import random
die = [0] * 5
def roll():
for i in range(5):
die[i] = random.randint(1, 6)
現在您可以撥打roll
並更新死單。
如果變量的數量很大,可能無法在開頭提及所有變量名稱。相反,它們可以在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']
是否有任何可能的方式不使用列表,並將它們存儲爲單獨的變量? 我有一個列表後,看起來像這樣: '骰子= [die1,die2,die3,die4,die5]' 後來函數調用這樣: '骰子[I]' 以「我'通過for循環控制 – Tym
這是優雅的解決方案。 – totoro
@Tym你可以創建你的'dice'列表,如下所示。無論如何,如果你將它們填入列表中,那麼不應該首先創建獨立變量。 – schwobaseggl