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

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

獲取一個基于列表第一個元素進行乘法或求和的函數

獲取一個基于列表第一個元素進行乘法或求和的函數

慕無忌1623718 2023-12-12 15:27:27
我在編寫一個函數時遇到一些麻煩,該函數將根據列表的第一個元素是奇數還是偶數對列表的所有元素求和或將列表的所有元素相乘。我想要得到這樣的東西。def simpleSum(mylist):    #Write your code    number = 1    for n in mylist:        if n % 2 != 0:            return sum(mylist)        else:            number *= n            return numberprint(simpleSum([1, 2, 4, 5]))print(simpleSum([2, 4, 5, 6]))我根據我在互聯網上看到的內容添加了number = 1和number *= n,但我不太明白為什么我必須使用number = 1以及number *= n正在做什么。我希望我的輸出是12240但到目前為止我一直在得到122對 python 很陌生,我不確定我做錯了什么。我最初嘗試使用for n in mylist:        if n[0] % 2 != 0:但我一直收到一條錯誤消息,告訴我這n[0]是不可編寫腳本的。任何簡短的解釋都會對我有很大幫助。先感謝您。
查看完整描述

4 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

那里


你的問題的答案非常簡單。您需要糾正的只是您的邏輯或語法。


讓我們分解您的程序并嘗試了解錯誤所在。


def simpleSum(mylist):

    #Write your code

    number = 1

    for n in mylist:

        if n % 2 != 0:

            return sum(mylist)

        else:

            number *= n

            return number


print(simpleSum([1, 2, 4, 5]))

print(simpleSum([2, 4, 5, 6]))

該代碼for n in mylist一次返回列表的一個元素,而不是位置,因此當您說 時n[0],它會返回一個錯誤,因為它不是列表并且沒有任何索引。


接下來,查看您的邏輯或語法錯誤:


如果您仔細觀察,n每次都會成為列表的下一個索引。這意味著每次它都會檢查數字是奇數還是偶數。如果是奇數,則返回總和,如果是偶數,則返回數字乘以 n。由于它返回第一個條目本身,即第一個索引本身,這意味著如果數字是偶數,結果將是該數字(因為 1*n=n),如果是奇數,它將返回總和整個列表的。


為了改變這一點,使用以下邏輯。創建函數:如果列表的第一個索引即mylist[0]奇數:返回總和否則/else:返回乘積


重現此情況的代碼是:


def simpleSum(mylist):

    #Write your code

    if mylist[0] % 2 != 0:

        return sum(mylist)

    else:

        number = 1

        for n in mylist:

            number *= n

        return number


        


print(simpleSum([1, 2, 4, 5]))

print(simpleSum([2, 4, 5, 6]))


查看完整回答
反對 回復 2023-12-12
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

根據您所需的輸出和輸入來判斷,如果第一個元素是偶數,則您希望數字列表相乘;如果第一個元素是奇數,您希望數字列表相加。

  • number = 1充當乘法的基值。

  • number *= n等于number = number * n

考慮以下代碼。首先,它檢查列表的第一個值是奇數還是偶數。然后它計算并返回相應的值。

def simpleSum(mylist):

    if (mylist[0] % 2) == 0:

        number = 1

        for n in mylist:

            number *= n

        return number

    else:

        return sum(mylist)


print(simpleSum([1, 2, 4, 5]))

print(simpleSum([2, 4, 5, 6]))


查看完整回答
反對 回復 2023-12-12
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

您可以使用functools.reduce進行乘法部分


from functools import reduce

from operator import mul


def my_func(some_list):

? ? return sum(some_list) if some_list[0] % 2 else reduce(mul, some_list)


print(my_func([1, 2, 4, 5]))

print(my_func([2, 4, 5, 6]))

輸出


12

240


查看完整回答
反對 回復 2023-12-12
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

我不認為你的代碼正在做你想做的事。如果我正確地閱讀了您的描述,聽起來您想在將所有元素相加或相乘之前知道列表的第一個元素是偶數還是奇數。


在這種情況下,你想要這樣的東西:


if my_list[0] % 2 == 0:

    print(sum(my_list)

else:

    num = 1

    for n in my_list:

        num *= n

    print(num)

需要設置的原因num = 1是因為num *= n乘以,如果沒有初始值,num則無法乘以!nnumn


查看完整回答
反對 回復 2023-12-12
  • 4 回答
  • 0 關注
  • 218 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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