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