2013-10-31 125 views
-1

我的任務在Python 3.3.2中,它在這裏:

爲骰子對象創建一個類,該對象可以隨機生成一個介於1和6之間的數字並保存該文件。什麼問題? Python中沒有打印

您需要隨機模塊和

創建2個骰子對象A和B,並添加值後。

下面是規則

贏=總等於7或11

失去=總等於2,3或12

輥再次=總等於5,6,8,9,10直到7滾動或再次拋出相同的數字。


現在的代碼,我已經寫了:

import random 

class Dice: 
    '''A class that makes Dice''' 

    number = random.randint(1,6) 

a = Dice 
b = Dice 

result = a.number + b.number 

def resultgiver(): 
    if result == '7': 
     result == '11' 
     print('You won! You got ' ,result,'.') 

    elif result == '2': 
     result == '3' 
     result == '12' 
     print('You lost! You got ' ,result,'.') 

    elif result == '5': 
     result == '6' 
     result == '8' 
     result == '9' 
     result == '10' 
     print('Roll again! You got ' ,result,'.') 

    elif result == '5': 
     result == '6' 
     result == '8' 
     result == '9' 
     result == '10' 

    elif result == '7': 
     result == '11' 

resultgiver() 
+2

嘗試爲'a'和'b'實例化Dice,例如a = Dice()。另請注意,Dice.number將始終保持不變 - 只在導入時評估隨機數。你可能想把它放在\ _ \ _ init _ _ \ _中。 – dbn

回答

1

兩個問題:

  1. 你需要在你的類實例括號:

a = Dice()b = Dice()

  1. result是一個整數,但你所有的if語句檢查它是否等於char。刪除所有的報價在你的數字

    如果結果== 5:

  2. 你需要在你的類一個init,讓您始終獲得不同數量的,當你實例化類。

    類骰子: '' 'A類,讓骰子' ''

    def __init__(self): 
         self.number = random.randint(1,6) 
    

嘗試把一個別人在年底趕上的任何結果,是不是7或5:

elif result == '7': 
     result == '11' 
else: 
    print "we got here" 

我認爲你正在試圖用你的if語句來模擬switch語句。你不會工作的方式,但試試這個:

def resultgiver(): 
    if result in [7,11]: 
     print('You won! You got ' ,result,'.') 

    elif result in [2, 3, 12]: 
     print('You lost! You got ' ,result,'.') 

    elif result in [5, 6, 8, 9, 10]: 
     print('Roll again! You got ' ,result,'.') 

    else: 
     print "default case for result =", result 
+0

我試過但仍然沒有。感謝您的幫助!哦,不要等你改變它,你的答案的第2部分有幫助!非常感謝! – user2800756

+0

檢查更新的答案 – jramirez

+0

是的,你說得對! – user2800756

0

你比較字符串與整數!

if result == '7': 

我想在這個代碼

if result == '7': 
    result == '11' 
    print('You won! You got ' ,result,'.') 

你想做到這一點

if result == 7 or result == 11 : 
    print('You won! You got ' ,result,'.') 
1

到底哪裏出問題了?在Python

沒有什麼是打印

你只如果結果是7打印任何東西,2,5,出於某種原因,如果它是一個字符串(這是從來沒有一個字符串,因爲你不把它轉換成一個字符串)。您只在全局範圍內設置一次結果,因此重新運行該功能不會改變任何內容。

瞭解功能參數。您想要將數字結果作爲參數傳遞給您的函數。

1

,你應該寫

if result == 2 or result == 3 or result == 4: 

等檢查兩個或多個條件。 也a.number始終等於始終b.number,因爲您只將一個值分配給Dice.number一次。 試試這個:

class Dice(random.Random): 
    def number(self): 
     return self.randint(1, 6) 
a = Dice() 
b = Dice() 
result = a.number() + b.number() 
+0

什麼時候應該'結果== 2和結果== 3和結果== 4'永遠是真的? – glglgl

+0

很簡單,打算寫結果== 2 **或**結果== 3等,我將編輯我的答案 – Sirac

+0

現在好多了:-) – glglgl