python コードの謎
解決したいこと
なぜこうなってしまうのかわからない。
下のコードは文字列sの中にある数字の数を数えるコードです。
問題のコード
def calc(l, a):
b = l.count(a)
return b
s = "12333445667890"
i = 1
num = [0] * 10
num[0] = calc(s, '0')
num[1] = calc(s,'1')
num[2] = calc(s, '2')
num[3] = calc(s, '3')
num[4] = calc(s, '4')
num[5] = calc(s, '5')
num[6] = calc(s, '6')
num[7] = calc(s,'7')
num[8] = calc(s, '8')
num[9] = calc(s, '9')
# while i < 10:
# num[i] = calc(s, 'i')
# i += 1
print(num)
上のコードを実行すると
[1, 1, 1, 3, 2, 1, 2, 1, 1, 1]
と出力されます。
僕はnum[0]からnum[9]まで1行ずつ記入するのが面倒だったので、while文を使ってまとめてしまおうと考えました。
num[0] = calc(s, '0')
num[1] = calc(s,'1')
num[2] = calc(s, '2')
num[3] = calc(s, '3')
num[4] = calc(s, '4')
num[5] = calc(s, '5')
num[6] = calc(s, '6')
num[7] = calc(s,'7')
num[8] = calc(s, '8')
num[9] = calc(s, '9')
↓
while i < 10:
num[i] = calc(s, 'i')
i += 1
これで同じように実行すると
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
このように全て0と出力されてしまいます。
なぜこうなるのかわかりません。
0