我需要有关使用外部文本文件测验的帮助,但是下面的代码如下,它只为文本文件中的最后一个问题打印“正确”,所有其他问题只是表示为“不正确”,即使给出了正确的答案。细节[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()
答案 0 :(得分:1)
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