質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.61%

Pythonのプログラムの処理をリピートしたい。

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 438

kumasan2018

score 19

 実現したいこと

英単語の問題発生プログラムを作っています。 取敢えず英単語とその意味を乱数で表示させています。

単語.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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

回答 2

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 冬


実行例
イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/20 20:05

    katoyさん

    コピペだ動作しました。 これからcodeの意味など勉強します。

    有難うございました、大変助かりました。

    キャンセル

+1

num=random.randrange(0,6)
から
print(e_word + " " + j_word)

無限ループ(while True:)の中にいれる
かつ、
print(e_word + " " + j_word)
の後ろに入力待機
(@kumasan2018 さんが想定されているようにinput()でよいです)を
を追加する

でいかがでしょうか。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/19 20:32

    kfjtさん

    週末所用で出かけますので、test結果少し遅れますが迅速なこ回答有難うございます。

    なんか良い結果が出そうな予感がします。 Hi。

    キャンセル

  • 2018/10/20 20:08

    kfjtさん

    一寸時間が出来たので、検討しようとしましたら、katoyさんから完璧なcodeを頂きそれをtestしたら、完璧に動作しました。

    kfjtさんの言わんとしていたことと同じと推定致します。 お時間を撮らせましたが、言わんとしていることは理解できましたの勉強になりました。

    有難うございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る