2016-11-21 6 views
0

リストに7つの数字を追加しようとしていますが、1つおきに3つずつ(1から始まります)なんらかの理由で、数字「1234567」はうまく動作し、予想されます。しかし、数字「1324562」を使用すると、数字3 'にIndexErrorが返されます。奇数と予期しない "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) 
+2

これは「無料のコードをデバッグする」ではありません。コードをステップバイステップでデバッグし、問題のより正確な説明に戻ってください(あなたがそれまでにそれを見つけていない場合)。 –

+3

3に達するとnum-1 = 2 - しかしdigits []には1と3だけが含まれます。popは指定されたインデックスの値を返します。この場合、数字[2]は存在しません。 –

答えて

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] 
関連する問題