Python——随机⽣成测试试卷
假设语⽂⽼师给学⽣最近学习的古诗进⾏⼀次⼩测验,但是为了防⽌作弊,每个⼈的试卷出题顺序各不相同。程序:
创建20份不同的试卷
每份数据创建10个选择题,次序随机。
每个问题有四个选项,其中只有⼀个正确的选项。
将20份⽂件写到20个⽂本⽂件中。
将20份答案写到20个⽂本⽂件中。enable mustache mode
程序设计:
字典保存选择题的正确匹配。
调⽤open() ,write() ,和close()⽅法写⼊写出⽂件。
利⽤random.shuffle()随机调整问题和多重选项的次序。
第⼀步:将测验数据保存在⼀个字典中
如果你对python感兴趣,我这有个学习Python基地,⾥⾯有很多学习资料,感兴趣的+Q:688244617
#!python3
#test.py - 随机⽣成测试试卷
import random
#问题的数据保存在字典中,诗歌名称作为键,作者作为值。
poems ={'《⽔调歌头·明⽉⼏时有》':'苏轼',
'《将进酒》':'李⽩',
'《桃花源记》':'陶渊明',
'《陋室铭》':'刘禹锡',
'《爱莲说》':'周敦颐','《元⽇》':'王安⽯',
'《满江红·写怀》':'岳飞','《春望》':'杜甫',
'《岳阳楼记》':'范仲淹',
'《长恨歌》':'⽩居易',
'《醉翁亭记》':'欧阳修',
'《⼩⽯潭记》':'柳宗元',
'《清明》':'杜牧',
'《春江花⽉夜》':'张若虚',
'《春⽇》':'朱熹',perl数组匹配
'《天净沙·秋思》':'马致远',
python基础知识测试题'《过零丁洋》':'⽂天祥',
'《⽩雪歌送武判官归京》':'岑参'
}
第⼆步:有了上⾯的字典,我们就可以随机⽣成20份不同的试卷了。
#我们可以⽤上⾯的字典随机的出20份试卷
for num in range(20):
#创建试卷和答案⽂本⽂件
testFile =open('poem_'%(num +1),'w')
answerFile =open('poem_'%(num +1),'w')matlab产品安装
#创建试卷的头部格式
testFile.write('姓名:\n\n⽇期:\n\n年级:\n\n')
testFile.write('试卷号:%s'%(num +1))
testFile.write('\n\n\n')
#随机获取诗歌名称
names =list(poems.keys())
random.shuffle(names)
第三步:创建答案选项
这个for循环是要包含在上⾯⼀个for循环中的,因为哦们需要为每⼀个⽂件创建选项。--snip--
for questionNum in range(10):
#试卷的正确的选项,就是names列表中的值在字典中对应的作者
correctAnswer = poems[names[questionNum]]
#试卷的错误的选项,就是字典中所有的值
easeljs如何安装#然后在每次循环过程中去掉其中的正确的那⼀项,
wrongAnswers =list(poems.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
#随机选择三个错误的答案
#random中sample(seq, n)函数:从序列seq中选择n个随机且独⽴的元素;
wrongAnswers = random.sample(wrongAnswers,3)
#问题单包含的四个选项
answerOptions = wrongAnswers +[correctAnswer]
#打乱答案顺序
random.shuffle(answerOptions)
第四步:将内容写⼊测验试卷和答案⽂件
这段代码后⾯的close()⽅法是包含在第⼀个for循环中的。
--snip--
#将问题和答案写⼊⽂件中,\表⽰⼀⾏代码写不下可以换多⾏
testFile.write('%s,%s的作者是:\n'% \
(questionNum +1,names[questionNum]))
for i in range(4):
testFile.write('%s. %s\n'%('ABCD'[i],answerOptions[i]))
testFile.write('\n')
#写⼊答案
answerFile.write('%s.%s\n'%(questionNum +1,'ABCD'\
[answerOptions.index(correctAnswer)]))
testFile.close()
answerFile.close()
完整代码:
#!python3
#test.py - 随机⽣成测试试卷
import random
#问题的数据保存在字典中
poems ={'《⽔调歌头·明⽉⼏时有》':'苏轼',
'《将进酒》':'李⽩',
'《桃花源记》':'陶渊明',
'《陋室铭》':'刘禹锡',
'《爱莲说》':'周敦颐','《元⽇》':'王安⽯',
'《满江红·写怀》':'岳飞','《春望》':'杜甫',
'《岳阳楼记》':'范仲淹',
'《长恨歌》':'⽩居易',
'《醉翁亭记》':'欧阳修',
'《⼩⽯潭记》':'柳宗元',
'《清明》':'杜牧',
'《春江花⽉夜》':'张若虚',
'《春⽇》':'朱熹',
'《天净沙·秋思》':'马致远',
'《过零丁洋》':'⽂天祥',
'《⽩雪歌送武判官归京》':'岑参'
}
#我们可以⽤上⾯的字典随机的出20份试卷
for num in range(20):
#创建试卷和答案⽂本⽂件
testFile =open('poem_'%(num +1),'w')
answerFile =open('poem_'%(num +1),'w')
#创建试卷的头部格式
testFile.write('姓名:\n\n⽇期:\n\n年级:\n\n')
testFile.write('试卷号:%s'%(num +1))
testFile.write('\n\n')
#根据诗词名字随机⽣成题⽬
names =list(poems.keys())
#random.shuffle()随机打乱⼀个序列中的元素
random.shuffle(names)
for questionNum in range(10):
#试卷的正确的选项,就是names列表中的值在字典中对应的作者
correctAnswer = poems[names[questionNum]]
#试卷的错误的选项,就是字典中所有的值
#然后在每次循环过程中去掉其中的正确的那⼀项,
wrongAnswers =list(poems.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
#随机选择三个错误的答案
#random中sample(seq, n)函数:从序列seq中选择n个随机且独⽴的元素;          wrongAnswers = random.sample(wrongAnswers,3)
#问题单包含的四个选项
answerOptions = wrongAnswers +[correctAnswer]
#打乱答案顺序
random.shuffle(answerOptions)
#将问题和答案写⼊⽂件中,\表⽰⼀⾏代码写不下可以换多⾏
testFile.write('%s,%s的作者是:\n'% \
(questionNum +1,names[questionNum]))
for i in range(4):background怎么设置背景
testFile.write('%s. %s\n'%('ABCD'[i],answerOptions[i]))
testFile.write('\n')
#写⼊答案
answerFile.write('%s.%s\n'%(questionNum +1,'ABCD'\
[answerOptions.index(correctAnswer)]))
testFile.close()
answerFile.close()
运⾏结果如下:
⽣成了20份试卷和20份答案,每份试卷和答案如下:
<
1.C
2.C
3.A
4.D
5.A
6.B
7.C
8.B
9.D
10.C
<
姓名:
⽇期:
年级:
试卷号:1
1,《⽔调歌头·明⽉⼏时有》的作者是:
A.范仲淹
B.岳飞
C.苏轼
D.杜甫
2,《清明》的作者是:
A.李⽩
B.范仲淹
C.杜牧
D.陶渊明
3,《天净沙·秋思》的作者是:
A.马致远
B.李⽩
C.朱熹
D.苏轼
#这⾥只展⽰了前⾯3道题,每套试卷都有10道题⽬。...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。