zoukankan      html  css  js  c++  java
  • <python>生成随机的测验试卷(单选题)

    #项目:生成随机的测验试卷文件
    import random
    #资料库
    capitals = {'北京市':'京','上海市':'沪','天津市':'津','重庆市':'渝','河北省':'冀','山西省':'晋','辽宁省':'辽','黑龙江省':'黑','吉林省':'吉','江苏省':'苏','浙江省':'浙','安徽省':'皖','福建省':'闽','江西省':'赣','山东省':'鲁','河南省':'豫','湖北省':'鄂','湖南省':'湘','广东省':'粤','海南省':'琼','四川省':'川','贵州省':'黔','云南省':'滇','陕西省':'陕','甘肃省':'甘'}
    #测试人数
    for quizNum in range(1):
        #因为range()函数的循环是从0开始,所以都需要加1,分别创建每份测试的题目以及答案
        quizFile = open('capitalsquiz%s.txt'%(quizNum + 1),'w')
        answerKeyFile = open('capitalsquiz_answer%s.txt'%(quizNum + 1),'w')
        #在测试中留空,已供填写日期,姓名等,以写模式写文档不会自动换行,所以需要加入
    
        quizFile.write('姓名:
    
    年龄:
    
    日期:
    
    ')
        quizFile.write((' '*20)+'省会测试题(%s卷)'%(quizNum + 1))     #留空20个空格,加题目序号
        quizFile.write('
    
    ')
        #将资料库中的键随机打乱之后存入states中
        states = list(capitals.keys())
        random.shuffle(states)
        #del是删除列表操作,不同于def,看清楚
        for questionNum in range(20):
            correctAnswer = capitals[states[questionNum]] #根据随机后的states在capitals中反查正确答案
            wrongAnswers = list(capitals.values())       #列举所以答案
            del wrongAnswers[wrongAnswers.index(correctAnswer)]  #删除列举中的正确答案,index方法,找到返回索引值,然后由del删除
            wrongAnswers = random.sample(wrongAnswers,3)   #sample方法,在已给的序列中随机选取指定长度片段,不做修改
            answerOptions = wrongAnswers + [correctAnswer] #答案是,正确答案加3个错误答案
            random.shuffle(answerOptions)   # 将答案的顺序进行打乱
            quizFile.write('%s.%s的省会城市是?
    '%(questionNum + 1,states[questionNum]))
            for i in range(4):
                quizFile.write('%s.%s
    '%('ABCD'[i],answerOptions[i])) #给出选项
            quizFile.write('
    ')  #结尾空行
            answerKeyFile.write('%s,%s
    '%(questionNum + 1,'ABCD'[answerOptions.index(correctAnswer)]))#由正确答案反求序号,得出对应的ABCD,
        #进过写操作,记得关闭文档
        quizFile.close()
        answerKeyFile.close()
    

      运行结果:

    题目:

    答案:

    导入一个题库,我可以出N张卷子- -,纪念当初的高三生活!

  • 相关阅读:
    C# Socket 实现WebSocket服务器端
    Linux Vi 的使用
    Microsoft Sql Server 2016安装在CentOS7下
    通过反射获取所有继承了某一接口的类
    Windows下常用的100个CMD指令以及常见的操作
    CentOS系统安装遇到的一些问题
    SQL Server 2016最值得关注的10大新特性
    用注册表禁止windows添加新用户
    ASP.NET MVC学习之模型验证详解
    (转)RBAC权限管理
  • 原文地址:https://www.cnblogs.com/shuimohei/p/10383035.html
Copyright © 2011-2022 走看看