我运行以下程序作为教学练习:
height = input("State your height : ")
age = input("State your age : ")
if type(height) == float and type(age) == int:
print(f"You're {height} m tall and {age} years old")
else:
print("\n You've made a mistake ! Enter your data again .")
height = input("State your height : ")
age = input("State your age : ")
print(f"You're {height} m tall and {age} years old")具有以下输入和输出:
State your height : 2.2
State your age : 10
You've made a mistake ! Enter your data again .
State your height : 2.2
State your age : 10
You're 2.2 m tall and 10 years old我给出了正确的值类型(高度为浮点型,年龄为整型),因此应该执行'if‘块,但Python将表达式取值为false并转到'else’块。我在这个程序中做错了什么?
发布于 2020-09-17 02:25:03
在Python3中,无论数据是什么样子,input总是返回一个字符串。您需要手动将height和age解析为floats和ints。
height = float(input("State your height : "))
age = int(input("State your age : "))这将导致在输入无效数据时引发ValueError,这意味着您将使用try/catch而不是if检查
try:
height = float(input("State your height : "))
age = int(input("State your age : "))
except ValueError:
print("\n You've made a mistake ! Enter your data again .")现在,您只需要在其中添加一个循环来多次询问。
发布于 2020-09-17 02:24:15
您可以使用isinstance(height, int)验证类型。
然而,问题是输入是字符串,所以您必须使用int()或float()对其进行转换。
如下所示:
def get_input():
height = int(input("State your height : "))
age = float(input("State your age : "))
return height, age
is_input_valid = False
while not is_input_valid:
try:
height, age = get_input()
print(f"You're {height} m tall and {age} years old")
is_input_valid = True
except ValueError:
print("\n You've made a mistake ! Enter your data again .")https://stackoverflow.com/questions/63925853
复制相似问题