8.5项目:生成随机的测验试卷文件
第1步:创建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 个随机的错误答案,次序随机。
for question_num in range ( 50 ) :
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 个文本文件中。
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' )
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' }
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)
for question_num in range ( 50 ) :
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)
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' )
answer_key_file. write( '%s.%s' % ( question_num + 1 , 'ABCD' [ answer_options. index( correct_answer) ] ) )
quiz_file. close
answer_key_file. close