Odd and Unexpected "IndexError: pop index out of range"

Odd and Unexpected "IndexError: pop index out of range"

我正在尝试在列表中附加 7 个数字,然后每隔一个数字乘以 3(从 1 开始),然后将其放回列表中。出于某种原因,数字“1234567”工作正常并且符合预期。但是,当使用数字 '1324562' 时,它 returns 和数字 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)

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

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]