跳至正文
View Categories

1 min read

主要内容 #

  1. 综合实战:利用pyton随机生成若干套————关于python关键字的试卷以及配套答案

5.随机问题以及选项的创建 #

生成问题和选项之前,先用test.txt做一个程序测试,四个选项使用了集合的方式实现,后续random包中会有更简洁的方式,这里不再赘述 以下示例,利用集合的唯一性,生成了四个不同的随机选项(字典keydict参考71课示例一生成)
import random # 参考77课random包
keylist = list(keydict.keys())#关键字列表
keyexp = list(keydict.values())#对应关键字解释的列表
num1 = random.randint(0, 100)#随机生成一个0到100的随机整数
with open('test.txt', 'w') as test:
    for j in range(15):#15道题目测试
        test.write('%d.Python关键字"%s"的含义:( )' % (j+1,keylist[(num1+j)%35])+'\n')#想一想索引(num1+j)%35的设置?为什么
        set1 = set()#创建一个空集合
        set1.add(keyexp[(num1+j)%35])#先把正确的选项放入集合中
        while len(set1)<= 3:#确保我们有4个不同的选项,因为随机生成的一个整数可能有重复
            set1.add(keyexp[random.randint(0, 34)])#将选项放入集合中
        for k,s in zip(range(4),set1):#多变量的for循环,使用zip
            test.write('%s.'%('ABCD'[k]) +s+'\n')#写入ABCD以及对应选项内容
        test.write('\n')
事实上,可以在pycharm中打开test.txt文件,不断运行上述程序观察text.txt的内容变化,查看测试内容和格式是否符合要求

6.写入测试问题及选项 #

参照示例1,使用循环生成30套测试试卷,字典keydict参考71课示例2生成,测试文档以及标题的代码参考72课示例2生成
import random# 参考77课random包
keylist = list(keydict.keys())
keyexp = list(keydict.values())
for i in range(30):
    num1 = random.randint(0, 100)
    with open('测试{}.txt'.format(i + 1), 'a') as quiz:#采用追加写入方式打开测试文档
        for j in range(15):
            quiz.write('%d.Python关键字"%s"的含义:( )' % (j+1,keylist[(num1+j)%35])+'\n')
            # 创建答案选项
            set1 = set()
            set1.add(keyexp[(num1 + j) % 35])
            while len(set1) <= 3:
                set1.add(keyexp[random.randint(0, 34)])
            for k,s in zip(range(4),set1):
                quiz.write('%s.'%('ABCD'[k]) +s+'\n'
			quiz.write('\n')

OJ训练题 #

1、【入门】摘苹果 – ★
2、【入门】素数字母 – ★
3、【入门】请问一个正整数能够整除几次2? – ★
4、【入门】郭远摘苹果 – ★★
5、【入门】汉诺塔的移动次数 – ★★★