2016-01-27 35 views
-1
import random 
total = [0] 
one = 0 
two = 0 
three = 0 
four = 0 
five = 0 
six = 0 

dice=True 
while dice: 
a = random.randrange(1,7) 
if a == 1: 
    one = one + 1 
elif a == 2: 
    two = two + 1 
elif a == 3: 
    three = three + 1 
elif a == 4: 
    four = four + 1 
elif a == 5: 
    five = five + 1 
elif a == 6: 
    six = six + 1 


b = len(total) 
print ("Roll:", b,) 
print ("The dice has rolled:",a,) 
total.append (a) 




dice =input("Roll again? (y,n):") 
if dice == "n": 
    print ("Thank-You!") 
    print ("One rolled",one,"times") 
    print ("Two rolled",two,"times") 
    print ("Three rolled",three,"times") 
    print ("Four rolled",four,"times") 
    print ("Five rolled",five,"times") 
    print ("Six rolled",six,"times") 

    break 

我怎樣才能使它取代「倍」,這樣,如果「一」只用了滾動「一旦」它說:「一個已經鋪開的時間」,而不是「一個已經滾過1次「?如何用「時間」取決於輸出

謝謝。一個解釋也很好,所以我可以學習

+1

這真的很簡單。如果一個== 1:打印(「One滾動1次」。)else:print(「One roll」,one,「times」)' – DJMcMayhem

+1

你能否誠實地想到一個方法來啓動這個? – jonrsharpe

+0

@DJMcMayhem謝謝,我想到了,但只是做了一些小小的錯誤。是否有一種方法只做一次,以便代碼不會混雜大量if語句,只有一個六位? – potatomeister

回答

1

建立一個叫做printTimesRolled或類似的功能。然後傳遞一個字符串和一個int。就像這樣:

def printTimesRolled(numberWord, timesRolled): 
    if (timesRolled == 1): 
     print(numberWord, "rolled 1 time.") 
    else: 
     print(numberWord, "rolled", timesRolled, "times.") 

然後,全部打印出來,只是做到這一點:

printTimesRolled("One", one) 
printTimesRolled("Two", two) 
... 
+0

感謝兄弟:D。這有助於學習下一個主題的功能:D。 – potatomeister

1

您可以使用str.format並檢查號碼是否已經滾動一次。演示:

>>> one = 1 
>>> 'One rolled {} time{}'.format(one, 's' if one!=1 else '') 
'One rolled 1 time' 
>>> one = 0 
>>> 'One rolled {} time{}'.format(one, 's' if one!=1 else '') 
'One rolled 0 times' 
>>> one = 3 
>>> 'One rolled {} time{}'.format(one, 's' if one!=1 else '') 
'One rolled 3 times' 
0

這將是一個很好的方式來處理骰子滾動。我不確定您是否已經開始探索課程,但是通過製作DiceRoller類,您可以使其稍微更有條理。此外,您可以避免大量的全局變量。

使用字典進行比較將允許您運行for循環來比較它,而不是使用6個elif語句,從而使代碼更有效。

最後,當用戶鍵入「n」退出並檢查他的卷時,我們將其與again.lower()進行比較,以防止用戶輸入「N」。

然後它遍歷字典並根據簡單的if語句打印'time/roll'或'times/roll'。

我希望這對你有意義,如果不是隻是問!

import random 

# DEFINING THE CLASS 
class DiceRoller(object): 
    def __init__(self): 
     self.sides = {1:0, 
         2:0, 
         3:0, 
         4:0, 
         5:0, 
         6:0} 

    # WILL ROLL THE DICE AND ADD 1 TO THE SIDE COUNTER WHEN A SIDE IS ROLLED 
    def rollTheDice(self): 
     roll = random.randint(1,6) 

     for side in (self.sides): 
      if roll == side: 
       self.sides[side] += 1 

     print('Rolled a %s' % (roll)) 

    # WILL PRINT TOTAL ROLLS WHEN CALLED 
    def getTotals(self): 
     for i, side in enumerate(self.sides): 
      if self.sides[side] == 1: 
       print('Side %s: %s roll' % (i + 1, self.sides[side])) 
      else: 
       print('Side %s: %s rolls' % (i + 1, self.sides[side])) 


# THIS CODE IS EXECUTED 
Dice = DiceRoller() 

while True: 
    Dice.rollTheDice() 
    again = input('Roll again [y/n]: ') 

    if again.lower() == 'n': 
     break 

Dice.getTotals() 

此代碼將運行幾次時,以下幾點:

Rolled a 2 
Roll again [y/n]: y 
Rolled a 4 
Roll again [y/n]: y 
Rolled a 3 
Roll again [y/n]: y 
Rolled a 1 
Roll again [y/n]: y 
Rolled a 4 
Roll again [y/n]: y 
Rolled a 2 
Roll again [y/n]: n 
Side 1: 1 roll 
Side 2: 2 rolls 
Side 3: 1 roll 
Side 4: 2 rolls 
Side 5: 0 rolls 
Side 6: 0 rolls 

Process finished with exit code 0