2014-01-20 32 views
0

我一直在試圖創建一個程序,它將模擬一個骰子滾動,可以選擇4,6或12個雙面模具。目前我遇到的問題是,無論選擇什麼選項,程序都會跳過滾動,並立即詢問我是否需要再次滾動。我使用可移植的Python 3.2.1.1來創建代碼。這是我到目前爲止:Python dicerolling程序跳過滾動

#!/usr/bin/env python 


import random 

def fourdie(): 
    min = 1 
    max = 4 
    print (random.randint(min, max)); 
    return; 

def sixdie(): 
    min = 1 
    max = 6 
    print (random.randint(min, max)); 
    return; 

def twelvedie(): 
    min = 1 
    max = 12 
    print (random.randint(min, max)); 
    return; 


roll = "yes" 
y = 1 


while roll == "yes" or roll == "y": 
    x = raw_input("What die do you want to roll? 4, 6 or 12?"); 
    if x == 4: 
    print (fourdie()); 
    elif x == 6: 
    print (sixdie()); 
    elif x == 12: 
    print (twelvedie()); 
    else: 
    print = "Sorry, I dont appear to have that dice type"; 

    roll = raw_input("Do you want to roll again?"); 

任何幫助,將不勝感激。 謝謝你的時間!

+0

你不在python中不需要''''。在我看來,最好不要在這些函數裏面使用'print'。你可以簡單地返回值。 – Mehdi

回答

1

input函數返回一個字符串。

您可以將這個字符串爲int,然後把它比作4,6或12:

x = int(input("What die do you want to roll? 4, 6 or 12?")) 
if x == 4: 
    // whatever 
elif x == 6: 
    // whatever 

或者你也可以直接比較x字符串:

x = input("... whatever ...") 
if x == "4": 
    // whatever 
elif x == "6": 
    // whatever 

和另一事情:沒有必要用python中的分號結束行。讓Guido van Rossum高興。

+0

謝謝,我只是試過這個,它給了我錯誤「NameError:name'raw_input'沒有定義」這是一個便攜式Python的問題?還是我在做其他事情? – user3214853

+0

由於您使用的是python3,請改用'input'函數。 –

+0

現在工作。謝謝! – user3214853

0

你的基本問題是打字,者Nigel Tufnel爲解決

我只是,因爲它攻擊我的幻想,以爲我會提到,你可以使你的代碼更加通用:

while roll in ["yes", "y"]: 
    x = int(raw_input("Number of sides on the die you want to roll?")) 
    print random.randint(1,x) 
    roll = raw_input("Do you want to roll again?") 
+0

謝謝,我現在就添加這個! – user3214853

+0

您可能需要添加以下內容:'if'in [「4」,「6」,「12」]:'print'之前。 – Mehdi

+0

只有當你真的想限制到那些骰子......那麼D5,D8,D10,甚至是D20呢? –