IDLEを使用
目的
words.txtの中からそれぞれのアルファベットから始まる言葉の数をカウントしてprintし、最後に一番多いアルファベットをもう一度printする(英語を無理やり翻訳したので間違っていたらすいません)
python
1words = open('words.txt','r') 2letters = ['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'] 3x = 0 4cnt = 0 5num = 0 6y = 0 7for w in words: 8 l = letters[x] 9 w = w.lower() 10 11 if w[0] == l: 12 cnt += 1 13 else: 14 print(letters[x],':',cnt) 15 if num < cnt: 16 num = cnt 17 cnt = 0 18 y = letters[x] 19 x += 1 20 else: 21 cnt = 0 22 x += 1 23print(y,':',num) 24
試したこと
学校の授業でやったものです。
今まで習ったものを使って作っていて、コードは先生に確認したのであってると思います。
しかし、実行した時にzの結果だけが表示されずに、yで止まってしまい、最後のprintが実行されてしまいます。エラーの表示はありません。先生も原因はわからないと言っていました。友達も同じ状況になっているので、自分だけではないと思います。他のテキストエディタ(Atom, Xcord)も試しました。
解決法と原因を知りたいです。
使ったファイル
追記:
’他のユーザからのアドバイスにより追加検証’
listの後ろの部分を抜いてやると、 ’l = letters[x] IndexError: list index out of range’ というエラーが表示され、前の部分を抜いてやると、結果が全て’0’で表示され、前者と同じエラーが出ました。
回答2件
あなたの回答
tips
プレビュー