雑学博士になろう

コロナウイルスのお陰で余り出て歩けないので、どうしてもパソコンの前に座る時間が多くなります。

そこで忘れやすい花の名前、名作の主人公、ストリートスナップ写真の撮り方とかとか何でもいいので、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.

 

 

Python別館
ブラックジャックを作るー1~5

初心者の僕には難しいですが、ラスベガスで負け続けたカードゲームの「Black Jack」を作ってみま …

Python別館
Python別館 目次

・Pythonで作成したアプリ関連の記事は「Python別館」に、・widgetやその使用方法・それ …

Python別館
脳トレの勧め 2/2

前回は、辞書に三つの要素を入れる術が分からなかったので、策を弄して取敢えずは動くように出来ました。で …