0

我想编程接受用户输入line:,并检查每一行是否正确speech.txt。如果该行与文件中的行正确,则应继续并再次询问输入再次line:检查该行,如果该行错误则打印正确的行,如果用户键入LINE!则从文件中打印正确的行,并在行GOOD完成时打印。所以 FAR 我已经制作了这个程序,但是即使文件中的行已经完成,最后的一些循环也是无用的

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循环打算做什么,但它在你的代码中根本没有做任何事情,而且你不需要两个循环来遍历一个文件一次。

于 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.

在您的情况下,我会考虑考虑循环的逻辑。您似乎不必要地嵌套了循环。通过文件的单个 for 循环就足够了。

于 2013-08-29T10:02:42.233 回答
0

要停止循环,您应该使用:Break.

于 2013-08-29T17:53:51.107 回答