0

ユーザー入力を受け取りline:、各行が正しいかどうかをチェックするプログラムを作成したいspeech.txt. 行がファイル内の行で正しい場合は、続行して入力を再度要求する必要がありますline:。行が間違っている場合は正しい行を印刷し、ユーザーが入力した場合はLINE!ファイルから正しい行を印刷GOODし、行が終了したら印刷します。そのため、私はこのプログラムを作成しましたが、ファイル内の行が終了しても、最後のいくつかのループは役に立ちません

f=open('speech.txt')
while True:
    userline=input("line: ")
    for line in f:
        line=line.strip()
        if line.lower() == userline.lower():
            userline=input("line: ")
        elif userline=="LINE!":
            print(line)
    print("Good!")
    break
4

4 に答える 4

2

私があなたの質問を正しく理解していれば、これはあなたが探しているものです:

try:
    _input = raw_input
except:
    _input = input

with open('a') as a:
    for i in a:
        line = i.rstrip('\n')
        while True:
            user = _input("enter line: ")
            if user == "LINE!":
                print('%s\n' % line)
                break
            if line == user:
                break
            print("No! Try again...")
    print("Good!")
于 2013-08-29T10:25:25.793 に答える
0

必要以上のループを使用しているように思えます。あなたの制約を正しく理解していれば、これが私が書く方法です。

with open('speech.txt') as f:
    for line in f:
        line = line
        userline = input("line: ")
        if userline == 'LINE!':
            print(line)
        elif userline.strip().lower() == line.strip().lower():
            continue # Correct, so go on to the next line of the file
        else:
            print("Nope! Correct was:")
            print(line)
    print('FINISHED') # I wouldn't use "GOOD" unless the user gets everything right!

ここでのトリックはcontinueステートメントです。ユーザーが正しかった場合、これはループの次の繰り返しにスキップします。ループから完全に抜け出すには (たとえば、ユーザーが行を間違えたときに単純に停止したい場合)、次のbreakステートメントを使用します。

while元のループが何を意図していたのかはわかりませんが、コードではまったく何もしていませんでした。ファイルを 1 回通過するためだけに 2 つのループは必要ありません。

于 2013-08-29T18:08:30.487 に答える
0

簡単な答えは次のとおりです。ループを停止するには、break ステートメントを使用します。

while True:
   q = input("What is your quest? ")
   if q == "To seek the holy grail":
       break
   print("That's not right, try again")
#Program continues.

あなたの場合、ループのロジックについて考えることを検討します。不必要にネストされたループがあるようです。ファイルを 1 回 for ループするだけで十分です。

于 2013-08-29T10:02:42.233 に答える
0

ループを停止するには、次を使用する必要がありますBreak

于 2013-08-29T17:53:51.107 に答える