【发布时间】:2019-11-23 12:57:13
【问题描述】:
假设我想创建一个要求用户输入浮点数据的函数。程序检查输入是否为浮点数,如果不是,则返回开头,如果是则返回数据,使函数结束。它可以很好地检查数据类型,如果数据是浮点数,它会正常工作,但是如果我先输入无效数据然后输入有效数据,则会出现错误。
def function1():
try:
data1 = float(input("Please type in pi with its first 2 digits"))
status = 1
except ValueError:
status = 0
if status == 0:
print("Please enter a valid answer.")
function1()
else:
return data1
x = float(function1())
if x == 3.14:
print("Correct!")
else:
print("Incorrect, please try again.")
function1()
它给我的错误是:
TypeError: float() 参数必须是字符串或数字,而不是 '无类型'
再次注意。这只发生在我第一次输入无效数据(例如“no”)然后输入有效数据(3.14、2.71 等)时。否则,“程序”工作正常。
【问题讨论】:
-
请注意,虽然副本可以解决特定问题,但首先递归确实不是正确的方法。
标签: python if-statement input