如何在 python 中的 if 语句中回调文件



我正在尝试制作一个代码,从文件中获取一行并打印出来,然后您输入一个答案,如果它与另一行匹配,则说"正确"。 该部分正在工作,但是当我们到达第 4 个问题时,它只是不断重复,然后给出错误。在文本文件中,行由"/"分隔。

     def Q():
    a = 1
    b = 2
    while True:
        file = open("AA.txt", "r")
        for line in file:
            sec=line.split("/")
        print(sec[a])
        answer = input("Type your answer: ").strip()
        if answer == sec[b].strip() and b >8:
            print ("Correct!")
            a = a + 2
            b = b + 2
        elif answer == sec[b].strip() and b ==8:
                print ("Done.")
                break                
        else:
            print ("Wrong it's " + sec[b])
            a = a + 2
            b = b + 2
    file.close()
Q () 

这是文本文件:

斜杠分离东西./黑斯廷斯战役是什么时候? 1066, 1078 或 1088/1066/伦敦大火是什么时候? 1777 或 1666/1666/亨利八世有几个妻子? 8 或 6/6/华尔街崩盘是什么时候? 1929 或 1933/1929/

我很难在你的代码中找到错误。我想说的是,问题在于你写了一个while循环,并且必须包含一些令人困惑的控制机制,从而产生奇怪的结果。我认为你最好以一种外部循环只是迭代文本文件中的行的方式来编写代码 - 你很少会在 python 程序中看到 while 循环,原因很简单,它们很棘手,而 for 循环通常是你想做的无论如何。

所以,如果我正确理解了你的描述,这里的这段代码应该或多或少地完成这项工作,对吧?我假设一个文本文件,每行有一个问题,就像您指定的那样:

def ask_questions(filename):
  for line in open(filename, "r"):
    question, answer = line.strip().split("/")
    print(question)
    user_answer = input("Type your answer: ").strip()
    if user_answer == answer:
      print ("Correct!")
    else:
      print("Wrong, the correct answer is " + answer)

最新更新