コロナウイルスのお陰で余り出て歩けないので、どうしてもパソコンの前に座る時間が多くなります。
そこで忘れやすい花の名前、名作の主人公、ストリートスナップ写真の撮り方とかとか何でもいいので、Q&A形式にして記憶喪失に備えてみましょう。
① 雑学出題を作る
構成は次のようにしたいと思います。
・Q&Aはスクリプト(文字のみ)で作る
・最初は問題・回答を全てcode中に書く
・問題数が増えてきたら、text fileを作り読み込ませる
・4択にしようと思ったが、誤回答を覚えてしまいそうなので出題–>回答という段取りにする
・問題が増えるまでは、ジャンル別にせずごった煮の感じで出題する
② 問題を出す辞書を作成する
print(“日本の初代から十代迄の天皇名を言いなさい”)
input(“Enter for Answer”)
words = [‘神武(じんむ)’,’綏靖(すいぜい)’,’安寧(あんねい)’,’懿徳(いとく)’,’孝昭(こうしょう)’,
’考案(こうあん)’, ‘孝霊(こうれい)’, ‘孝元(こうげん)’, ‘開化(かいか)’, ‘崇神(すじん)’]
print(words)
runすると、[‘神武(じんむ)’,’綏靖(すいぜい)’,’安寧(あんねい)’,’懿徳(いとく)’,’孝昭(こうしょう)’,
’考案(こうあん)’, ‘孝霊(こうれい)’, ‘孝元(こうげん)’, ‘開化(かいか)’, ‘崇神(すじん)’] と表示される。
これでは読みにくいので、天皇名は初代から順に縦に表示しましょう。
③ for~in構文を使って表示させましょう
words = [‘神武(じんむ)’,’綏靖(すいぜい)’,’安寧(あんねい)’,’懿徳(いとく)’,’孝昭(こうしょう)’,
’考案(こうあん)’, ‘孝霊(こうれい)’, ‘孝元(こうげん)’, ‘開化(かいか)’, ‘崇神(すじん)’]
for word in words:
print(word)
—>神武(じんむ)
綏靖(すいぜい)
安寧(あんねい)
懿徳(いとく)
孝昭(こうしょう)
考案(こうあん)
孝霊(こうれい)
孝元(こうげん)
開化(かいか)
崇神(すじん)
既出のQ&Aにfor~inの使い方が有りますので、それを使います。 このやり方はdefaultみたいなものです。
④ 乱数で出題する
英単語の学習をするのに使える。 単語は文章のなかで覚えるのがbestですが、
Pythonの学習ですので、そこまではやらず単語と意味だけにします。
import random
# Pythonの辞書型で、’英単語’: ‘答え’ という形で表示する
words = {
‘variegated’: ‘まだらの、黄疸にかかった’,
‘wheedle’: ‘〔口車に乗せて人から〕だまし取る’,
‘puissant media’: ‘活性媒体’,
‘fallacious’: ‘虚偽の,当てにならない’,
‘oaf’: ‘〔特に男性の〕武骨者,うすのろ, まぬけ’,
}
while True: # 辞書リストからキー(英単語)を乱数で選び意味をランダムに取り出す
word = random.choice(list(words.keys()))
print(‘問題 :’ + word)
try:
print(‘エンターで答えを表示する(CTRL+Cで終了)’)
input() # ユーザーの入力待ち
except KeyboardInterrupt: # CTRL+Cが押されたらループ終了
break
else:
print(‘答え: ‘ + words[word] + ‘\n’)
注:
・毎回のことですが、indent(字下げ)はeditorで修正必要です。
・理解し易いように言いますと、辞書リストはwordsと複数形で書き、
取り出した要素はwordと単数で書きます。 これで関連性が理解できるのでは?
runすると次のようにスクリプトでQ&Aが表示されます。
問題 : puissant media
エンターで答えを表示する(CTRL+Cで終了)
答え: 活性媒体
問題 : oaf
エンターで答えを表示する(CTRL+Cで終了)
答え: 〔特に男性の〕武骨者,うすのろ, まぬけ
問題 : fallacious
エンターで答えを表示する(CTRL+Cで終了)
答え: 虚偽の,当てにならない
スクリプトだと余り面白みがないので、次はフォームで可視化しましょう。
⑤ formを作る
#プログラムのコメントの印
import tkinter as tk #Python用のform関数を取りこんでおく。tkinterと書くのは面倒なのでtkとする
import random #乱数関数をimportしておく
root=tk.Tk()
root.title(‘雑学の勧め’)
root.geometry(‘300×250’)
lbl_1 = tk.Label(text=’問題’) #ラベル表示
lbl_1.place(x=10, y=30) #横位置、縦位置を指定
lbl_2 = tk.Label(text=’回答’)
lbl_2.place(x=10, y=80)
txt_1 = tk.Entry(width=30) #テキスト枠の指定
txt_1.place(x=60,y=30)
txt_2 = tk.Entry(width=30)
txt_2.place(x=60,y=80)
btn_1 = tk.Button(root, text=’開始/次へ’) #コマンドの指定
btn_1.place(x=50, y=150)
btn_2 = tk.Button(root, text=’終了’)
btn_2.place(x=180, y=150)
root.mainloop() #ここで終わり
これでこういうformが出来る。
「雑学博士」のこの稿は「有名和歌集」へ続きます。
Thanks for visiting here.