2013-10-04 35 views
0

我試圖在滾動骰子時使用while循環代替for循環。我不認爲elif是正確的,但我不知道如何使用while循環。這是我到目前爲止:While循環同時滾動骰子

import random 

def rolldiewhileloop(): 
    number = 10 
    one = 0 
    two = 0 
    three = 0 
    four = 0 
    five = 0 
    six = 0 
    while number > 0: 
     flip = int(random.random() * 6) 
     if(flip == 1): 
      one = one + 1 
     elif flip == 2: 
      two = two + 1 
     elif flip == 3: 
      three = three + 1 
     elif flip == 4: 
      four = four + 1 
     elif flip == 5: 
      five = five + 1 
     elif flip == 6: 
      six = six + 1 

    return [one, two, three, four, five, six] 

回答

1

您需要遞減while循環的每次傳遞數字。將number -= 1作爲while循環的最後一行。

6

在你當前的while循環中,你不會改變number的值,所以這將是一個無限循環。既然你已開始在10和循環,直到number小於或等於零,則可能應該由一個在每次迭代遞減:

number = 10 
while number > 0: 
    number -= 1 
    # the rest of the loop 

注意number -= 1相當於number = number - 1

作爲一個方面說明,而不是乘以random.random()的結果,最好是使用random.randint(1, 6)。此外,由於您已經返回一個數組,因此創建結果列表並對其進行修改將變得更加Pythonic,而不是爲每種可能性創建單獨的變量。例如:

def rolldiewhileloop(): 
    results = [0] * 6 
    number = 10 
    while number > 0: 
     number -= 1 
     flip = random.randint(1, 6) 
     results[flip-1] += 1 
    return results 
+1

+1表示更好的設計;如果變量名稱中有多個變量和數字,則幾乎可以肯定需要列表。 – geoffspear

+0

既然你沒有在任何地方使用'number',爲什麼不用'for xrange(10)'? –

+1

@kroolik這些問題明確指出,他們試圖使用'while'而不是'for'。我假設他們已經知道如何用'for'來做這件事,並且他們只是使用'while'作爲學習體驗,或者因爲它是作業作業的要求。 –