半和元素
请帮我解决这个练习题:
半和元素:
写一个程序,输入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))}")