【发布时间】:2015-07-31 05:31:17
【问题描述】:
我有这个导致我出现问题的 Python 3 代码:
def setStartingVariable(inputType, text, code = None, customErrorMessage = "Error: No error message"):
while True:
try:
variable = inputType(input(text)) # Test if the inputted variable is of the right type. Keep in mind inputType is a variable, not a function.
except BaseException:
print("Error! Try again!")
continue
err = 0 # Reset
if code != None:
exec(code)
if err == 0:
print("No error")
return variable
elif err == 1:
print(customErrorMessage)
else:
print("Error: var err != 1 and != 0")
def inputStartingVariables():
global wallet
wallet = setStartingVariable(float, "Just type a number in... ", "err = 1", "-!- error message -!-")
inputStartingVariables()
这应该会导致提示...
Just type a number in...
...确实如此。如果我输入浮点数以外的其他内容,则会出现错误...
Error! Try again!
...然后重新提示我。到现在为止还挺好。但是,如果我输入一个正常的数字,它会显示...
No Error
...当它应该显示变量customErrorMessage时,在这种情况下是...
-!- error message -!-
我最初认为问题是在 exec() 函数中,err 没有被视为全局变量,但使用 global err; err = 1 而不仅仅是 err = 1 不会不要修复它。
【问题讨论】:
-
请提供一个最小的例子。特别是,输入或其评估或循环都不应该是必需的。另请参阅stackoverflow.com/help/how-to-ask。
-
这是精简版...它显示了我在消除不必要代码的同时尝试做的基本想法。
-
您的代码的问题在于,当您测试输入
variable = inputType(input(text))时,它实际上是将您输入的内容转换为 inputType。所以当你输入一个整数时,它会将数字转换为浮点类型。 -
@Digvijayad 这会导致什么问题?
-
当用户输入一个整数时你想要一个错误,但是你的输入命令将输入转换为浮点数,因此没有错误。在此之后尝试打印变量。
variable = inputType(input(text))print(variable)。你会明白我的意思
标签: python python-3.x