主要内容 #
- 综合实战:利用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、【入门】汉诺塔的移动次数 – ★★★