在python中接收用户输入时类型不匹配

X H*_*xha 0 python

我运行以下程序作为教学练习:

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")
Run Code Online (Sandbox Code Playgroud)

具有以下输入和输出:

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
Run Code Online (Sandbox Code Playgroud)

我给出了正确的值类型(一个表示高度的浮点数和表示年龄的整数),因此应该执行 'if' 块,但 Python 将该表达式的值设为 false 并转到 'else' 块。我在这个程序中做错了什么?

Car*_*ate 5

在 Python 3 中,input无论数据“看起来像什么” ,始终返回一个字符串。您需要手动解析heightage作为floats 和ints。

height = float(input("State your height : "))
age = int(input("State your age : "))
Run Code Online (Sandbox Code Playgroud)

ValueError如果它们输入无效数据,这将导致s 被引发,这意味着if您将使用try/代替检查catch

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 .")
Run Code Online (Sandbox Code Playgroud)

现在,您只需要在其中添加一个循环即可多次询问。