奇数和意外" IndexError:pop index超出范围"

时间:2016-11-21 09:48:45

标签: python index-error

我试图在列表中追加7个数字,并将每隔一个数字加3(从1开始),然后将其放回列表中。由于某种原因,数字' 1234567'工作正常,预期。但是,当使用数字' 1324562'它返回数字3'上的IndexError和。

代码:

number = "1324562"
digits = []
old_list = []
total = 0

for num in number:
    num = int(num)
    digits.append(num)
    old_list.append(num)
    if digits.index(num) % 2 == 0:
        try:
            digits.insert(digits.pop(num-1), num * 3)
        except IndexError:
            print("*INCOHERENT SWEARING*")

for num in digits:
    total += num

print(digits, total)

1 个答案:

答案 0 :(得分:1)

诀窍是将索引与内容分开 - 它们不相关。以下是我的解决方案:

number = "1324562"
digits = []

# enumerate returns the index number(i) and the item(n) as a tuple.
# A string is a sequence, so we can iterate through it
for i, n in enumerate(number):
    n = int(n)
    if i % 2 != 0:
        n *= 3
    digits.append(n)

print(digits)

给出:

[1, 9, 2, 12, 5, 18, 2]

如果您希望将原始字符串作为列表(您的代码中包含变量old_list),那么您可以使用以下代码创建:

old_list = [int(n) for n in number]