有什么更好的方法既可以不允许用户输入,又可以防止非数字输入

问题描述 投票:0回答:1
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 块在没有输入时可以正常工作,但它也可以捕获所有其他值错误,例如字符和符号。

python exception
1个回答
0
投票

在将输入转换为浮点数之前检查输入是否为空。这样您就可以将其与其他无效输入区分开来。

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")
© www.soinside.com 2019 - 2024. All rights reserved.