(我仍然是新的论坛发布,道歉,如果这是布局/措辞不佳)链接到一个条件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