Python编程快速上手——让繁琐工作自动化第8章8.5项目:生成随机的测验试卷文件


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


第1步:创建35份不同的测验卷和答案

# 创建35份不同的测验试卷和答案。
for quiz_num in range(35):
    quiz_file = open('capitals_quiz%s.txt' % (quiz_num + 1), 'w')
    answer_key_file = open('capitals_quiz_answers%s.txt' % (quiz_num + 1), 'w')
    quiz_file.write('Name:\n\nDate:\n\nPeriod:\n\n')
    quiz_file.write((' ' * 20) + 'State Capitals Quiz(Form %s)' % (quiz_num + 1))
    quiz_file.write('\n\n')
    states = list(capitals.keys())
    random.shuffle(states)
    quiz_file.close
    answer_key_file.close

第2步:为每份试卷创建 50 个多重选择题,次序随机。为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。

	# 为每份试卷创建 50 个多重选择题,次序随机。
    for question_num in range(50):
        # 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。
        correct_answer = capitals[states[question_num]]
        wrong_answers = list(capitals.values())
        del wrong_answers[wrong_answers.index(correct_answer)]
        wrong_answers = random.sample(wrong_answers, 3)
        answer_options = wrong_answers + [correct_answer]
        random.shuffle(answer_options)

第3步: 将测验试卷写到 35 个文本文件中。将答案写到 35 个文本文件中。

		# 将测验试卷写到 35 个文本文件中。
        quiz_file.write('%s.What is the capital of %s?' % (question_num + 1, states[question_num]))
        for i in range(4):
            quiz_file.write('%s.%s\n' % ('ABCD'[i], answer_options[i]))
        quiz_file.write('\n')
        # 将答案写到 35 个文本文件中。
        answer_key_file.write('%s.%s' % (question_num + 1, 'ABCD'[answer_options.index(correct_answer)]))

完整程序

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', 'Kansas': 'Topeka',
            'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine': 'Augusta', 'Maryland': 'Annapolis',
            'Massachusetts': 'Boston', 'Michigan': 'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson',
            'Missouri': 'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada': 'Carson City',
            'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New Mexico': 'Santa Fe', 'New York': 'Albany',
            'North Carolina': 'Raleigh', 'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
            'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence', 'South Carolina': 'Columbia',
            'South Dakota': 'Pierre', 'Tennessee': 'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City',
            'Vermont': 'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West Virginia': 'Charleston',
            'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}
# 创建35份不同的测验试卷和答案。
for quiz_num in range(35):
    quiz_file = open('capitals_quiz%s.txt' % (quiz_num + 1), 'w')
    answer_key_file = open('capitals_quiz_answers%s.txt' % (quiz_num + 1), 'w')
    quiz_file.write('Name:\n\nDate:\n\nPeriod:\n\n')
    quiz_file.write((' ' * 20) + 'State Capitals Quiz(Form %s)' % (quiz_num + 1))
    quiz_file.write('\n\n')
    states = list(capitals.keys())
    random.shuffle(states)
    # 为每份试卷创建 50 个多重选择题,次序随机。
    for question_num in range(50):
    	# 为每个问题提供一个正确答案和 3 个随机的错误答案,次序随机。
        correct_answer = capitals[states[question_num]]
        wrong_answers = list(capitals.values())
        del wrong_answers[wrong_answers.index(correct_answer)]
        wrong_answers = random.sample(wrong_answers, 3)
        answer_options = wrong_answers + [correct_answer]
        random.shuffle(answer_options)
        # 将测验试卷写到 35 个文本文件中。
        quiz_file.write('%s.What is the capital of %s?' % (question_num + 1, states[question_num]))
        for i in range(4):
            quiz_file.write('%s.%s\n' % ('ABCD'[i], answer_options[i]))
        quiz_file.write('\n')
        # 将答案写到 35 个文本文件中。
        answer_key_file.write('%s.%s' % (question_num + 1, 'ABCD'[answer_options.index(correct_answer)]))
    quiz_file.close
    answer_key_file.close

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值