将列表的索引作为整数处理

时间:2015-11-20 05:09:48

标签: python list indexing integer

我正在为即将到来的比赛做一些样本编程挑战,而且我发现自己很难接受一个相当容易的挑战。

基本上,用户必须输入x个数字,我必须返回数字的总和。条件是每次输入0时,都意味着我必须忽略他们输入的最后一个数字,所以它不再是总和的一部分了。

这是我的代码:

numbers = []
index = 0
total = 0

k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()

for x in range (int(k)):
    number = input("Enter a number." + "\n").strip()
    numbers.append(number)
    if number == '0':
        index = numbers.index(number)
        numbers.pop([index - 1])
        numbers.pop([index])

for y in range (len(numbers)):
    for item in numbers:
        total += int(item)


print(total)

错误就在这一行:

numbers.pop([index - 1])

它告诉我' list' object不能解释为整数。我最初试图使它成为int(索引)希望它将它转换为int所以我可以执行减法来获取它之前的数字的索引,所以我可以将它从列表中弹出,但我得到了相同的错误信息。

有没有办法将此值用作整数,因此我可以执行减1。或者是否有不同的方法来获得之前的数字索引?

5 个答案:

答案 0 :(得分:2)

好吧,在python中,可以使用负数来引用列表 end 中的元素:

>>> l = range(10, 100, 5)
>>> l
[10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
>>> l[-1]
95
>>> l[-2]
90

和pop将采用这些负数,因此要删除列表中倒数第二个项目只是:

>>> l.pop(-2)
90
>>> l
[10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 95]

答案 1 :(得分:1)

您认为[index - 1]是什么?这显然是list。这不是一个整数。没有方括号的index - 1将是一个整数。此外,您应该在附加之前检查用户的号码是0 ,还是list中的最后一个值是0而不是值k = int(input("How many numbers would you like to enter? (1- 100000)\n")) result = [] for i in range(k): num = int(input("Enter a number.\n")) if num: result.append(num) elif result: result.pop(-1) print(sum(result)) 你需要删除,这只是为了额外的工作。

您的代码还有很大的改进空间,包括正确使用内置函数和消除不必要的计数器:

City

答案 2 :(得分:0)

应为{{1}}

您需要做的是传递需要弹出的索引的整数值,而不是传递列表。

答案 3 :(得分:0)

试试这个

numbers = []
index = 0
total = 0

k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()

for x in range (int(k)):
    number = input("Enter a number." + "\n").strip()
    numbers.append(number)
    if number == '0':
        index = numbers.index(number)
        numbers.pop(index - 1)
        numbers.pop(index)

for y in range (len(numbers)):
    for item in numbers:
        total += int(item)


print(total)

答案 4 :(得分:0)

当你传递一个int

时,你正在传递一个列表
numbers.pop(index-1)

代码:

numbers = []
index = 0
total = 0

k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()

for x in range (int(k)):
    number = input("Enter a number." + "\n").strip()
    numbers.append(number)
    if number == '0':
        index = numbers.index(number)
        numbers.pop(index)
        numbers.pop(index-1)
for y in range (len(numbers)):
    for item in numbers:
        total += int(item)


print(total)

如果可以的话,这是一种更简单的方法

total = 0
last = 0
k = input("How many numbers would you like to enter? (1- 100000)" + "\n").strip()

for x in range (int(k)):
    print("Enter Number")
    temp = int(input())
    total += temp
    if temp == 0:
        total -= last
    else:
        last = temp
print(total)