【问题标题】:Need help importing a quiz from a text file需要帮助从文本文件导入测验
【发布时间】:2018-12-17 18:37:08
【问题描述】:

我在使用外部文本文件中的测验时需要帮助,但使用下面的代码,它只为文本文件中的最后一个问题打印“正确”,所有其他问题都只是说“不正确”,即使当给出了正确答案。 Detail[0] 是包含问题的列,detail[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()

【问题讨论】:

  • 请提供完整的代码,这样这种问题对以后的任何人都有用。
  • 请显示您的文本文件的示例数据...
  • 这是完整的代码,我的文本文件的内容已经添加

标签: python python-3.x


【解决方案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 并且不匹配!

【讨论】:

  • 非常感谢!这似乎解决了问题。非常感谢您的帮助
【解决方案2】:

input 的结果是一个 int,而 line.splitis 的结果是一个字符串。 您正在进行比较:'2'==2 返回 False

【讨论】:

  • 那么我是否必须将其转换为 str(变量)?或者我该怎么做?
  • int('2') == 2 或 '2' == str(2)
【解决方案3】:

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

如果您打印详细信息(即插入“打印(详细信息)”,您可以快速确定是否是这种情况。

编辑:

查看您的数据后,我发现了另一个问题:您将“选择”与“详细信息”的最后一个元素进行比较。您要做的是将“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)' 语句会让您的问题立即显而易见。

【讨论】:

  • 它会为所有三个问题打印出['What is 1+1', '1', '2', '2\n']。我添加了另一个问题,看看它是否仍然只适用于最后一个问题,它只适用于最后一个问题
  • 非常感谢您的帮助!我也得到了另一个答案,但我会看看两者中哪个效果更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2017-02-09
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多