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)的能力,同时还防止用户输入非数字。重组这个的最佳方法是什么,以便我可以同时做到这两点?
此 try except 块在没有输入时可以正常工作,但它也可以捕获所有其他值错误,例如字符和符号。
在将输入转换为浮点数之前检查输入是否为空。这样您就可以将其与其他无效输入区分开来。
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")