我以为我终于解决了我为练习写的骰子滚动代码中的所有问题,但显然我昨晚忘了保存我的工作,当我今天下午重写它时,random.randint函数没有似乎还没有返回1和2之外的任何数字,之前我记得它在给出更大尺寸的骰子时会返回更高的数字。我在shell中单独运行滚动功能,它似乎工作正常,但我认为我的整体代码肯定有问题导致它将每个卷视为1d2。
import random
die = 0
num = 0
def Opening():
print ("Welcome to the Super Deluxe Diceroller mk. 3!")
print ("What sort of Dice would you like to roll")
choice()
def choice():
print ("A. d2")
print ("B. d4")
print ("C. d6")
print ("D. d8")
print ("E. d10")
print ("F. d12")
print ("G. d20")
print ("H. d100")
global sides
die = input()
if die == 'a' or 'A':
sides = 2
nombre()
elif die == 'b' or 'B':
sides = 4
nombre()
elif die == 'c' or 'C':
sides = 6
nombre()
elif die == 'd' or 'D':
sides = 8
nombre()
elif die == 'e' or 'E':
sides = 10
nombre()
elif die == 'f' or 'F':
sides = 12
nombre()
elif die == 'g' or 'G':
sides = 20
nombre()
elif die == 'h' or 'H':
sides = 100
nombre()
else:
return 'Invalid'
choice()
def nombre():
print ("How many dice would you like to roll?")
global num
num = input()
if num.isnumeric():
roll()
else:
return 'Invalid'
nombre()
def roll():
global num
global fortuna
global sides
if int(num) > 0:
fortuna = random.randint(1,sides)
num = int(num)
num = num - 1
print(fortuna)
roll()
else:
retry()
def retry():
print("Would you like to roll again? (y/n)")
ans = input()
if ans == 'y':
Opening()
elif ans == 'n':
exit
else:
return 'Invalid'
retry()
Opening()
答案 0 :(得分:0)
此行if die == 'a' or 'A':
将始终返回True。这是因为项目的分组方式与if (die == 'a') or ('A'):
相同,'A'
(以及""
以外的任何字符串)始终为True。
尝试将所有这些行更改为if die == 'a' or die == 'A":
,它应该可以解决您的问题。另请参阅Truth Value Testing以获取有关此为真的原因的详细信息。