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 に答える