Pythonのプログラムの処理をリピートしたい。
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 476
実現したいこと
英単語の問題発生プログラムを作っています。 取敢えず英単語とその意味を乱数で表示させています。
単語.txtを呼び込んで、Shellに表示させるところまで来ました。
発生している問題
知りたいのは、一度「英単語+意味」を表示させた後、再度プログラムを動作させないと(F5)次の「英単語+意味」が表示されないことです。
それを表示画面(今はPython3.7 Shell)上で、input()関数か何かでEnterとしたら次の「英単語+意味」が出てくるようにしたいのです。
shell上で”Enter for next word”と聞かれてますので、そこでエンターをしたら次の英単語が表示できるようにしたいのです。
お忙しい所お手数をお陰します。 宜しくお願い致します。
熊谷
該当のソースコード
import random
file = open("word.txt", "r", encoding="utf_8")
lines = file.readlines()
file.close()
e_word = []
j_word = []
for line in lines:
line = line.rstrip("\n")
name = line.rsplit(" ")
e_word.append(name[0])
j_word.append(name[1])
num=random.randrange(0,6)
print(num)
e_word = e_word[num]
j_word = j_word[num]
e_word = e_word[random.randrange(len(e_word))]
j_word = j_word[random.randrange(len(j_word))]
print(e_word + " " + j_word)
次が表示される結果です。
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
========= RESTART: J:\MyDocuments\Python\Tak Sample\Tak-word_gen2.py =========
1
ransack くまなく捜す
Enter for next word.
========= RESTART: J:\MyDocuments\Python\Tak Sample\Tak-word_gen2.py =========
4
diffidence 自信のなさ 内気 はにかみ 遠慮
Enter for next word.
========= RESTART: J:\MyDocuments\Python\Tak Sample\Tak-word_gen2.py =========
3
chasm 深い割目
Enter for next word.
試したこと
このcodeで動作はしております。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
ファイルの読み込み、 num 番目の情報の表示をメソッドにまとめ、
while True: で繰り返し処理をするようにしてみました。
import random
def read_words():
file = open("word.txt", "r", encoding="utf_8")
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]
while True:
x = input("Enter for next word.(終了するなら exit を入力)")
if x == 'exit':
break
num = random.randrange(0, 6)
print(num)
show_data(num, e_words, j_words)
words.txt
cat 猫
dog 犬
spring 春
summer 夏
autom 秋
winter 冬
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
num=random.randrange(0,6)
から
print(e_word + " " + j_word)
を
無限ループ(while True:
)の中にいれる
かつ、
print(e_word + " " + j_word)
の後ろに入力待機
(@kumasan2018 さんが想定されているようにinput()
でよいです)を
を追加する
でいかがでしょうか。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
LouiS0616
2018/10/19 17:43
コードブロックを利用して、質問を読みやすくしてください。https://teratail.storage.googleapis.com/uploads/contributed_images/56957fe805d9d7befa7dba6a98676d2b.gif