提问人:Cory Blake 提问时间:11/8/2023 更新时间:11/8/2023 访问量:25
验证和验证:python 中函数中的异常处理
Validation and verification: exception handling within a function in python
问:
我正在尝试创建一个添加整数的add()函数。我在异常处理方面遇到了问题,因为我最希望有一个 isinstance 调用来执行我需要的验证和确认。目前,针对三种情况提出了三个异常错误:
- 如果没有参数。
- 如果输入是 list、set、tuples。
- 如果参数不是整数:字符串和浮点数。
这是我目前的实现:
def add(*args):
if len(args) == 0:
raise TypeError("add() missing 1 required positional argument: 'value'")
integer_total = 0
for numbers in args:
if isinstance(numbers, (list, set, tuple)):
raise TypeError("add() does not accept lists, sets, or tuples as arguments")
elif not isinstance(numbers, int):
raise TypeError("add() only accepts integer arguments")
if isinstance(numbers, (list, set, tuple)):
for num in numbers:
if not isinstance(num, int):
raise TypeError("add() only accepts integer arguments")
integer_total += sum(numbers)
else:
integer_total += numbers
return integer_total
理想情况下,我想将其称为 isinstance。我尝试使用:isinstance(numbers, (list, set, tuple, string, float)),但我认为我没有正确实现它。
答:
0赞
Stitt
11/8/2023
#1
您提到尝试使用(原文如此,语法错误除外):
isinstance(numbers, (list, set, tuple, string, float))
尝试捕获所有异常,但仍有许多其他类型可以传递,这些类型在此步骤中不会被捕获。
您需要做的就是验证参数是否为整数,您已经这样做了(实际上两次)!只需检查参数是否为(或不是)整数,然后通过引发错误或增加总和来适当地处理它。
def add(*args):
if len(args) == 0:
raise TypeError("add() missing 1 required positional argument: 'value'")
integer_total = 0
for numbers in args:
if not isinstance(numbers, int):
raise TypeError("add() only accepts integer arguments")
else:
integer_total = integer_total + numbers
return integer_total
评论
0赞
Stitt
11/9/2023
不用担心。如果这有帮助,请接受作为答案。
评论