Q & Aアプリを作る

Pythonで英検1-2級程度の出題アプリを作りました。

① 英単語試験2.txtファイルを作る。

・まず下記のような単語ファイルを作ります。
・英単語と和文の間は、”全角スペース”で区切ってください。 この全角スペースで英文と和文を区別してます。
・取り合えず例として、下のように18個の英単語を作りました。

————-
gaunt やせた
ransack くまなく捜す
clarion 明るく響き渡る
chasm 深い割目
diffidence 自信のなさ,内気,はにかみ,遠慮
desolation 荒廃させること(荒涼)
actuarial 保険計理(士)の
anathema キリスト教破門
annihilate 全滅,絶滅させる
antic 滑稽な態度,ピエロ,ふざけた
append (札などを)つける(attach)
arbiter 最高の権威
arbitrary 任意の,勝手な
beseech 嘆願する
betrothal 婚約
blare (らっぱ・ラジオなどが)鳴り響く,大声で叫ぶ
appal ぞっとした
capsize 船・ボートなどが転覆する・させる
carmine 洋紅色の
chasm (岩・地面などの深い割目

——————

② プログラムは以下

プログラムの概要は、次のようなものです。
・テキストファイルを読み込む
・18個の乱数に応じて、英単語とその日本語訳を変数の格納する
・キボードのenterを押すと、一行ずつ表示される
・exit入力で中止する

————————-
# 英単語試験2.py
# txt読み出して、乱数で英語と日本語を表示する
# 半角スペ-スで英語と日本語を分けているのでそれを厳守のこと

import random

def read_words():
  file = open(“英単語試験2.txt”)
  lines = file.readlines()
  file.close()

  e_words = []
  j_words = []

  for line in lines:
    line = line.rstrip(“\n”)
    name = line.rsplit(“ ”)
    if len(name) == 2:
      e_words.append(name[0])
      j_words.append(name[1])
    return [e_words, j_words]

def show_data(num, e_words, j_words):
  e_word = e_words[num]
  j_word = j_words[num]
  print(e_word + “ ” + j_word)

words = read_words()
e_words = words[0]
j_words = words[1]

x = input(“Enter exit to quit”)
while True:
  x = input()
  if x == ‘exit’:
    break

  num = random.randrange(0, 18)
  show_data(num, e_words, j_words)

——————————–

runすると、

Enter exit to quit

beseech 嘆願する

beseech 嘆願する

chasm 深い割目

desolation 荒廃させること(荒涼)

appal ぞっとした

clarion 明るく響き渡る

exitと入力するまで、延々とこれが続きます。


・インデントは変数の使える範囲(スコープといいます)を規定していますので、プログラムのルール第一号という感じです。
・一回のインデントは半数スペース4個分ですが、全角2回でcodingするとエラーとなります。

 
——————————–

 

③ 英単語自動出題ソフト

・他に出題用英単語100個のtxtファイルを作って時々遊んでおります。

・Enterでスタートし乱数で英単語が表示されます。

・1秒後にその訳が表示されます。 1秒では短い場合はsleep(5)などと5秒にして下さい。

———————-


# 英単語試験100.py

import random
from time import sleep

def read_words():
  file = open(“英単語試験100.txt”)
  lines = file.readlines()
  file.close()

  e_words = []
  j_words = []

  for line in lines:
    line = line.rstrip(“\n”)
    name = line.rsplit(“ ”)
    if len(name) == 2:
      e_words.append(name[0])
      j_words.append(name[1])
    return [e_words, j_words]

def show_data(num, e_words, j_words):
  e_word = e_words[num]
  j_word = j_words[num]
  print(e_word, end=(”)) #英単語出題、改行なし
  sleep(1) #1秒停止

  print(” : ” + j_word) #日本語訳表示

words = read_words()
e_words = words[0]
j_words = words[1]

x = input(“Enter exit to quit”)
while True:
  x = input()
  if x == ‘exit’:
    break

  num = random.randrange(0, 100)
  show_data(num, e_words, j_words)

——————————–

以上

 

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

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

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

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

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

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