我运行以下程序作为教学练习:
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' 块。我在这个程序中做错了什么?
在 Python 3 中,input无论数据“看起来像什么” ,始终返回一个字符串。您需要手动解析height和age作为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)
现在,您只需要在其中添加一个循环即可多次询问。