概要
参考書に記載されている例題をほぼ引用したプログラムです。英単語を入力して、意味を答えるプログラムです。また知らない単語があれば記憶し、テキストファイルに書き込み、再度実行した際、分からなかった単語も回答できるといったものです。
問題
1、テキストファイルへの書き込みがされず、再度実行した際、記憶していない状態になる(実行中であれば、記憶されている。)
2、テキストファイルの1行目の「crucial 極めて重要な」が知らない単語として実行した際出力される。
補足
以前にはファイルでの問題もありました。[辞書オブジェクトが作れない!]
(https://teratail.com/questions/208019)
初歩的なミスの可能性もありますが、よろしくお願いします。
コード
python3
1import time 2 3words = {} 4 5 6def read(): 7 global words 8 9 with open('data/English_words.txt', 'r', encoding='utf_8' 10 ) as file: 11 lines = file.readlines() 12 13 new_lines = [] 14 for line in lines: 15 line = line.rstrip('\n') 16 17 if line != '': 18 new_lines.append(line) 19 20 separate = [] 21 22 for line in new_lines: 23 sp = line.split('\t') 24 separate.append(sp) 25 words = dict(separate) 26 27#ここまでは正常に動作しています。 28#====================================================================== 29 30def study(): 31 write_lines = [] 32 33 for key, val in words.items(): 34 write_lines.append(key + '\t' + val + '\n') 35 36 write_lines.sort() 37 38 with open('data/English_words.txt', 'w', encoding='utf_8' 39 ) as f: 40 f.writelines(write_lines) 41 42 43if __name__ == '__main__': 44 45 read() 46 print('単語の意味を回答します。') 47 48 while True: 49 50 word = input('英単語を入力してください-->') 51 52 if word == 'OK': 53 study() 54 print('ありがとうございました。') 55 break 56 57 elif word in words: 58 print('「' + words[word] + '」という意味です') 59 else: 60 print('理解できませんでした。新たな単語の場合、意味を入力してください。') 61 meaning = input('意味を入力してください-->') 62 while not meaning: 63 meaning = input('意味を入力してください-->') 64 words[word] = meaning 65 print('記憶中です。お待ちください。') 66 time.sleep(3) 67 68
テキストファイル(English_words.txt)
txt
1crucial 極めて重要な 2subsequent その後の 3devise 考察する 4strain 負担 5distinct 明確な 6incorporate 取り入れる 7eliminate 排除する 8privilege 特権 9retain 記憶する 10seize 掴む 11perceive 知覚する 12prominent 著名な 13integrate 一体化する 14anticipate 予想する 15disturb 邪魔する 16respective それぞれ 17perspective 観点 18magnificent 壮大な
試したところ問題なく実行できました。
> テキストファイルの1行目の「crucial 極めて重要な」が知らない単語として実行した際出力される。
この行、係り受けが紛らわしい上に、「具体的に何をしたら」「具体的にどう出力されたのか」が不明です。
質問するときのヒントを上から下まで全部読んだ方がいいと思います。 https://teratail.com/help/question-tips#questionTips3-4-1
ちなみに、私も問題なく実行できていると思います。書いているファイルと実行しているファイルが違う可能性はありませんか。
ご指摘ありがとうございます。
回答1件
あなたの回答
tips
プレビュー