自己又开始懒散的态度生活,所以几乎有两个月没有更博了。

项目:美国各州首府地理考试,为防止作弊,35份试卷,50道题随机次序,生成独一无二的试卷。

基本想法:

1.将各州首府的地方和首府写入列表,以Key:value列表形式存储

2.for循环,调用open()生成35份试卷以及对应的35份答案

3.写入试卷的标题头,例如试卷名以及填写班级姓名学号的区域

4.for循环,利用random.shuffle()随机生成50道问题以及ABCD的答案次序

5.在生成问题的同时将问题的正确答案写入答案的文件中

6.调用close()关闭文件

import random

#字典存储各州对应首府的键-值
capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois':
'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh',
'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'} #创建35份试卷和答案的文件
for filenum in range(35):
file = open("D:\\testing%s.txt"%(filenum + 1),'w')
answer = open("D:\\answer%s.txt"%(filenum + 1),'w')
#设置每一份试卷的标题
file.write(" " * 20 + "America State testing%s\n"%(filenum + 1))
file.write("Your name:" + "_________" + " " * 3 + "Your class name:" + "________" + " " * 3 + "Your number:" + "________"+"\n\n\n") #将各州的键存储在statelist上,并且打乱顺序,以便以出的试卷50道题乱序
statelist = list(capitals.keys())
random.shuffle(statelist) #for循环创建50道题目
for i in range(50):
#将正确答案存储
#且将所有的键值存储在All_answer中
#去除正确答案后将剩余答案存储在wronge_answer中
#随机取出三个后与正确答案存储在一个列表中
#打乱顺序写入ABCD选项中
correct_answer = capitals[statelist[i]]
All_answer = list(capitals.values())
del All_answer[All_answer.index(correct_answer)]
wronge_answer = random.sample(All_answer,3)
Answer = wronge_answer + [correct_answer]
random.shuffle(Answer) #每一道题的模板
file.write('%s. What is the capital of %s?\n' % (i+1,statelist[i]))
for j in range(4):
file.write('%s.%s\n' % ('ABCD'[j],Answer[j]))
#将正确答案写入每一份相对应的答案文件中
answer.write('%s.%s\n' % ((i+1),'ABCD'[Answer.index(correct_answer)])) file.close()
answer.close()

python之生成随机测验试卷的更多相关文章

  1. python faker 生成随机类型字符串

    以前生成测试字符时,用random模块拼来拼去来生成随机串,如姓名,手机,身份证等,还是费一些功夫,不过有了faker模块,一切变得简单起来 基本使用: from faker import Faker ...

  2. python random生成随机手机号

    上代码 #--------------- #!/usr/bin/python #_*_coding:UTF-8_*_ import random #生成随机手机号 str_start=random.c ...

  3. python基础-生成随机字符串方法

    python解释器示例 >>> import uuid >>> uuid.uuid1() UUID('ae6822e6-c976-11e6-82e0-0090f5f ...

  4. [Python]random生成随机6位验证码

    #!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 10:07 # @Author : LeoShi # @Site : # @File ...

  5. python图像处理-生成随机验证码

    前面说了PIL库,还说了图片的缩放.旋转和翻转.现在说下网站上常用的随机验证码的生成.参考网站:https://www.liaoxuefeng.com/wiki/1016959663602400/10 ...

  6. python中生成随机整数(random模块)

    1.从一个序列中随机选取一个元素返回:   random.choice(sep)    2.用于将一个列表中的元素打乱   random.shuffle(sep)    3.在sep列表中随机选取k个 ...

  7. Python 读写文件 小应用:生成随机的测验试卷文件

    去年学习了python的读写文件部分,了解了python读写的常用模块os.shelve,今天准备把课后作业试着自己做一下 目标:1)生成35份试卷.每个试卷有50道选择题 2)为了防止有学生作弊,需 ...

  8. Python实践练习:生成随机的测验试卷文件

    题目 假如你是一位地理老师,班上有 35 名学生,你希望进行美国各州首府的一个小测验.不妙的是,班里有几个坏蛋,你无法确信学生不会作弊.你希望随机调整问题的次序,这样每份试卷都是独一无二的,这让任何人 ...

  9. python实践项目八:生成随机试卷文件

    描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...

随机推荐

  1. Log4J & elk 事故总结

    周六的早晨8点,应用出现了大面积的登录超时问题. 作为一款日活15W.用户量700W+的应用,这是致命的问题. 唯一的安慰是——好在今天是周末,加班的公司才会使用.虽然如此,客服.产品的电话也被打爆了 ...

  2. A simple problem(hdu2522)

      A simple problem Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  3. 使用Java对字符串进行升序排序

    Java对字符串的很多API和功能是JavaWeb能广泛发展的基础,下面是一道经典的字符串操作题,需要边查JAVASE的API对每个步骤进行操作. 题目:给一个字符串,"34 12 -8 0 ...

  4. HDU4960(SummerTrainingDay03-F dp)

    Another OCD Patient Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Ot ...

  5. 关于shortcut icon和icon

    语句一:<link rel="shortcut icon" href="favicon.ico" /> 语句二<link rel=" ...

  6. IO流作业

    IO流作业 一.    填空题 Java IO流可以分为    字节流          和处理流两大类,其中前者处于IO操作的第一线,所有操作必须通过他们进行. 输入流的唯一目的是提供通往数据的通道 ...

  7. linux下安装jenkins实现自动化部署

    安装 开始 1.安装之前,必须先安装JDK 可以参考  http://www.cnblogs.com/ericli-ericli/p/7070874.html 2.使用相关命令: wget -q -O ...

  8. Hive Serde - CSV、TSV

    CSV hive-0.14.0内置支持CSV Serde,以前的版本需要引入第三方库的jar包(http://https://github.com/ogrodnek/csv-serde) 现在有个文本 ...

  9. Python Django框架笔记(三):django工作方式简单说明和创建用户界面

    (一)  说明 简单说明下django的工作方式,并举2个例子. (二)  Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和s ...

  10. Python+Selenium笔记(十六)屏幕截图

    (一) 方法 方法 简单说明 save_screenshot(filename)   获取当前屏幕截图并保存为指定文件 filename:路径/文件名 get_screenshot_as_base64 ...