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別館
1年間のまとめ ③

Pythonの学習を初めてから約1年が過ぎました。 何もないところから始めたので、遅々として進歩しま …

Python別館
Pythonファイルをexe化する ⑤

Pythonンプログラムを作っても、他人に渡す時はexeファイルにしないといけません。コマンドプロン …

Python別館
うるう年を計算する ③

先にカレンダー作成をしましたが、来年はオリンピックの年でまた閏年でもあります。閏年とは、・西暦が4で …