猿问

我应该如何检查函数中的参数是整数还是浮点数?

def sum_of_max(*args):

    my_list = list(args)

    first_max = max(my_list)

    my_list.remove(max(my_list))

    return first_max + max(my_list)


print(sum_of_max( "qwerty", 1, 6))

问题: 我应该如何检查函数中的参数是整数还是浮点数?


慕田峪7331174
浏览 98回答 2
2回答

MYYA

一种选择可能是:def sum_of_max(*args):    if not all(type(x) in (float, int) for x in args):        raise TypeError("Parameters should be of type 'int' or 'float'")    my_list = list(args)    first_max = max(my_list)    my_list.remove(max(my_list))    return first_max + max(my_list)print(sum_of_max( "qwerty", 1, 6))# Output: TypeError: Parameters should be of type 'int' or 'float'但它只是max()用更明确的异常替换了引发的异常。最好的选择可能是保持函数原样,并在使用它时捕获潜在的错误:try:    print(sum_of_max("qwerty", 1, 6))except ValueError:    # Do what you want in case of ValueError

人到中年有点甜

您的函数不应该真正关心它获得的值的类型。它所关心的是:列表中的所有值都可以相互比较两个最大值可以相加。最简单的做法是假设这些都是真的,并让>或+引发的任何异常传播;无论是谁调用sum_of_max,都可以捕获这些并处理它们,方法是修复参数并sum_of_max再次调用,或者提供一些默认值来代替sum_of_max可能返回的值。max实际上,不使用 而是自己迭代参数更容易做到这一点。def sum_of_max(*args):    biggest = None    second_biggest = None    for x in args:        if biggest is None or x > biggest:            biggest = x            second_biggest = biggest    return biggest + second_biggest请注意,biggest + second_biggest将引发异常的一种情况是,如果没有至少两个可比较的值,在这种情况下,将永远不会为一个或两个值分配除 之外的值None。
随时随地看视频慕课网APP

相关分类

Python
我要回答