需要帮助从文本文件导入测验

时间:2017-11-22 06:58:42

标签: python python-3.x

我需要有关使用外部文本文件测验的帮助,但是下面的代码如下,它只为文本文件中的最后一个问题打印“正确”,所有其他问题只是表示为“不正确”,即使给出了正确的答案。细节[0]是带有问题和详细信息的列[3]是具有正确答案的列。我该如何处理?

文本文件中有什么:

What is 1+1,1,2,2
What is 2+2,4,1,4

以下代码:

def quiz():

    file = open("quiz.txt","r")
    for line in file:
       detail = line.split(",")
       print(detail[0])
       select = input("Select 1 or 2: ")
       if select == detail[3]:
          print("Correct")
       else:
          print("Incorrect")
quiz()

3 个答案:

答案 0 :(得分:1)

!在/ usr / bin中/ python3

def quiz():

file = open("quiz.txt","r")
for line in file:
    detail = line.split(",")
    print(detail[0])
    detail[3] = detail[3].strip('\n')
    select = input("Select 1 or 2: ")
    if select == (detail[3]):
        print("Correct")
    else:
        print("Incorrect")

测验()

你在字符串的末尾有一个\ n并且没有匹配!

答案 1 :(得分:0)

没有几行“quiz.txt”,很难确定,但这里有一个猜测:你的输入是一个带回车分隔线的csv文件,但最后一行没有回车符。 / p>

如果您打印细节(即插入'打印(细节)',您可以快速确定是否属于这种情况。

编辑:

在看到您的数据后,我发现了一个额外的问题:您将'select'与'detail'的最后一个元素进行比较。你想要做的是将'detail [select]'与'detail [3]'进行比较。

我测试了以下内容,它似乎做了你想做的事:

file = open("quiz.txt","r")
for line in file:
    detail = line.split(",")
    select = input("Select 1 or 2: ")
    if detail[select] == detail[3].strip():
        print("Correct")
    else:
        print("Incorrect")

将来当您遇到意外行为时,请尝试打印您正在比较的值,看看它们是您所期望的。插入'print(detail)'和'print(select)'语句会使你的问题立即变得明显。

答案 2 :(得分:0)

输入的结果是int,而line.split的结果是一个字符串。 你进行了那次比较:'2'==2返回False