【发布时间】:2015-12-06 20:00:22
【问题描述】:
我在一个小项目中遇到了一段代码问题,我似乎无法修复它。
在下面的代码中,我定义了 inputrace() 以便执行一个过程,其中玩家输入大于 0 且小于 13 的数字(有 12 个选项,每个选项由一个数字指示);它还检查空行和字符串,并让程序状态出现错误,如果检测到它们,则再次要求用户输入。如果它通过了检查,则返回 RaceInp 并将其设置为 RaceChoice,这允许它下面的代码根据玩家的选择将 Race 分配给玩家。
#race check
def inputrace():
print ("Input number")
RaceInp = input()
Check = RaceInp
try:
int(RaceInp)
except ValueError:
print("Numbers only!")
inputrace()
if not int(Check)>12 or int(Check)<1:
return RaceInp
print (RaceInp) #this is here so I can check the value returned
Race = "NA"
RaceChoice = inputrace()
print (RaceChoice)
#assign race
if RaceChoice == "1":
Race = "Human"
#continues down to twelve
当输入有效字符串(任何数字 1-12)时,一切正常,但当我故意输入无效字符串时,一切都会中断。似乎 RaceInp 仅保留第一个用户输入并且不会更改,即使在从错误中调用该函数之后也是如此。这意味着如果我输入“a”,程序会告诉我这是错误的并再次询问。但是,当我输入“1”以尝试更正它时,它接受它但仍将 RaceInp 保持为“a”。 有什么解决办法吗?我不知道发生了什么。
感谢您的帮助,如果我的问题有任何问题,我深表歉意!
【问题讨论】:
-
return 声明后你不应该有任何东西......
-
您应该在 except 块内
return inputrace()以使递归按预期运行。
标签: python python-3.x input user-input