For 循环中的最后一个元素未完全迭代
Last Element in For Loop Not Iterating Completely
我的一个作业有问题,我使用 for 循环比较两个列表,一个是答案键,另一个是学生答案列表,以产生一个分数,其中+4 表示正确的回答,-1 表示不正确的回答,0 表示省略的回答。它工作正常,直到它到达循环的最后一个元素。我知道程序是 "reading" 最后一个元素,因为我之前已经让它打印了它们,但它没有正确调整分数,实际上是减一分,不管答案如何。我不知道出了什么问题,尤其是因为这只是最后一部分。
这是我的代码的相关部分:
#As we go over each line, we add to the student counter to keep track of the number of students.
#We use the split function to turn each line of the file into a list that we can use.
for line in open_file:
students += 1
student_ans = line.split(",")
#The score tracker keeps track of total score.
score_tracker = 0
#This for loop iterates over each value in the list, comparing to the answer key.
for n in range(number_ans):
a = answerkey[n]
b = student_ans[n+1]
#A series of if/elif/else statements give and take points according to answers.
if a == b:
score_tracker += 4
elif b == "":
score_tracker += 0
else:
score_tracker -= 1
print(score_tracker)
如有任何帮助,我们将不胜感激。
在我和我的教授之间,我们已经弄清楚出了什么问题。结果文件的每一行中的最后一个元素包含“\n”以将其换行,我没想过要删除它,因为它并没有阻止代码打印出两个正确的答案,仅来自正确添加分数。 (计算机看到了D和Dn\,但在答案键上显示了D和D作为最终答案。
我想这对我来说的教训是总是看电脑看到的,这不一定是我看到的。
我的一个作业有问题,我使用 for 循环比较两个列表,一个是答案键,另一个是学生答案列表,以产生一个分数,其中+4 表示正确的回答,-1 表示不正确的回答,0 表示省略的回答。它工作正常,直到它到达循环的最后一个元素。我知道程序是 "reading" 最后一个元素,因为我之前已经让它打印了它们,但它没有正确调整分数,实际上是减一分,不管答案如何。我不知道出了什么问题,尤其是因为这只是最后一部分。
这是我的代码的相关部分:
#As we go over each line, we add to the student counter to keep track of the number of students.
#We use the split function to turn each line of the file into a list that we can use.
for line in open_file:
students += 1
student_ans = line.split(",")
#The score tracker keeps track of total score.
score_tracker = 0
#This for loop iterates over each value in the list, comparing to the answer key.
for n in range(number_ans):
a = answerkey[n]
b = student_ans[n+1]
#A series of if/elif/else statements give and take points according to answers.
if a == b:
score_tracker += 4
elif b == "":
score_tracker += 0
else:
score_tracker -= 1
print(score_tracker)
如有任何帮助,我们将不胜感激。
在我和我的教授之间,我们已经弄清楚出了什么问题。结果文件的每一行中的最后一个元素包含“\n”以将其换行,我没想过要删除它,因为它并没有阻止代码打印出两个正确的答案,仅来自正确添加分数。 (计算机看到了D和Dn\,但在答案键上显示了D和D作为最终答案。
我想这对我来说的教训是总是看电脑看到的,这不一定是我看到的。