首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中的递归列表添加中查找错误

问在python中的递归列表添加中查找错误
EN

Stack Overflow用户
提问于 2020-03-24 20:57:39
回答 1查看 22关注 0票数 0

我需要创建一个接受数字数组的程序,检查每个数字是否大于所有前面数字的和,如果满足条件,则输出true,如果不满足,则输出false。我的试用如下所示:

代码语言:javascript
复制
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

我的程序对一半的测试用例有效,但对另一半的测试失败。你能帮我找出我做错了什么吗?非常感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2020-03-24 21:00:34

在真实的情况下,你太早打破了。只因为第一个元素会检查,并不意味着所有其他元素也会检查:

代码语言:javascript
复制
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")

只有当循环在没有找到反例的情况下结束时,您才能确保它适用于整个列表。

更简明扼要的写法是:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60831532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档