Python自定义圆面积函数:非预期类型输入的循环重试实现问题
修复圆面积计算函数的输入验证逻辑
原代码的核心问题在于对input()返回值的类型判断错误,以及缺少异常处理机制——input()获取的内容永远是字符串,直接判断类型或者强制转换都会导致逻辑失效甚至报错。下面是修正后的代码,同时优化了循环逻辑:
def circlearea(r): print("Calculating Area Of A Circle") radius = r print("Radius Is ", radius) pi = 22/7 # 圆的数量输入验证 while True: circles_input = input("Count Of Circle: ") try: circles = int(circles_input) # 可选:验证数量为正整数 if circles <= 0: print("请输入大于0的整数!") continue break except ValueError: print("输入无效,请输入整数类型的圆数量!") # 角度值输入验证 while True: angle_input = input("The Value Of Angle: ") try: angle = float(angle_input) # 可选:验证角度在0-360范围内 if angle < 0 or angle > 360: print("请输入0到360之间的角度值!") continue break except ValueError: print("Invalid Angle Please Try Again !!") area = pi * radius ** 2 * (angle / 360) * circles print("Area Of This Circle Is: ", area)
关键修改说明:
- 用
while True替代自定义循环标记变量,逻辑更简洁直观 - 使用
try-except ValueError捕获类型转换失败的情况,这是处理输入验证的标准方式 - 新增了可选的数值范围验证(圆数量为正、角度在0-360之间),可根据需求调整
- 变量命名更清晰,区分输入的原始字符串和转换后的数值
内容的提问来源于stack exchange,提问作者Hiran
相关产品推荐
相关产品推荐

