0

我正在尝试在列表中附加 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)
4

1 回答 1

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]
于 2016-11-21T10:14:51.173 回答