2015-10-19 640 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

相关问题