第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

通過 Python 函數(shù)運(yùn)行多個(gè)輸入

通過 Python 函數(shù)運(yùn)行多個(gè)輸入

翻閱古今 2021-09-11 16:16:45
我正在通過一個(gè)函數(shù)運(yùn)行多個(gè)浮點(diǎn)數(shù)以生成科學(xué)記數(shù)法。然而,并不是所有的浮點(diǎn)數(shù)都一直被放入(它是隨機(jī)的),因此會產(chǎn)生一個(gè)錯誤。輸入:a0,hvt,at,lambd = signify(a0,hvt,at,lambd)功能:def signify(*args):    rst = []    for arg in args:        if arg >= 100.0 or arg <= 0.01:            arg = '{:.2e}'.format(arg)            rst.append(arg)    return rst換句話說,'rst' 并不總是由四個(gè)元素組成(感謝 Singh 指出)。有人愿意為我指出正確的方向嗎?
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

我認(rèn)為你不太明白錯誤是什么。你能把錯誤信息貼出來嗎?


我懷疑你試圖分配a0,hvt,at,lambd = signify(a0,hvt,at,lambd)是真正的罪魁禍?zhǔn)祝绻麖暮瘮?shù)返回的“rst”沒有 4 個(gè)元素怎么辦?左側(cè)的語法強(qiáng)制右側(cè)的列表準(zhǔn)確地解包為 4 個(gè)元素,并ValueError: too many values to unpack (expected 4)在不匹配時(shí)引發(fā) a 。


嘗試result = signify(a0,hvt,at,lambd)檢查輸出。


更新:


如果您只想修改 4 項(xiàng)中的一部分,而允許其余項(xiàng)按原樣通過,則只需要 else 部分。以下是您如何看待整個(gè)過程。


def signify(*args):

    rst = []

    print(args)

    for arg in args:

        if arg >= 100.0 or arg <= 0.01:

            arg = '{:.2e}'.format(arg) #returns a string

            rst.append(arg)

        else:

            rst.append(arg) #take note that this else statement is the same as the last statement of if block

            #also note that args going through else block are not "strings" unlike the if block, which gives a string during ".format()"

    return rst

我們可以改進(jìn)這一點(diǎn)。


def signify(*args):

    rst = []

    print(args)

    for arg in args:

        if arg >= 100.0 or arg <= 0.01:

            arg = '{:.2e}'.format(arg)

        rst.append(arg) #note that you may want to typecast to string to maintain uniformity.

        #rst.append(str(arg))

    return rst

但是,這本質(zhì)上與在所有參數(shù)上應(yīng)用函數(shù)相同。我們可以創(chuàng)建一個(gè)函數(shù)來強(qiáng)調(diào)這種“處理 1 個(gè)術(shù)語”的方法。


def signify_single(single_arg):

    if single_arg >= 100 or single_arg <= 0.01:

        return '{:.2e}'.format(single_arg)

    return single_arg #or str(single_arg)

a,b,c,d = (signify_single(x) for x in (101,202,303,40))

但這讓我們意識到這只是一個(gè) if-else 語句。他們不一定是丑陋的。(PS。最后一行是列表理解。)


a,b,c,d = ('{:.2e}'.format(x)

          if (x >= 100 or x <= 0.01)

          else x #or str (x)

          for x in (101,202,303,40))

這個(gè)條件可以稍微調(diào)整一下,讓我們更清楚地理解。請注意,如果您愿意,也可以將它們寫在一行中。


a,b,c,d = (x if (0.01 < x < 100) else '{:.2e}'.format(x) for x in (101,202,303,40))

您可以使用任何看起來最干凈的樣式,或者探索并找到更好的東西。只需像這樣將其應(yīng)用于您的案例。


a0,hvt,at,lambd = (x if (0.01 < x < 100) else '{:.2e}'.format(x) for x in (a0,hvt,at,lambd))



查看完整回答
反對 回復(fù) 2021-09-11
  • 1 回答
  • 0 關(guān)注
  • 156 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號