项目:随机生成测试试卷

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

程序:

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

程序设计:

  • 字典保存选择题的正确匹配。
  • 调用open() ,write() ,和close()方法写入写出文件。
  • 利用random.shuffle()随机调整问题和多重选项的次序。

第一步:将测验数据保存在一个字典中

#!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道题目。
...

转载于:https://www.cnblogs.com/BeautifulSoup/p/8427623.html

Python DayDayUp —— 小项目实现(二)相关推荐

  1. Python Turtle 小项目 8 各种音符的绘制

    本次,我们将继续使用Turtle模块进行绘制,下面将教学如何绘制各种音符 一.一个四分音符 效果: 代码讲解: 1.导入模块 from turtle import * 2.设置属性 pensize(4 ...

  2. Python常用小技巧(二)——打开图片

    Python常用小技巧(二)--打开图片 前言:对于大量图片的文件夹,你很难手工去检查每张图片是否损坏,这时候就要用程序去检查每张图片是否能打开了 一.材料准备 - os - PIL 二.程序编写 i ...

  3. JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用)

    JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 文章目录 JavaWeb小项目(二)- 完成品牌数据的增删改查(JSP/MVC/三层架构综合应用) 环境搭建 ...

  4. Python Tkinter 小项目 RGB数值转换为16进制码

    欢迎来到<Python 小项目>专栏,这个专栏会不定时更新Python的小项目,大家可以订阅关注哦! 这次,我们用Tkinter写一个RGB转16进制的一个小工具,先看看效果: 代码教学: ...

  5. python秒表小项目_适合新手练习的几个python小项目

    关于python练习的小项目,其实就是一些常用的模块的针对练习 一.找出电脑中遗忘的大文件 # !/usr/bin/env python # _*_ coding:utf-8 -*- import o ...

  6. python爬虫小项目挣钱兼职,python程序员兼职平台

    python爬虫去哪接单 python爬虫接单的方式有两种一.接定制需求的单子爬虫定制的需求其实很多,比如 "爬取某某电商网站的评论",这类需求一般是按照爬取数据量的大小来收费,价 ...

  7. python入门小项目-新手学Python必看的几个练手小项目,轻松不枯燥哦!

    Python是一种面向对象的解释型编程语言,源代码与解释器CPython遵守GPL协议,Python语法简洁清晰. 语法简洁清晰,那么我们用少量的Python代码能做哪些有趣的东西?温馨提示:文末必看 ...

  8. 6个有趣的Python实战小项目,赶紧拿去试试吧

    目录 前言 实战项目一:分析唐诗的作者是李白还是杜甫 实战项目二:自动写检讨书 实战项目三: 屏幕录相机,抓屏软件 实战项目四:听两个聊天机器人互相聊天 实战项目五:彩票随机生成35选7 实战项目六: ...

  9. 值得收藏!这 100 个 Python 实战小项目真棒!

    学习 Python 会有这么一个阶段,太简单的程序看不上眼,复杂的开源项目又有点力不从心,这个时候,你就需要接触点简单的 Python 小项目来提升 Python 技能. 最近逛GitHub, 碰巧碰 ...

最新文章

  1. Android华容道之一步一步实现-5-图像块移动算法实现
  2. 求一个整数n对16求商和余数
  3. 机器学习(二十一)——Optimizer, 单分类SVM多分类SVM, 时间序列分析
  4. thymeleaf 使用javascript定义数组报错
  5. Linux与Windows共享文件夹之samba的安装与使用 资源管理器直接查看服务器文件
  6. 【Kettle】date类型不能被excel输出
  7. NetBeans Weeldy News 刊号 # 53 - Apr 23, 2009
  8. SEO工具,站长必备
  9. Python绘制简单漂亮好玩的散点图
  10. sublime text3找到定义_决策易aPaaS,一款非技术人员也能使用的自定义开发神器
  11. ArcGIS for iOS 开发系列(3) – 基础篇-“Hello World Map”
  12. VSCode svn忽略文件提交
  13. vmware输入序列号老是不能注册问题
  14. heic照片格式怎么转换jpg?heic转换成jpg方法分享
  15. 微信小程序Java登录流程(ssm实现具体功能和加解密隐私信息问题解决方案)...
  16. Kepware通过网络配置三菱FX5U型号PLC的方法
  17. 什么软件打印二维码和条形码?
  18. VUE+tinymce(富文本编辑器)
  19. 【Python语言】Python编程基础
  20. 开启Fluter基础之旅二-------Future再论、常用组件、Material Design风格组件学习

热门文章

  1. 南京大学计算机学院路通,路通(技术学院)老师 - 南京大学 - 院校大全
  2. 通信原理学习笔记1:模拟与数字通信系统、通信系统性能指标
  3. 用Dreamweaver实现ASP动态网站建设
  4. 计算机化考试实施方案,上海对外经贸大学计算机分级教学实施方案
  5. 变电所计算机监控系统设计技术规程,《59.DL5149-2016 220-500kV变电所计算机监控系统设计技术规程》.pdf.pdf...
  6. 在WinXp上安装AutoCAD2000的方法(测试成功)
  7. mac os运行routeros路由器管理软件“winbox.exe”(winebottle方式)
  8. 解决WIN7开机点登陆后黑屏很长时间才会进系统,打黑屏补丁无效问题
  9. 纯css3流星雨js特效代码
  10. ffmpeg编码aac音频