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

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

如何修復這個將列表中除等于所述總和的整數之外的所有整數相加的程序?

如何修復這個將列表中除等于所述總和的整數之外的所有整數相加的程序?

斯蒂芬大帝 2023-07-27 16:03:05
我正在嘗試解決一個問題,我必須輸入幾個整數作為輸入(用空格分隔),并打印作為所有其他整數之和的整數。所以例如:1 2 3 會得到:3,因為 3 = 1 + 21 3 5 9 會得到:9,因為 5 + 3 + 1 = 9這是我目前擁有的代碼:x = input().split(" ")x = [int(c) for c in x]y = 0for i in range(len(x)-1):    y += x[i]    del x[i]    z = sum(x)    if y == z:        print(y)        break    else:        x.insert(i,y)作為輸出,無論如何它都什么也沒有給出。有人發現錯誤嗎?我會非常感激,因為我只是一個初學者,還有很多東西需要學習:)
查看完整描述

4 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

(我把你奇怪的名字改名x為numbers。)


numbers = input().split()

numbers = [int(i) for i in numbers]


must_be = sum(numbers) / 2

if must_be in numbers:

    print(int(must_be))

說明:


如果存在一個元素s使得s = (sum of other elements),

那么(sum of ALL elements) = s + (sum of other elements) = s + s = 2 * s.


所以 s = (sum of all elements) / 2。


查看完整回答
反對 回復 2023-07-27
?
鳳凰求蠱

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

如果最后輸入的數字始終是輸入序列中先前數字的總和。您的問題在于 x.insert(i, y) 語句。例如,采用以下輸入序列:“1 2 5 8”


after the first pass through the for loop:

i = 0

z = 15

x = [1, 2, 5, 8]

y = 1

after the second pass through the for loop:

i = 1

z = 14

x = [1, 3, 5, 8]

y = 3

after the third pass through the for loop:

i = 2

z = 12

x = [1, 3, 8, 8]

y = 8

and the for loop completes without printing a result


查看完整回答
反對 回復 2023-07-27
?
炎炎設計

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

如果保證其中一個整數將是所有其他整數的總和,您是否可以不只對輸入列表進行排序并打印最后一個元素(假設為正整數)?


x = input().split(" ")

x = [int(c) for c in x]

print(sorted(x)[-1])


查看完整回答
反對 回復 2023-07-27
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

我認為這是一個棘手的問題,可以通過使用一個技巧來快速完成,即創建一個包含所有鍵的字典并將總和存儲為值,如 {1: 18, 3: 18, 5: 18, 9: 18}現在迭代字典,如果 val - key 在字典中,那么繁榮這就是數字


a = [1, 3, 5, 9]

d = dict(zip(a,[sum(a)]*len(a)))

print([k for k,v in d.items() if d.get(v-k, False)])


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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