(我仍然是新的論壇發佈,道歉,如果這是佈局/措辭不佳)鏈接到一個條件if語句不會正確輸出的語句(輸入),否則語句回調形成一個無限遞歸循環
請你能幫我解決這個問題。我的問題是,我試圖讓用戶輸入一個對骰子有效的整數,例如6,12,20等(我只爲它設置了D6和D20的當前值),用於我的骰子滾動應用程序我的目標是像一個獨立的版本上的是什麼Roll20.net用來工作,
我有兩個問題:
1)當用戶選擇一個有效的管芯,例如6或20,而不是滾動說它死了,它只是返回數字6或20,或者你輸入的任何數字過去的第一個其他失敗,例如12,76,9709487。反而它應該發佈1或2與各自的打印聲明,因爲我有randint設置爲(1,2)測試打印語句。
2.)嘗試回調pick_dice函數的另一次嘗試導致程序落入遞歸循環,並試圖使用break語句也導致我有一個錯誤。如果嘗試將字符串作爲輸入,則會引發ValueError,而不僅僅是else語句。我發現這非常令人困惑,我甚至不確定我是否正在使用正確的條件(我發現python文檔非常混亂,我找不到任何有助於解決問題的東西)。
我的代碼:
import random
from random import randint
d20 = randint(1,2) #for test purposes rather than (1,20)
d6 = randint(1,2)
str1 = "You rolled a "
str2 = "Uh Oh, Critical Fail"
str3 = "Congrats Critical Hit"
#num = d20
#To select a die - More will be added later e.g. d10, d12, d100
num = int(input("Please pick a valid die: 6 or 20: "))
def roll(d20):
print(str1, d20)
if d20 == 1:
print(str2)
elif d20 == 2:
print(str3)
#roll(d20)
def roll(d6):
print(str1, d6)
if d6 == 1:
print(str2)
elif d6 == 2:
print(str3)
#roll (d6)
def dice():
if num == d20:
roll(d20)
elif num == d6:
roll(d6)
dice()
def pick_dice():
print (num)
if num is 6 or num is 20:
dice()
#elif num != 6 or num != 20:
else:
print ("Please input a valid die")
#I would put a break statement here but it causes an error
pick_dice()
我是不是應該放棄對用戶的輸入,並嘗試建立一個GUI的地方,我只是使用ComboBox內的Tkinter爲骰子的選擇,和按鈕來調用函數?因爲我的目標是在某個時候爲這個程序構建一個GUI。我真的很難理解這些基礎知識。
我希望有人能夠幫助我或指出我朝着正確的方向,謝謝。
我不確定這是* only *問題,但是您不應該爲身份('is')比較器混淆相等('==')。反而做'if num == 6 or num == 20' –
我想我可能會想到一個,我原本有==,謝謝 – Tedwyn