假设语文老师给学生最近学习的古诗进行一次小测验,但是为了防止作弊,每个人的试卷出题顺序各不相同。

程序:

创建20份不同的试卷
每份数据创建10个选择题,次序随机。
每个问题有四个选项,其中只有一个正确的选项。
将20份文件写到20个文本文件中。
将20份答案写到20个文本文件中。
程序设计:

字典保存选择题的正确匹配。
调用open() ,write() ,和close()方法写入写出文件。
利用random.shuffle()随机调整问题和多重选项的次序。
第一步:将测验数据保存在一个字典中


如果你对python感兴趣,我这有个学习Python基地,里面有很多学习资料,感兴趣的+Q群:688244617#!python3
#test.py - 随机生成测试试卷import random#问题的数据保存在字典中,诗歌名称作为键,作者作为值。
poems = {'《水调歌头·明月几时有》':'苏轼','《将进酒》':'李白','《桃花源记》':'陶渊明','《陋室铭》':'刘禹锡','《爱莲说》':'周敦颐','《元日》':'王安石','《满江红·写怀》':'岳飞','《春望》':'杜甫','《岳阳楼记》':'范仲淹','《长恨歌》':'白居易','《醉翁亭记》':'欧阳修','《小石潭记》':'柳宗元','《清明》':'杜牧','《春江花月夜》':'张若虚','《春日》':'朱熹','《天净沙·秋思》':'马致远','《过零丁洋》':'文天祥','《白雪歌送武判官归京》':'岑参'}

第二步:有了上面的字典,我们就可以随机生成20份不同的试卷了。

#我们可以用上面的字典随机的出20份试卷
for num in range(20):#创建试卷和答案文本文件testFile = open('poem_test%s.txt' % (num + 1),'w')answerFile = open('poem_answer%s.txt' % (num + 1),'w')#创建试卷的头部格式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]]#试卷的错误的选项,就是字典中所有的值#然后在每次循环过程中去掉其中的正确的那一项,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_test%s.txt' % (num + 1),'w')answerFile = open('poem_answer%s.txt' % (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):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份答案,每份试卷和答案如下:

answerFile1.txt
1.C
2.C
3.A
4.D
5.A
6.B
7.C
8.B
9.D
10.CtestFile1.txt
姓名:日期:年级:试卷号:11,《水调歌头·明月几时有》的作者是:
A. 范仲淹
B. 岳飞
C. 苏轼
D. 杜甫2,《清明》的作者是:
A. 李白
B. 范仲淹
C. 杜牧
D. 陶渊明3,《天净沙·秋思》的作者是:
A. 马致远
B. 李白
C. 朱熹
D. 苏轼
#这里只展示了前面3道题,每套试卷都有10道题目。
...

Python—— 随机生成测试试卷相关推荐

  1. 怎样用python随机生成100内的100个奇数_python怎么随机生成奇数_后端开发

    PHP每15分钟自动更新网站地图(减少服务器消耗)_后端开发 sitemap.php为页面文件,sitemap.html为sitemap.php的克隆版,监控宝设置定时监控timeSitemap.ph ...

  2. python随机生成验证码_Python生成随机验证码的两种方法

    # -*- coding: utf-8 -*- import random def generate_verification_code_v2(): ''' 随机生成6位的验证码 ''' code_l ...

  3. 【小知识点】Python随机生成 Phone 号码,测试用~

    Python 随机生成 Phone 号码 随机手机号码 Python 生成一亿个手机号 用 time 模块生成 随机手机号码 在爬虫实战中,有一项数据是不能采集的,这个数据就是电话号,所以本篇博客补充 ...

  4. python随机生成奇数_python怎么随机生成奇数_后端开发

    PHP每15分钟自动更新网站地图(减少服务器消耗)_后端开发 sitemap.php为页面文件,sitemap.html为sitemap.php的克隆版,监控宝设置定时监控timeSitemap.ph ...

  5. python随机生成数据库数据之一步一步教你数据造假成为道德主席-取名器-.-xswl-pydbgen || Faker

    简介 自己为了测试框架的正确性,就需要点数据做测试,一人扛下前后端.....不能重复的叫什么科学,丢人 开始 原理 基本上每种编程语言都自带伪随机数生成器,因此可以随机产生整形.浮点型数据,借助数组思 ...

  6. python 随机生成密码

    python 随机生成密码 #!/usr/bin/env python # -*- encoding: utf-8 -*- """ @Introduce : 随机生成密码 ...

  7. python随机生成30个8_Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例...

    上代码: 环境:Python3 import random,string s=string.ascii_letters+string.digits print(s) n={''.join(random ...

  8. Python语言学习:Python随机生成那些事之随机生成使用方法、案例应用之详细攻略

    Python语言学习:利用Python随机生成那些事之随机生成使用方法.案例应用之详细攻略 目录 案例应用 1.随机生成指定区间内的某一值 案例应用 1.随机生成指定区间内的某一值 使用说明:给定区域 ...

  9. 利用python随机生成姓名的实例教程

    本篇文章主要讲解:利用python随机生成姓名的实例教程 作者:任聪聪 整体思路 在我们生成姓名的时候,一般我们要考虑的是姓名的组合构成,姓+名,姓是固定的,名是随机的,故此我们可以通过随机调用常用汉 ...

最新文章

  1. 深入理解PHP之OpCode
  2. 可视化日历(Java实现)
  3. Vue保持用户登录及权限控制
  4. IDEA Maven的下载和配置
  5. 传统手工特征深度特征【转载】
  6. 回炉重造-数据结构之数组列表
  7. nfine框架 上传文件,nfine(nfine快速开发框架)
  8. python2.7使用TimeDelta中total_seconds()方法的问题
  9. Atitit 上传进度的实现与原理 目录 1.1. 前端 1 1.2. 读取进度 1 1.3. 后端 定时注入进度 1 1.1.前端                         wind
  10. android wifi 信道,WiFi不稳定经常断?手机WiFi信道小工具【图】_Android资讯_太平洋电脑网...
  11. Arcface 总结
  12. 第5章 电容元件与电感元件
  13. 用Python把20年的GDP、人口以及房价数据进行了可视化
  14. 第九周项目六 委派任务
  15. vue3组件库-mycom3-vue 组件文档
  16. AMD CEO辞职令业内震惊:邓元鋆有点尴尬
  17. 了解利用API接口通过网格策略的增长模式
  18. Mac电脑系统降级至10.15 Catalina(2020末代intel)
  19. Android照片墙加强版,使用ViewPager实现画廊效果
  20. 如何构建可持续的ChatGPT高性能服务器端架构?

热门文章

  1. 快来看,奇葩的年底离职理由,哈哈哈...
  2. 五个实用小功能,让你更了解你的手机
  3. Cobo钱包v2公测版来了,手把手教你怎么玩
  4. qpython终端怎么使用_ATX-uiautomator2 使用 QPython 在 Android 手机内执行自动化 -及wsl安装使用【未成功】...
  5. windows exploere.exe 已停止工作
  6. Python中的魔幻语法记录
  7. ABAP Deadlock
  8. 2022年12月最新python学习基础教程01
  9. 手机影像ISP流程:BLC
  10. 图像识别用什么神经网络,神经网络如何识别图像