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

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

如何在列表中找到奇數(shù)索引值的乘積

如何在列表中找到奇數(shù)索引值的乘積

慕尼黑8549860 2022-07-19 15:39:03
我能夠在“偶數(shù)”部分解決這個問題,但我陷入了奇數(shù)部分。您將獲得一組n數(shù)字。您的任務(wù)是首先反轉(zhuǎn)數(shù)組(第一個數(shù)字變?yōu)樽詈笠粋€,第二個數(shù)字從最后一個變?yōu)榈诙€,依此類推),然后打印偶數(shù)索引處的數(shù)字總和并打印奇數(shù)索引處的數(shù)字的乘積。輸入第一行包含單個整數(shù) N:元素的數(shù)量,后跟 N 個不同的整數(shù),用空格分隔輸出兩個空格分隔的整數(shù),表示偶數(shù)位數(shù)字的總和和奇數(shù)位數(shù)字的乘積。到目前為止我的代碼:n = int(input())arr = [int(x) for x in input().split()]arr.reverse()for ele in arr:    print(ele, end=" ")print()sum = 0count = 1while count <= n:    if count % 2 == 0:        sum += count    count += 1print(sum)
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻1795條經(jīng)驗 獲得超7個贊

您提供的代碼中有幾個問題,我將首先解決:


首先,您需要清楚奇數(shù)和偶數(shù)索引的含義。例如,在某些語言(Matlab)中,數(shù)組的第一個元素是索引位置 1。在 Python 和 Java 中,它是 0,因此,雖然您的示例假定為 1,但除非另有說明,否則它可能應(yīng)該為 0。


其次,在您的行中,sum+=count您是在匯總索引位置,而不是索引值,因此這不是您的問題所要求的。


您的代碼的最后一點是您已用作sum變量名。雖然這有效,但sum它也是一個 Python 關(guān)鍵字,您應(yīng)該避免將它們用作變量名,就像您以后要使用該sum函數(shù)一樣,您將收到錯誤TypeError: 'int' object is not callable,因為您已將該sum函數(shù)重新定義為整數(shù)。


對于答案:


考慮到上述情況,這通過修復(fù)您的代碼為第 1 部分提供了答案:


total = 0

count = 0

while count < n:

    if count % 2 == 0:

        total += arr[count]

    count += 1

print(total)

值得注意的是,當(dāng)您正在尋找偶數(shù)時,您最好將其寫為:


total = 0

count = 0

while count < n:

    total += arr[count]

    count += 2

print(total)

然而,還有更簡單的方法可以用更少的代碼做到這一點,它們涉及列表切片。您可以通過指定 對列表進行切片[start: end: step],因此arr[::2]指定位置 0 的開始(默認(rèn)值),列表末尾的默認(rèn)值)和步長 2。這意味著如果arr包含[1,2,3,4,5,6],arr[::2]則將是[1,3,5](即值在所有偶數(shù)索引處)或者如果您指定1ie的起始位置,arr[1::2]您將獲得[2,4,6](即所有偶數(shù)索引處的值)。


所以,而不是使用一個while循環(huán)。您可以僅對偶數(shù)值使用for循環(huán):


total = 0

for even_val in arr[::2]:

    total += even_val

print(total)

但是對于sum您可以更輕松地編寫為sum列表切片上的簡單命令:


print(sum(arr[::2]))

在 Python 3.8 之前,沒有簡單的sumfor product 等價物,因此如果您使用的是較低版本,您可以重用上述方法,考慮到您需要用第一個值對總數(shù)進行質(zhì)數(shù),然后相乘從下一個開始,即:


total = arr[1]

count = 3

while count < n:

    total *= arr[count]

    count += 2

print(total)

或使用for循環(huán):


total = arr[1]

for odd_val in arr[3::2]:

    total *= odd_val

print(total)

但是從 Python 3.8(此處的文檔)您現(xiàn)在可以prod從math庫中導(dǎo)入,其工作方式與以下內(nèi)容相同sum:


from math import prod

print(prod(arr[1::2]))


由于這是針對問題集,因此可能不是問題,因為所有示例的數(shù)組長度都可能N> 2,但上面的示例確實假設(shè)arr. 如果不是這種情況,您應(yīng)該在嘗試訪問之前進行一些驗證arr[1]


查看完整回答
反對 回復(fù) 2022-07-19
?
呼喚遠(yuǎn)方

TA貢獻1856條經(jīng)驗 獲得超11個贊

這是一個可愛的小遞歸函數(shù)(假設(shè)基于一個的索引):


# def prodSum(increment,multiplier=1,*rest): if zero based indices


def prodSum(multiplier,increment=0,*rest):  

    if not rest: return multiplier,increment

    product,total = prodSum(*rest)

    return (product * multiplier, total + increment)


x = [1,2,3,4,5]

print(prodSum(*reversed(x))) # 15,6


查看完整回答
反對 回復(fù) 2022-07-19
  • 2 回答
  • 0 關(guān)注
  • 101 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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