亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我應該如何檢查函數中的參數是整數還是浮點數?

我應該如何檢查函數中的參數是整數還是浮點數?

慕田峪7331174 2023-08-08 17:20:17
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))問題: 我應該如何檢查函數中的參數是整數還是浮點數?
查看完整描述

2 回答

?
MYYA

TA貢獻1868條經驗 獲得超4個贊

一種選擇可能是:


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


查看完整回答
反對 回復 2023-08-08
?
人到中年有點甜

TA貢獻1895條經驗 獲得超7個贊

您的函數不應該真正關心它獲得的值的類型。它所關心的是:

  1. 列表中的所有值都可以相互比較

  2. 兩個最大值可以相加。

最簡單的做法是假設這些都是真的,并讓>+引發的任何異常傳播;無論是誰調用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。


查看完整回答
反對 回復 2023-08-08
  • 2 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號