65241


入力された文字列の中で、各アルファベットが計何回使われているか調べるコードなのですが

[code]

    sen = str(input())
    sen_lower = sen.lower()
    alpha = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
    alpha_num = [[0] for l in range(len(alpha))]
    print(alpha_num)
    for i in range(len(alpha)):
      for k in range(len(sen_lower)):
        if sen_lower[k] == alpha[i]:
          alpha_num[i] += 1
    print(alpha_num)
    
[/code]

以上のコードをもって、どのアルファベットがどれだけ使われているかを一覧にしたlistをprintしようとすると、

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-14-7e22160a987a> in <module>()
          7   for k in range(len(sen_lower)):
          8     if sen_lower[k] == alpha[i]:
    ----> 9       alpha_num[i] += 1
         10 print(alpha_num)
         11 
    
    TypeError: 'int' object is not iterable
    
[/code]

とエラーが出てしまいます。  
これに関して、どなたかご説明をして頂けると幸いです。

よろしくお願い致します。


CC BY-SA 4.0
2020-03-30T13:19:07.233
65240
2020-03-30T13:40:36.600
36869
question
python python3
int object is not iterableの原因と発生機序が分かりません


`alpha_num`の定義は「リストのリスト」になっています。（このことは直後の`print`による表示からもわかると思います）

結果として、9行目のコードはリストに整数値を足すという意味になるため、そのようなエラーが出ます。

多分あなたがやりたかったのは次のように`alpha_num`を定義することではないでしょうか？

[code]

    alpha_num = [0 for l in range(len(alpha))]
    
[/code]


CC BY-SA 4.0
2020-03-30T13:40:36.600
65241
2020-03-30T13:40:36.600
13199
65240
answer