我需要创建一个接受数字数组的程序,检查每个数字是否大于所有前面数字的和,如果满足条件,则输出true,如果不满足,则输出false。我的试用如下所示:
import fileinput
a0 = [int(i) for i in fileinput.input()]
a = a0[1:]
b=[]
for i in range(1, a0[0]+1):
b.append(a[i])
if (a[i+1] > sum(b)):
print("true")
break
else:
print ("false")
break我的程序对一半的测试用例有效,但对另一半的测试失败。你能帮我找出我做错了什么吗?非常感谢您的帮助。
发布于 2020-03-24 21:00:34
在真实的情况下,你太早打破了。只因为第一个元素会检查,并不意味着所有其他元素也会检查:
for i in range(1, a0[0]+1):
b.append(a[i])
if (a[i+1] <= sum(b)):
print ("false")
break
else: # for-else: else is executed only if loop isn't `break`ed out of
print("true")只有当循环在没有找到反例的情况下结束时,您才能确保它适用于整个列表。
更简明扼要的写法是:
import fileinput
_, *a = (int(i) for i in fileinput.input())
s = 0 # just keep track of total
for num in a:
if (num <= s):
print("false")
break
s += num
else:
print("true")https://stackoverflow.com/questions/60831532
复制相似问题