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上で働かせます。 これから作るので、別稿でアップします(いつになるかな?)
お疲れさんでした。