python编程快速上手第八章项目:生成随机测试试卷

代码如下,请有兴趣的朋友参考:

#! python3
import random
import os

#数据文件:key是州名,value是首府
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'}

cPath = 'c:\\test'
if os.path.exists(cPath) :
    pass
else :
    os.makedirs(cPath)
    os.chdir(cPath)

mykeys = list(capitals)

for quizNum in range(1,36) :  #共35份试卷
    file = open('quiz' + str(quizNum)+'s.txt','w',encoding='utf-8')
    fileans = open('quizAns' + str(quizNum)+'s.txt','w',encoding='utf-8')
    cline = '姓名:'+ ' '*15+'学号:'+' '*15+'班级'+' '*15+'日期:'+' '*15+'\n\n\n'
    file.write(cline)

    lskeys = mykeys # 本次试卷用的临时键,每出一题,删除使用过的键
    lskey = ''      # 当前题目使用的键
    lsvalue = []    # 当前题目使用的值
    truevalue = ''

    random.shuffle(lskeys)  # 生成键的随机排列

    for ni in range(0,50) :
        lsKey = lskeys[ni]
        truevalue = capitals.get(lsKey)
        #print(truevalue)
        lsvalue.append(truevalue) # 向答案列表中加入找到的正确答案
        #print(lsvalue)

        lsvalues = list(capitals.values())
        random.shuffle(lsvalues)
        lsvalues.remove(truevalue) # 从值列表中删除正确答案(已经用过)

        for mi in range(3) :
            myindex = random.randint(0,50-1-1)
            lsvalue.append(lsvalues[myindex])
            #print(lsvalue)

        random.shuffle(lsvalue)

        file.write('第' + str(ni+1) + '题:' +lsKey + '的首府是哪个城市?\n')
        file.write('请选择:')
        mysel = '(A) '+ lsvalue[0]+'    (B) '+ lsvalue[1]+'    (C) '+ lsvalue[2]+'    (D) '+ lsvalue[3] + '\n\n'
        file.write(mysel)

        #xuhao = ''
        #**以下代码不知道有没有更简便的方法**
        if truevalue in lsvalue[0] :
            xuhao = '(A) '
        elif truevalue in lsvalue[1] :
            xuhao = '(B) '
        elif truevalue in lsvalue[2] :
            xuhao = '(C) '
        elif truevalue in lsvalue[3] :
            xuhao = '(D) '
        myans = '第' + str(ni+1) + '题:' + lsKey + '的首府是哪个城市?' + '答案:' + xuhao + truevalue + '\n\n'
        fileans.write(myans)

    file.close()
    fileans.close()

以下代码不知道有没有更简便的方法?

if truevalue in lsvalue[0] :
    xuhao = '(A) '
elif truevalue in lsvalue[1] :
    xuhao = '(B) '
elif truevalue in lsvalue[2] :
    xuhao = '(C) '
elif truevalue in lsvalue[3] :
    xuhao = '(D) '

猜你喜欢

转载自blog.csdn.net/any1where/article/details/128265185