笨蛋鹌鹑 发表于 2024-5-20 21:31:34

求助大佬一道题,感谢

这是题:

从键盘输入a和b,求a除以b的结果并输出。完善下面程序,使之能够处理多种异常。

例如:从键盘输入除数,就有可能会输入0,而除数为0是个很严重的错误,应该进行ZeroDivisionError异常的捕获和处理。
【输入形式】
【输出形式】
【样例输入】
10
abc
【样例输出】输入的值不对!
【样例输入】
a
10
【样例输出】一个其他异常!
【样例输入】
10
0
【样例输出】 除数不能为0!


这是我目前的答案:
try:
    a=int(input())
    b=int(input())
    c=a/b
except(ValueError):
    print("输入的值不对!")
except(ZeroDivisionError):
    print("除数不能为0!")
else:
    print("c=",c)


肯定是有问题的,少一种情况,我应该怎么改?

FishC 发表于 2024-5-20 21:31:46

你的代码已经很棒了,只需要再加一个对于其他异常的捕获即可。完整的代码如下:

try:
    a = int(input())
    b = int(input())
    c = a / b
except ValueError:
    print("输入的值不对!")
except ZeroDivisionError:
    print("除数不能为0!")
except:
    print("发生了其他异常!")
else:
    print(f"c = {c}")

解释一下:

1. 首先我们用 `try` 语句捕获可能出现的异常,包括 `ValueError` (当输入无法转换为整数时)和 `ZeroDivisionError` (当除数为0时)。
2. 对于 `ValueError` 异常,我们打印 "输入的值不对!"。
3. 对于 `ZeroDivisionError` 异常,我们打印 "除数不能为0!"。
4. 对于其他未知的异常,我们使用一个空的 `except` 语句捕获,并打印 "发生了其他异常!"。
5. 如果没有发生任何异常,我们就在 `else` 语句块中打印计算结果 `c`。

这样就能够处理你提到的所有可能的情况了。如果你有任何其他问题,欢迎继续问我!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

叼辣条闯世界 发表于 2024-5-22 21:00:41

def main():
    a=input()
    b=input()
    try:
      b = int(b)
    except:
      print("输入的值不对!")
      return
    try:   
      a = int(a)
    except:
      print("一个其他异常")
      return
   
    if b == 0:
      print("除数不能为0!")
      return
    print(a/b)

if __name__ == '__main__':
    main()
页: [1]
查看完整版本: 求助大佬一道题,感谢