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