要求就是:10套试卷题目顺序不同,答案顺序不同
import random
import os
city = {'河北省':'石家庄市','山西省':'太原市','辽宁省':'沈阳市','吉林省':'长春市','黑龙江省':'哈尔滨市','江苏省':'南京市','浙江省':'杭州市','安徽省':'合肥市','福建省':'福州市','江西省':'南昌市'}#在当前路径下创建目录,用于保存试卷
if not os.path.exists('.\\data\\exam'):os.makedirs('.\\data\\exam')#切换到创建的目录下
os.chdir('.\\data\\exam')#创建十套试卷
for i in range(10):#试卷文件exam = open('试卷'+str(i+1)+'.txt','w')exam.write('姓名:\t')exam.write('成绩:\n\n')exam.write('单选题:请从下面选项中选出该省份对应的省会\n')#答案文件answ = open('试卷'+str(i+1)+'答案.txt','w')#题目列表provinces = list(city.keys())#答案选项options = ['A、','B、','C、','D、']#10道题目for j in range(10):#答案列表cityNames = list(city.values())#随机选题,打乱顺序province = random.choice(provinces)exam.write(str(j+1)+'、'+province+'的省会是?\n')#去除已选择的,避免重复provinces.remove(province)#随机选3个省会与正确的组成答案succ = city[province]cityNames.remove(succ)#随机选取3个错误省会当作答案error1 = random.choice(cityNames)cityNames.remove(error1)error2 = random.choice(cityNames)cityNames.remove(error2)error3 = random.choice(cityNames)cityNames.remove(error3)answers = [succ,error1,error2,error3]#将选项顺序打乱随机for opt in options:answer = random.choice(answers)answers.remove(answer)exam.write(opt+answer+'\t')#正确答案写入答案文件if answer==succ:answ.write(str(j+1)+'、'+opt+answer+'\n')exam.write('\n\n')exam.close()answ.close()'''
以上代码是自己依据java经验而写,在随机选择的地方有点麻烦,其实python有函数
random.sample(provinces,10) 从provinces中随机选10个
random.shuffle(provinces) 将provinces随机排序
两种方式都可以使用这样直接就将10道题目顺序打乱了,可以少一重for循环
'''
provinces = list(city.keys())
print('原provinces:',provinces)
print('random.sample()函数:',random.sample(provinces,10))provinces = list(city.keys())
print('原provinces:',provinces)
random.shuffle(provinces)
print('随机排序后:',provinces)
效果: