#随机生成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()