#! python3
import random ''' 目標:製做N份選項無序的試卷 步驟:1.建立文件(試卷文件和對應答案文件) 2.寫入題頭 3.寫入題目和選項 4.關閉文件 重點:1.無序選項如何實現 已有數據是字典形式,key是題目內容,對應的value是正確答案, 選項都是value,因此先把全部value提取出來並列表化,list(capitals.values()) 從中刪除正確選項,並隨機提取三個干擾選項,再加上正確答案,可造成具備4個元素的列表A。 而後將A中元素順序打亂,並提取,便可獲得4個無序的選項。 2.如何找出正確答案對應的選項 要利用無序選項在寫入時,對應ABCD的順序等於正確答案在列表A的順序 'ABCD'[a.index(capitals[state])] ''' #創建美國各州與州首府的字典數據 capitals = {'Alabama':'Montgomery','Alaska':'Juneau', 'Arizona':'Phoenix','Arkansas':'Little Rock', 'California':'Sacramento', 'Colorado':'Denver'} #製做五份試卷 for quiznum in range(5): #建立對象,分別對應quiz(1-5)的試卷和answer(1-5)的答案 quizFile = open('quiz%s.txt'%(quiznum + 1),'w') answerFile = open('answer%s.txt'%(quiznum + 1),'w') #quiz中寫入姓名,班級和試卷題頭 quizFile.write('Name:\nClass:\n\n') quizFile.write((' '*20) + '美國地理常識測試題%s\n\n'%(quiznum + 1)) #列表化各州,並打亂順序 states = list(capitals.keys()) random.shuffle(states) #列表化各州首府,並打亂順序 capital = list(capitals.values()) random.shuffle(capital) #在每份試卷中寫入六道題 for testnum in range(6): #從打亂順序的州中依次提取州名,並在試卷中寫入名字 state = states[testnum] quizFile.write('%s.美國%s的首府是?%(testnum + 1,state)') #提取的州所對應的州首府,即正確答案 correct = capitals[state] #刪除州首府列表中的正確答案 del capital[capital.index(correct)] #從州首府中隨機提取3個州首府 wrong = random.sample(capital,3) #列表化四個選項,並打亂順序 option = list(wrong) + list(correct) random.shuffle(option) #在試卷對象中寫入4個選項 for optionum in range(4): quizFile.write('%s.%s'%('ABCD'[optionum],option_[optionum])) #在答案對象中寫入正確答案所對應的ABCD answerFile.write('%s.%s\n'%(testnum + 1,'ABCD'[option.index(correct)]) quizFile.close() answerFile.close()
運行後顯示:python
C:\Users\carrie\Desktop\test>C:/Users/carrie/AppData/Local/Programs/Python/Python37/python.exe c:/Users/carrie/Desktop/test/自動化辦公/無序試卷隨機出題(自習).py
File "c:/Users/carrie/Desktop/test/自動化辦公/無序試卷隨機出題(自習).py", line 55
quizFile.close()
^
SyntaxError: invalid syntaxapi