2015-10-19 178 views
3

所以這是針對我的一個類的練習題。我想生成1到6之間的6個隨機數列表。例如,startTheGame()應該返回[1,4,2,5,4,6]在python中生成1到6之間的6個隨機數列表

我想我已經接近了,但是Im只是不知道如何編碼,以便所有6個數字都附加到列表中,然後返回。任何幫助表示讚賞。

import random 
def startTheGame(): 
    counter = 0 
    myList = [] 
    while (counter) < 6: 
     randomNumber = random.randint(1,6) 

    myList.append(randomNumber) 

    counter = counter + 1 

    if (counter)>=6: 
     pass 
    else: 

     return myList 
+0

請接受答案,如果它解決了你的問題 –

回答

9

使用list comprehension

import random 

def startTheGame(): 

    mylist=[random.randint(1,6) for _ in range(6)] 
    return mylist 

列表內涵是被Python提供的最有力的工具之一。它們被認爲是pythonic,它們使代碼非常有表現力。

考慮下面的代碼:

counter = 0 
myList = [] 
while (counter) < 6: 
    randomNumber = random.randint(1,6) 

myList.append(randomNumber) 

counter = counter + 1 

if (counter)>=6: 
    pass 
else: 
    return 

我們將重構的幾個步驟,這個代碼來更好地說明什麼列表內涵做。我們要重構的第一件事是帶初始化和中止標準的while循環。這可以更簡潔的用表達來完成的:

myList = [] 
for counter in range(6): 
    randomNumber = random.randint(1,6) 
myList.append(randomNumber) 

而且現在的步驟,以這段代碼到一個列表理解:將用於內部MYLIST循環。這消除了附加步驟和任務:

[random.randint(1,6) for _ in range(6)] 

_是一個變量名,就像任何其他的,但它是未使用的變量約定在Python我們發_。把它看作一個臨時變量。

+1

那麼你去!非常感謝。你能解釋一下範圍(6)中的「for _」嗎? – wahlysadventures

相關問題