前提・実現したいこと
ここに質問の内容を詳しく書いてください。
Pythonで辞書とファイル入出力を使ったプログラムを作成しています
ターミナルで結果を出力したところ以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ raceback(most recent call last): evaluation = evlution_dict[sutudent_name] KeyError: 'Takanori_Suzuki'
該当のソースコード
Python
1ソースコード 2ファイル名point.txt 3Takanori_Suzuki:100,88,81 4Takayuki_Shimizukiwa:77,94,85 5Mitsuki_Sugiya:80,52,99 6 7ファイル名05_file.py 8open_file = open('point.txt') 9raw_data = open_file.read() 10open_file.close() 11point_data = raw_data.splitlines() 12 13point_dict = {} 14for line in point_data: 15 student_name, points_str = line.split(':') 16 point_dict[student_name] = points_str 17 18score_dict = {} 19for student_name in point_dict: 20 point_list = point_dict[student_name].split(',') 21 subject_number = len(point_list) 22 total = 0 23 for point in point_list: 24 total = total + int(point) 25 average = total / subject_number 26 score_dict[student_name] = (total, average, subject_number) 27 28evaluation_dict = {} 29for student_name in score_dict: 30 score_data = score_dict[student_name] 31 total = score_data[0] 32 average = score_data[1] 33 subject_number = score_data[2] 34 35excellent = subject_number * 100 * 0.8 36good = subject_number * 100 * 0.65 37if total >= excellent: 38 evaluation = 'Excellent!' 39elif total >= good: 40 evaluation = 'Good!' 41else: 42 evaluation = 'Bad!' 43evaluation_dict[student_name] = evaluation 44 45file_name ='evaluation.txt' 46output_file = open(file_name, 'w') 47for student_name in score_dict: 48 score_data = score_dict[student_name] 49 total = score_data[0] 50 51 evaluation = evaluation_dict[student_name] 52 53 text = '[{}] total: {}, evaluation: {}\n'.format(student_name, total, evaluation) 54 output_file.write(text) 55 56output_file.close() 57print('評価結果を{}に出力しました。'.format(file_name))
試したこと
参考書と再度確認し間違っているところがない確認。
補足情報(FW/ツールのバージョンなど)
Python3.8.3/Atom/Kite
###ここにより詳細な情報を記載してください。
いちばんやさしいpythonの教本を使っています。
また、まだ始めたばかりなので分からないことが多いです。
回答1件
あなたの回答
tips
プレビュー