名俳句鑑賞ソフト

Pythonの練習に「名句鑑賞」ソフトを作ります。

 

順序は;

・ 10句の名俳句のtextファイルを作ります。

・ Pythonのcodeを書きます。

・ tkinterと言うGUI( Grafical User Interface)の上で働くようにします。

————————-

① 俳句1.txt作成 

赤い椿白い椿と落ちにけり 河東碧梧桐 春
秋深き隣は何をする人ぞ 松尾芭蕉 秋
赤とんぼ筑波に雲もなかりけり 正岡子規 秋
秋空を二つに断てり椎大樹 高浜虚子 秋
朝顔につるべとられてもらい水 加賀千代 秋
朝立や馬のかしらの天の川 内藤鳴雪 秋
荒海や佐渡に横とう天の川 松尾芭蕉 秋
海に出て木枯らし帰るところなし 山口誓子 冬
梅一輪一輪ほどの暖かさ 服部嵐雪 春
梅が香にのっと日の出る山路かな 松尾芭蕉 春

txtファイルの作り方:
・俳句、作者、季節で分けてますが、それらを要素と呼びます
・要素間を全角スペースで区切り、要素1、2、3と分けて読み出します

実際のfileは200句位あるのですが、ここでは説明上10句としました。

————————-

② 上記のtxtファイルを読み出すcode

#以下は説明用のコメントです

import random #乱数発生関数を呼び出す
from time import sleep #作者、季節を遅れて表示するためのタイマー

def read_words(): #txtファイルを読み出す関数を作る
 file = open(“俳句1.txt”) #上のtxtファイルをオープンする
 lines = file.readlines() #読み出してlinesに格納する 
 file.close() #読み出しを終了の宣言

 h_words = [] #俳句の空リストを作っておく
 a_words = [] # 作者の空リストを作っておく
 s_words = [] # 季節の空リストを作っておく

 for line in lines: #linesに格納されたデータをlineに格納する(forで繰り返す)
  #line = line.rstrip(“\n”) #有ってもなくても変化いみたい
  name = line.rsplit(“ ”) #データを全角スペ-スで分割し、nameに格納する
  if len(name) == 3: #nameの要素が3個なら次へ
   h_words.append(name[0]) #最初の要素をh_wordsへ入れる
   a_words.append(name[1]) #作者をa_wordsへ入れる
   s_words.append(name[2]) #季節をs_wordsへ入れる
  return [h_words, a_words, s_words] #データがなくなるまで繰り返す

ここまでで俳句、作者、季節がそれぞれの変数に格納されました。

本当に格納されたかどうか調べようとして、print(h_words)とやってみましたが、まだ呼び出す関数を作っていないので表示されません。

 

————————————-

 

③ 乱数に応じた要素を表示する関数を作る

def show_data(num, h_words, a_words, s_words):
 h_word = h_words[num] #俳句を表示する為にh_wordに格納
 a_word = a_words[num] #作者を表示する為にa_wordに格納
 s_word = s_words[num] #季節を表示する為にs_wordに格納
 print(h_word, end=”) #まず俳句だけを表示する

 sleep(1) # 1秒後に作者と季節を表示する
 print(” : ” + a_word + ” ” + s_word)

words = read_words()
h_words = words[0]
a_words = words[1]
s_words = words[2]

まだ表示はされません、何故なら乱数を発生させそれに合ったデータ行を呼び出す関数がまだ未完なのです。

 

④ 乱数に応じた要素を表示する関数へ飛ぶ


while True: #qが入力されるまで続く
 x = input() #returnで開始する
 if x == ‘q’: #qで終了する(breakがその役目)
  print(“quit”)
  break

 num = random.randrange(0, 9) #0~9の10個の乱数を発生する
 show_data(num, h_words, a_words, s_words) #乱数に応じた俳句、作者、季節を表示する関数show_data()へ飛ぶ

これをrunすると;

梅一輪一輪ほどの暖かさ : 服部嵐雪 春
荒海や佐渡に横とう天の川 : 松尾芭蕉 秋
朝立や馬のかしらの天の川 : 内藤鳴雪 秋
荒海や佐渡に横とう天の川 : 松尾芭蕉 秋
秋深き隣は何をする人ぞ : 松尾芭蕉 秋
荒海や佐渡に横とう天の川 : 松尾芭蕉 秋
赤い椿白い椿と落ちにけり : 河東碧梧桐 春
   ・・・・・・・・・・・
   ・・・・・・・・・・・
と続きます。

 

次は、これらをGUI上で働かせます。 これから作るので、別稿でアップします(いつになるかな?)

 

お疲れさんでした。

 

 

Python別館
被写体の明るさ(EV)計算機を作る ④

数年前にフォトマスター検定の受験用に、VisualBasicでEV計算機を作成したことが有りました。 …

Python別館
Python スクレイピング ①

スクレイピングでデータを効率的に活用すれば、業務を効率化できたり、生産性を高めたりといった効果が期待 …

Python別館
百人一首学習アプリ ー 完成編

一つの乱数を他の関数ででも使えるようにしましたので、全て欲しい処理が可能になりました。 ・まず最初に …