8.5项目 生成随机的测验试卷文件

#生成随机试卷及其答案文件
import random

#各州及其对应的首府放入capital字典中
capitals = {'Alabama':'Montgomery','Alaska':'Juneau','Arizona':'Phoenix',
            'Arkansas':'Little Rock','California':'Sacramento','Colorado':'Denver',
            'Connecticut':'Hartford','Delaware':'Dover','Florida':'Tallahassee','New Jersey': 'Trenton'}
for quiz_num in range(35):
    # Create the quiz and answer key files. 
    capitals_quiz_file = open('capitals quiz%s.txt'%(quiz_num+1), 'w')
    answer_key_file = open('capitals quiz%s answers.txt'%(quiz_num+1), 'w')

    # Write out the header for the quiz. 
    capitals_quiz_file.write('Name:\n\nData:\n\nPeriod:\n\n')
    capitals_quiz_file.write(('State capitals Quiz%s'%(quiz_num+1)).center(50,'*'))
    capitals_quiz_file.write('\n\n')

    # Shuffle the order of the states. 
    states = list(capitals.keys())
    random.shuffle(states)

    # Loop through all states, making 10 questions for each. 
    for question_num in range(10):
        correct_answer = capitals[states[question_num]]
        wrong_answer = list(capitals.values())
        del wrong_answer[wrong_answer.index(correct_answer)]
        wrong_answer = random.sample(wrong_answer, 3)
        answer_options = [correct_answer] + wrong_answer
        random.shuffle(answer_options)
        capitals_quiz_file.write('\n%s.What is the capital of %s?\n\n'%(question_num+1, states[question_num]))
        for i in range(4):
            capitals_quiz_file.write('ABCD'[i] + '.' + answer_options[i] + '\n')
    
        #create the related answer key files
        answer_key_file.write('\n%s.%s'%(question_num+1, 'ABCD'[answer_options.index(correct_answer)]))
    capitals_quiz_file.close()
    answer_key_file.close()
  • random.shuffle(list)生成随机列表,即将原列表的顺序打乱
  • random.sample(list, 3)生成具有3个元素的列表随机样本
  • ‘%s’%text的用法:一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中
  • list.index(element)返回该元素在列表中的下标
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值