zoukankan      html  css  js  c++  java
  • Python 读写文件 小应用:生成随机的测验试卷文件

    去年学习了python的读写文件部分,了解了python读写的常用模块os、shelve,今天准备把课后作业试着自己做一下

    目标:1)生成35份试卷、每个试卷有50道选择题

       2)为了防止有学生作弊,需要将每份试卷的题目顺序都不一样

    思路:1)首先要创建35份不同的测验试卷

       2)然后为每份试卷创建50个多重选择题,让他们的次序随机。

       3)为每个问题提供一个正确答案和3个错误的干扰选项,并且选项的次序随机。

       4)将35份测试试卷写到35个文本文件中。

       5)将答案写到35个文本文件中。

    下面开始:

      经过一番思考,电光火石间,键盘上火花四溅,不一会儿功夫,花我9.9大洋的键盘就分崩离析。不仅是因为我的速度,还是因为每个按键,只有一次与我手指亲吻的机会,假如他没有在0.000001秒内弹起,他就不会通过考验,而他必须为此付出代价,流浪,只有流浪,才能让它认识到自己傲娇的代价。好了,在他最后一次被我弹起,在北纬N22°47′47.18″ 东经E136°0′38.67″ 这片土地上旋转跳跃的时候,这一刻,请我们羡慕他一次,他得以看到屏幕上一闪而逝的代码。他会明白自己是有多么的幸运,而前一刻心中的不甘是有多么可笑。在最后一刻,他回首看了一眼自己的母体,那条崭新的键盘,只不过他的兄弟都已不再,依旧像第一次看见它的时候,它想起来了,在记忆的工厂里,自己是被选中的第一个按键,被一双粗糙的大手反复的摩擦之后,打住。。。这恼人的意识流

    来了

    # The quiz data. Keys are states and values are their capitals
     
    # Generate 35quiz files.
    for quizNum in range(35):
        #Create the quiz and answer key files.
        quizFile=open('capitalsquiz%s.txt'%(quizNum+1),'w')  #占位符的使用
        answerKeyFile=open('capitalsquiz_answers%s.txt'%(quizNum+1),'w')
    
        #Write out the header for the quiz.
        quizFile.write('Name:
    
    Date:
    
    Period:
    
    ')
        quizFile.write((' '*20)+'State Capitals Quiz(Form %s)' % (quizNum+1))  #打印若干个相同的字符/串便捷的写法
        quizFile.write('
    
    ')
        
        #Shuffle the order of the states.
        states=list(capitals.keys())
        random.shuffle(states)  #random.shuffle()会将列表states里面的内容打乱
        
        #Loop throgh all 50 states,making a question for each
        for questionNum in range(50):
            #Get right and wrong answers  
            correctAnswer=capitals[states[questionNum]]  #得到错误答案的方法采用的是:先使用字典的values()方法获取所有答案,在复制到新的列表中,删去正确的答案
            wrongAnswers=list(capitals.values())
            del wrongAnswers[wrongAnswers.index(correctAnswer)]
            wrongAnswers=random.sample(wrongAnswers,3)  #random.sample(parameter1,parameter2)从参数1中随机选出参数2指定的个数
            answerOptions=wrongAnswers+[correctAnswer]
            random.shuffle(answerOptions)  #在打乱一次,防止每个题目正确答案选项都一样
    
            #write the question and the answer options to the quiz file.
            quizFile.write('%s.What is the capital of %s?
    ' % (questionNum+1,states[questionNum])) 
            for i in range(4):
                quizFile.write('%s.%s
    ' % ('ABCD'[i],answerOptions[i]))
            quizFile.write('
    ')
    
            #write the answer key to a file.
            answerKeyFile.write('%s.%s
    '%(questionNum+1,' ABCD'[answerOptions.index(correctAnswer)]))  #注意这里不要选择麻烦的方法,要熟练使用
        quizFile.close()
        answerKeyFile.close()
  • 相关阅读:
    oracle中Blob和Clob类型的区别
    为什么要分库分表
    Enable file editing in Visual Studio's debug mode
    SQL Server Dead Lock Log
    Debug .NET Framework Source
    SQL Server text field里面有换行符的时候copy到excel数据会散乱
    诊断和修复Web测试记录器(Web Test Recorder)问题
    Can't load Microsoft.ReportViewer.ProcessingObjectModel.dll
    'telnet' is not recognized as an internal or external command
    Linq to XML
  • 原文地址:https://www.cnblogs.com/Gaoqiking/p/10435783.html
Copyright © 2011-2022 走看看