Python列表的总和不添加第一个和最后一个

时间:2018-07-14 15:16:53

标签: python

def sumfirstlast(num):
new_list = list(num)
for sum in new_list:
    total = int(new_list.pop(0)) + int(new_list.pop())
return(total)


number = input("Input number")
display = sumfirstlast(number)
print(display)

为什么当我键入43682时它返回11而不是6?由于我在列表中添加了第一个和最后一个数字

2 个答案:

答案 0 :(得分:0)

我相信total = int(new_list[0])) + int(new_list[len(new_list) - 1])应该有用。

答案 1 :(得分:0)

问题是不必要的for循环以及修改列表:

for sum in new_list:
    total = int(new_list.pop(0)) + int(new_list.pop())

如果new_list['4', '3', '6', '8', '2'],则在第一次迭代中将总数正确设置为6。但是,您仍然处于循环中-将再次设置总数,这次将3和一起8。

因此,您的方法应该只将第一个元素和最后一个元素加在一起,而没有任何循环:

total = int(new_list[0]) + int(new_list[-1])

大多数时候,您应该使用索引而不是pop()从列表中获取项目。 pop主要用于从列表中删除项目;它只是返回为方便起见删除的项目。