为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复这个将列表中除等于所述总和的整数之外的所有整数相加的程序?

如何修复这个将列表中除等于所述总和的整数之外的所有整数相加的程序?

斯蒂芬大帝 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 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信