在选择题标记中如何处理“ A或B”?

时间:2018-10-14 01:57:52

标签: python

本学期我有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。 (我可以解决这个问题。)

感谢任何提示!

2 个答案:

答案 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