随机生成35份试卷,将50道地理选择题随机写入,最后生成对应的35份答案

#随机生成35份试卷,将50道地理选择题随机写入,最后生成对应的35份答案

#导入random模板
import random

#美国50个州和对应的首府
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', 'New150 Python 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', 'WestVirginia': 'Charleston',
            'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}

#随机生成35粉试卷的和对应的答案文件
for sjNum in range(35):
    wtFile = open('地理测试(%s)' % (sjNum + 1), 'w')
    daFile = open('地理测试答案(%s)' % (sjNum + 1), 'w')

    wtFile.write('姓名:\n\n日期:\n\n学号:')
    wtFile.write((' ' * 20) + '地理测验(%s)' % (sjNum + 1))
    wtFile.write('\n\n')

#生成答案的随机列表
    wtKey = list(capitals.keys())
    random.shuffle(wtKey)

#随机生成50份问题
    for wtNum in range(50):
        #取出唯一正确答案
        zqda = capitals[wtKey[wtNum]]
        #取出所有答案
        cwda = list(capitals.values())
        #取出49个错误答案
        del cwda[cwda.index(zqda)]
        #从中随机抽取3个错误答案
        cwda = random.sample(cwda, 3)
        #与唯一正确答案组成4个选择答案
        sjda = cwda + [zqda]
        #将4个选项随机
        random.shuffle(sjda)
        #向35份试卷写入问题
        wtFile.write('%s. What is the capital of %s ?\n' % (wtNum+1, wtKey[wtNum]))
        #向35份试卷写入4个选项
        for i in range(4):
            wtFile.write('%s. %s\n' % ('ABCD'[i], sjda[i]))
        wtFile.write('\n')
        #向35份答案文件写入答案
        daFile.write('%s. %s\n' % (wtNum + 1, 'ABCD'[sjda.index(zqda)]))
#关闭
    wtFile.close()
    daFile.close()

 

转载于:https://www.cnblogs.com/ekin/p/9456131.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值