我试图在列表中追加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)
答案 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]