本学期我有7个不同的班级,总共309名学生。我应该每周给他们做作业。我使用了一个多选标记程序Formreturn(我强烈建议这样做),但是即使如此,对于这么多的学生,每周的打印量还是太多!保存树木,节省纸张!
Python来解救! (尽管我不是计算机人。)
我编写了2个例程,一个例程收集电子邮件文本,另一个例程将数据写入excel结果文件。他们在我的测试运行中工作。
有时候,需要2个答案:A和B,没问题,只需写AB。
有时,A或B是正确的。 (Formreturn答案键只写A | B)
给出这种答案文本:数字,名称,答案,答案,答案...
1825010101,徐豆豆,A,B,C,D,E,F,G,H,I,J
以及这种答案键:填充符,填充符,正确答案,正确答案,... (填充符仅用于保持循环数相等)
p,p,A,B,C,D,E,F,G,H,I,J
假设A可以是A或B。
问题:您能看到解决该问题的任何方法吗?
我将暂时避免这种情况。
执行检查的代码是:
studentScores = {}
# now check the answers
for i in range(0, len(tidyDataAsList)):
count = 0
studentNumber = tidyDataAsList[i][0]
print('student number is ' + studentNumber)
for j in range(2, len(tidyDataAsList[i])):
print('Student answer is ' + tidyDataAsList[i][j])
print('Correct answer is ' + tidyanswerDataList[j])
if tidyDataAsList[i][j] == tidyanswerDataList[j]:
count += 1
print('count is ' + str(count))
studentScores[studentNumber] = count
然后只需将字典值写入excel。 (我可以解决这个问题。)
感谢任何提示!
答案 0 :(得分:2)
如果答案键说答案为A|B
,则可以执行以下操作:
allCorrect = tidyanswerDataList[j].split('|')
for correct in allCorrect:
if tidyDataAsList[i][j] == correct:
# usual code for a correct answer
break
或更简洁地说:
if tidyDataAsList[i][j] in tidyanswerDataList[j].split('|')
# usual code for a correct answer
break
如果答案键中没有|
,则结果将与原始代码相同(因为split('|')
将返回整个字符串)。
答案 1 :(得分:0)
一切正常时,我总是感到惊讶!我从没想过我能使它正常工作!
|代表OR
correctAnswers = ['a | b | c','n | j','s','w','e','r']
myAnswers1 = ['c','j','s','w','e','r']
for i in range(0, len(correctAnswers)):
if myAnswers1[i] in correctAnswers[i].split('|'):
count +=1
print('Correct answer is ' + correctAnswers[i])
print('My answer was ' + myAnswers1[i])
print('Count is ' + str(count))
正确答案是a | b | c
我的答案是c
数是1
正确答案是n | j
我的答案是j
数是2
正确答案是s
我的答案是s
数是3
正确答案是
我的答案是w
数是4
正确答案是e
我的答案是e
数是5
正确答案是r
我的答案是r
数是6