前提・実現したいこと
ここに質問の内容を詳しく書いてください。
いちばんやさしいpythonの教本と言う参考書を使い辞書とファイル入出力を使ったプログラムの作成。
ターミナルでtype evaluation.txtを実装中に以下のエラーメッセージが発生しました。
参考書だと
user_name@MacBook-Pro yasashiipython % type evaluation.txt [Takanori_Suzuki] total: 269, evaluation: Excellent! [Takayuki_Shimizukiwa] total: 256, evaluation: Excellent! [Mitsuki_Sugiya] total: 231, evaluation: Good!
となるはずだったのです。
これはPythonのエラーではなく、使ってるMacの問題だそうです。
発生している問題・エラーメッセージ
user_name@MacBook-Pro yasashiipython % type evaluation.txt evaluation.txt not found
該当のソースコード
python
1ファイル名 point.txt 2Takanori_Suzuki:100,88,81 3Takayuki_Shimizukiwa:77,94,85 4Mitsuki_Sugiya:80,52,99 5 6ファイル名 05_file.py 7open_file = open('point.txt') 8raw_data = open_file.read() 9open_file.close() 10point_data = raw_data.splitlines() 11 12point_dict = {} 13for line in point_data: 14 student_name, points_str = line.split(':') 15 point_dict[student_name] = points_str 16 17score_dict = {} 18for student_name in point_dict: 19 point_list = point_dict[student_name].split(',') 20 subject_number = len(point_list) 21 total = 0 22 for point in point_list: 23 total = total + int(point) 24 average = total / subject_number 25 score_dict[student_name] = (total, average, subject_number) 26 27evaluation_dict = {} 28for student_name in score_dict: 29 score_data = score_dict[student_name] 30 total = score_data[0] 31 average = score_data[1] 32 subject_number = score_data[2] 33 34 excellent = subject_number * 100 * 0.8 35 good = subject_number * 100 * 0.65 36 if total >= excellent: 37 evaluation = 'Excellent!' 38 elif total >= good: 39 evaluation = 'Good!' 40 else: 41 evaluation = 'Bad!' 42 evaluation_dict[student_name] = evaluation 43 44file_name = 'evaluation.txt' 45output_file = open(file_name, 'w') 46for student_name in score_dict: 47 score_data = score_dict[student_name] 48 total = score_data[0] 49 50 evaluation = evaluation_dict[student_name] 51 52 text = '[{}] total: {}, evaluation: {}\n'.format(student_name, total, evaluation) 53 output_file.write(text) 54 55output_file.close() 56print('評価結果を{}に出力しました'.format(file_name)) 57 58ファイル名 evaluation.txt 59[Takanori_Suzuki] total: 269, evaluation: Excellent! 60[Takayuki_Shimizukiwa] total: 256, evaluation: Excellent! 61[Mitsuki_Sugiya] total: 231, evaluation: Good!
試したこと
print関数でevaluation.txtの原因を試したら、
File "evaluation.txt", line 1 [Takanori_Suzuki] total: 269, evaluation: Excellent! ^ SyntaxError: invalid syntax
となり変数textを見直しましたがどこが原因なのかわかりませんでした。
補足情報(FW/ツールのバージョンなど)
Python3.8.3/Atom/Kite/macOS Catalina
回答2件
あなたの回答
tips
プレビュー