如何在不允许用户输入的同时防止非数字输入?
def prompt_for_angles(angle_name: str) -> float:
try:
angle: float or None = float(input(f"Angle for {angle_name}: "))
while not (0 < angle < 180): # while input is NOT correct
print("Invalid. Please enter an angle between 0 and 180")
angle: float or None = float(input(f"Angle for {angle_name}: "))
except ValueError: # nothing is entered, acceptable
print("value error")
angle = unknown
return angle
我正在制作一个应用程序,用户可以输入三角形的已知角度和边长,然后根据未知的边或角来计算它的长度或角度。我希望用户可以不输入任何内容,这样就可以把那个角当作未知(0),同时又要防止用户输入非数字的内容。有什么好的方法可以让我同时做到这两点呢?
我用的这个“尝试-异常”代码块在没有输入时能正常工作,但它也会捕捉到其他所有的值错误,比如字符和符号。
1 个回答
1
在把输入转换成浮点数之前,先检查一下输入是否为空。这样你就能把它和其他无效的输入区分开来。
def prompt_for_angles(angle_name: str) -> float:
while True:
num = input(f"Angle for {angle_name}: ").strip()
if num == "":
return unknown
try:
angle: float = float(num)
if 0 <= angle <= 180:
return angle
except ValueError:
pass
print("Invalid. Please enter an angle between 0 and 180")