Python 3.x - 仅输入 returns 第一项
Python 3.x - Input only returns first item
我在一个小项目中遇到了一段代码问题,我似乎无法修复它。
在下面的代码中,我定义了 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."
有什么办法解决这个问题吗?我不知道发生了什么。
非常感谢您的帮助,如果我在问题中有任何错误,我深表歉意!
问题似乎出在你将 inputrace
放在递归而不是循环中。这样的事情可能会更好:
def input_race():
while True:
print("Input a number between 1 and 12.")
race_input = input()
try:
race_input = int(race_input)
if race_input >= 1 and race_input <= 12:
return race_input
except ValueError:
pass
print ("'{input}' is not a number.".format(input=race_input))
race = "NA"
race_choice = input_race()
if race_choice == 1:
race = "Human"
print(race)
我在一个小项目中遇到了一段代码问题,我似乎无法修复它。
在下面的代码中,我定义了 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." 有什么办法解决这个问题吗?我不知道发生了什么。
非常感谢您的帮助,如果我在问题中有任何错误,我深表歉意!
问题似乎出在你将 inputrace
放在递归而不是循环中。这样的事情可能会更好:
def input_race():
while True:
print("Input a number between 1 and 12.")
race_input = input()
try:
race_input = int(race_input)
if race_input >= 1 and race_input <= 12:
return race_input
except ValueError:
pass
print ("'{input}' is not a number.".format(input=race_input))
race = "NA"
race_choice = input_race()
if race_choice == 1:
race = "Human"
print(race)