ど文系の中学校英語教員がプログラミング言語Pythonを学んでみた 20日目 ファイルの読み書きの巻

Wednesday, 18 March 2020

プログラミングとPython

 こんにちは、まさです 。

 Pythonの学習も、20日間達成しました!何事にもいえることですが、20日間続けるというのは、習慣化させる最低限の目安のように思います。ただPython学習が中学校英語教員をやっている私にいかに役立つのかはまだ具体的に見えていません。ここまででPython学習のメリットをあげるなら、プログラミングがどういうものかその一端を知ることができる、程度の感じでしょうか。すでにプログラミングが学校のカリキュラムに組み込まれていますから、これからの生徒らはそれが必須知識になるわけで、教員として彼らがどういうことを学んでいるのかを知るのはまず意味があることだと思います。

 それでもそんな少ないメリットでなぜ学習を続けているのか、思いつく限り2つあります。1つはPythonの可能性の大きさです。Pythonのモジュールの数は多くて、さらに今でもその数は増えているということなので、今後、仕事の中でこれを自動化させたいなと思った時に、それができればいいですし、その技術によって学校全体の業務の効率化に貢献できれば嬉しいです。まあ、今の所は実用性を考えつつも、Pythonとはどんなものか、それを知るための学習期間です。もう1つは、普遍的な学ぶ楽しさを感じられるからです。1つ1つのルールを学びその知識を積み重ねていってさらに優れたものを創る、この感覚がいいですね。

 さて、前置きが長引きましたが、今日は『退屈なことはPythonにやらせよう』第8章「ファイルの読み書き」に入ります。

➤カレントワークングディレクトリ(cwd)は、os.cwd()関数で文字列として取得
でき、os.chdir関数で変更できる。

➤新しいフォルダを作るときはos.makedirs()関数を使う。
開くのがopen()関数、読み込みがread()メソッド、書き込みはopen( ~ , 'w' )のようにopen()関数の第2引数に'w'を入れて、その後write()メソッドを使う。


➤Pythonで変数を保存するには、shelveモジュールが適当。


➤「プロジェクト:ランダムな問題集ファイルを作成する」で簡単な単語テストを3種類作ってみました。下がコードです。
タイトル
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import random
new_words = { 'character' : '文字', 'checkbox' : 'チェックボックス', 'choice' : '選択', 'cloud' : 'クラウド', 'cluster' : 'クラスター' , 'choose' : '選択する', 'correct' : '正しい' }
 
for quiz_num in range(3):
 quiz_file = open( 'new_words_quiz{}.txt'. format(quiz_num + 1), 'w' )
 answer_key_file = open('new_words_quiz_answers{}.txt'. format(quiz_num + 1), 'w' )
 
 quiz_file.write('名前: \n\n 日付: \n\n学期:\n\n' )
 quiz_file.write((' ' * 20) + '新出単語クイズ(問題番号{})'. format(quiz_num + 1))
 quiz_file.write('\n\n')
  
 english = list(new_words.keys())
 random.shuffle(english)
 
 for question_num in range(len(english)):
   
  correct_answer = new_words[english[question_num]]
  wrong_answers = list(new_words.values())
  del wrong_answers[wrong_answers.index(correct_answer)]
  wrong_answers = random.sample(wrong_answers, 3)
  answer_options = wrong_answers + [correct_answer]
  random.shuffle(answer_options)
  
  quiz_file.write('{}.{}の日本語訳は?\n'. format(question_num +1, english[question_num]))
  for i in range(4):
   quiz_file.write('{}. {}\n'. format('ABCD' [i], answer_options[i]))
   
  quiz_file.write('\n')
   
  answer_key_file.write('{}.{}\n'.format(question_num +1, 'ABCD'[answer_options.index(correct_answer)]))
 
 quiz_file.close()
 answer_key_file.close()

で、これをPythonで実行すると、3パターンの問題がtxtファイルでできあがるわけです。突然デスクトップにtxtファイルが出現しました。
 














これはなかなか便利ですね。英単語テストで前年度のテストを使い回すのにいいかもです。