我是一个长期潜伏者,第一次提问。我正在尝试自学 Python,虽然我研究了我的问题,但找不到答案。如果我删除第一个 While 循环,我的下面的代码就会运行,但目前它似乎没有进入第二个 while 循环。我想我可能正在引导我在工作中使用的内心 VBA,这只是我第二次尝试 Python。 我已经尝试更改第一个 while,因此它不仅仅是 true,并且在第二个 while 上尝试了变体。 这里的目的是研究我正在考虑的游戏的骰子池机制,并模拟滚动多个 D6、5-6 次爆炸、3 次以上成功和 1-2 次失败。最终我希望它运行掷骰子返回骰子列表成功次数等,然后重置询问用户再次掷骰子的数量。
import random
Scount = 0
Xcount = 0
Fcount = 0
rollcount = 0
cheat = 0
NoOfDice = 1
Dicelist = []
while True:
print ("Input number of dice to roll")
NoOfDice=input()
while cheat<int(NoOfDice):
rand = random.randint(1, 6)
Dicelist.append(rand)
if rand <= 4:
cheat += 1
if rand >= 3:
Scount += 1
if rand >= 2:
Fcount += 1
if rand <= 5:
Xcount += 1
print (Dicelist)
print ("We rolled " + str(NoOfDice) + " you got " + str(Scount) + " number of succeses with " + str(Xcount) + " number of dice exploded with " + str(Fcount) + " dice failed")
谢谢大家,感谢您抽出时间!
最佳答案
第一个 while
循环的条件本质上始终为 True
,这意味着它是一个无限循环。
您的第二个循环可能看起来没有在运行,但它确实在运行(只要您输入大于 0 的数字)。
您的程序没有输出的原因是您的 print()
语句位于无限循环之后,因此它们永远不会运行。这就是为什么当您删除无限循环时您的程序会按预期运行。
要解决此问题,只需将 print()
语句移至第一个循环内但位于末尾即可。
注意:如果您想在运行程序时有时间阅读正在打印的内容,则应该将 print()
更改为 input ()
,因为这意味着第一个循环仅在您按下 Enter
后循环。
附加说明:random.randint(1, 6)
返回 0 到 5 之间的值,而不是返回 1 到 6 之间的值。查看 中的值if
语句,您可能需要将代码更改为:
rand = random.randint(1,6) + 1
关于python - 骰子滚轮的第二个 while 循环出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49140860/