python 学习(八—1) 项目:生成随机的测试试卷文件

# python 08-1 项目:生成随机的测试试卷文件

# 来自:《Python编程快速上手》


# 目标:
# 1.创建10份不同的测试试卷
# 2.为没分试卷创建15个多重选择题,次序随机
# 3.为每个问题提供一个正确答案和三个随机的错误答案,次序随机。
# 4.将测试试卷写到10个文本文件中
# 5.将答案写到10个文本文件中

# 要做的事:
# 1.将州和它们的首付保存在一个字典中。
# 2.针对测验文本文件和答案文本文件,调用open()、write()和close()。
# 3.利用random.shuffle()随机调整问题和多重选项的次序。

# 1.将测验数据保存在一个字典中
import random
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'}

# 创建测验文件 打乱问题的次序
for quiznum in range(10):
    quizFile = open('/Users/wang/Desktop/Test/capitalsquiz%s.txt' % (quiznum+1), 'w')
    answerKeyFile = open('/Users/wang/Desktop/Test/capitalsquiz_answets%s.txt' % (quiznum+1),'w')

    quizFile.write('Name:\n\nData:\n\nPeriod:\n\n')
    quizFile.write((' ' * 20) + 'State Capitals quiz (form %s)' % (quiznum + 1))
    quizFile.write('\n\n')

    states = list(capitals.keys())
    random.shuffle(states) 
    # 创建答案选项
    for questionNum in range(15):
        correctAnswer = capitals[states[questionNum]]
        wrongAnswers = list(capitals.values())
        del wrongAnswers[wrongAnswers.index(correctAnswer)]
        wrongAnswers = random.sample(wrongAnswers, 3)
        answerOptions = wrongAnswers + [correctAnswer]
        random.shuffle(answerOptions)
       # 将内容写入测试试卷和答案文件
        quizFile.write('%s. What is the capital of %s?\n' %(questionNum + 1, states[questionNum]))
        for i in range(4):
            quizFile.write(' %s.%s\n' %('ABCD'[i], answerOptions[i]))
        quizFile.write('\n')
        answerKeyFile.write(' %s.%s\n' %(questionNum+1, 'ABCD'[answerOptions.index(correctAnswer)]))
    quizFile.close()
    answerKeyFile.close()

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值