半和元素

-2 投票
2 回答
71 浏览
提问于 2025-04-12 01:36

请帮我解决这个练习题:

半和元素:

写一个程序,输入n个整数,然后检查这些数中是否有一个数等于其他所有数的和。如果有这样的数,就打印“是”加上这个数的值;如果没有,就打印“不是”加上最大数和其他数之和的绝对值的差。

示例输入和输出:

输入:

4
6
1
2
3

输出:

Yes 
Sum = 6

提示和指导: 我们需要计算所有元素的和,找出其中最大的一个,然后检查条件。

我尝试过:

import sys

max_num = -sys.maxsize
sum_numbers = 0

n = int(input())

for i in range(0, n):
    num = int(input())

for i in range(0, n):
    num = int(input())

    if num > max_num:
        max_num = num
    sum_numbers += num

if max_num == sum_numbers - max_num:
    print("Yes")
    print(f"Sum= {sum_numbers}")

else:
    print("No")
    sum_numbers = sum_numbers - max_num
    print(f"Diff= {abs(max_num - sum_numbers)}")

我的结果: 没有任何输出

2 个回答

0

我觉得你想做的事情是这样的:

n = int(input("N: "))

nums = []

for _ in range(n):
    v = int(input("Enter an integer: "))
    nums.append(v)

nums.sort()

m = nums[-1]
s = sum(nums[:-1])

if m == s:
    print("Yes", m)
else:
    print("No", abs(m-s))

示例:

N: 4
Enter an integer: 6
Enter an integer: 1
Enter an integer: 2
Enter an integer: 3
Yes 6

N: 4
Enter an integer: 8
Enter an integer: 3
Enter an integer: 2
Enter an integer: 1
No 2

注意:

输入的数据没有进行检查

0

看起来你的代码里有个逻辑问题。在循环中,你把num的值给覆盖掉了。

我帮你修正了代码,并且在等待用户输入的地方添加了一些提示信息,这样用户就能更清楚地知道接下来该做什么了。

import sys

max_num = -sys.maxsize
sum_numbers = 0

n = int(input("Enter iterations: "))

for i in range(0, n):
    num = int(input("Enter number: "))

    if num > max_num:
        max_num = num
    sum_numbers += num

if max_num == sum_numbers - max_num:
    print("Yes")
    print(f"Sum = {max_num}")

else:
    print("No")
    print(f"Diff = {abs(max_num - (sum_numbers - max_num))}")

撰写回答