python3----生成随机数(random模块)

1、random.choice(sep) 从一个序列中随机选取一个元素返回

>>> list1=["a",1,2,3,"b"]

>>> random.choice(list1)
1
>>> tuple1=(1,2,3,4)
>>> random.choice(tuple1)
2
 
2、random.shuffle(sep) 用于将一个列表中的元素打乱
 
>>> list1=["a",1,2,3,"b"]
>>> random.shuffle(list1)
>>> list1
[3'b''a'12]
 
3、random.sample(seq, k)在sep列表中随机选取k个元素返回
>>> list1=["a",1,2,3,"b"]
>>> random.sample(list1,2)
[3, 'b']
>>> 

4、random.randint(a,b)随机返回a到b之间的一个整数
>>> random.randint(1,10)
7
>>> random.randint(10,1000)

5、random.random() 随机返回0到1之间的浮点数
>>> random.random()
0.3063577972461343
>>> random.random()
0.3168827759398656
6、random.randrange([start], stop[, step]) 从指定范围内,按指定基数递增的集合中 获取一个随机数
>>> random.randrange(10,20)
12
>>> random.randrange(10,20,2)#从10,12,14,16,18中随机选取一个数
12
>>> 

7、random.uniform(a, b) 随机返回a到b之间的一个浮点数

>>> random.uniform(30,10)
20.403665604836398
>>> random.uniform(10,30)
19.506293480962483
>>> random.uniform(10,10)
10.0
>>> 

例子:地理老师为了考核班里的20个学生,中国34个省的省会城市是什么。但为了防止学生作弊,每份试卷的题目顺序不一样,答案也不一样。因此需要写一个程序创建20份试卷,每份试卷创建34个多重选择题,次序随机。为每个题提供一个正确答案和3个随机的错误答案。试卷写进20个文本文件,每份试卷的答案也写进20个文本文件。 
 1 import random
 2 capital_city_string = "北京市--北京 ;上海市 --上海 ;天津市 --天津 ;重庆市 --重庆 ;" \
 3                     "黑龙江省 --哈尔滨 ;吉林省 --长春; 辽宁省 --沈阳 ;内蒙古自治区--呼和浩特 ;" \
 4                      "河北省 --石家庄 ;新疆维吾尔自治区--乌鲁木齐 ;甘肃省-- 兰州 ;青海省--西宁 ;" \
 5                      "陕西省 --西安 ;宁夏回族自治区--银川 ;河南省-- 郑州 ;山东省--济南 ;" \
 6                     "山西省--太原 ;安徽省--合肥 ;湖南省--长沙;湖北省--武汉 ;江苏省--南京 ;" \
 7                      "四川省--成都; 贵州省--贵阳 ;云南省--昆明 ;广西壮族自治区--南宁 ;" \
 8                     "西藏自治区-- 拉萨 ;浙江省--杭州; 江西省--南昌 ;广东省--广州 ;福建省--福州 ;" \
 9                     "台湾省--台北 ;海南省 --海口 ;香港特别行政区-- 香港; 澳门特别行政区-- 澳门"
10 
11 grade = {0: "A", 1: "B", 2: "C", 3: "D"}  # 设置答案等级
12 
13 
14 
15 def get_dict(city_string):  # 将省会和省会城市的字符串转变成一个字典格式
16     province_and_capital_dict = {}
17     city_list = city_string.split("")
18     for city_index in city_list:
19         province_and_capital_list = city_index.split("--")
20         province_and_capital_dict[province_and_capital_list[0]] = province_and_capital_list[1]
21     return province_and_capital_dict
22 
23 
24 def make_test_paper(province_and_capital_dict):
25     for i in range(20):
26         f_test = open("E:\\test" + str(i + 1) + ".txt", "w+")  # 创建试卷文件
27         f_answer = open("E:\\answer" + str(i + 1) + ".txt", "w+")  # 创建试卷答案文件
28         f_test.write("Name:\n")  # 试卷前需要学生填写自己的姓名
29         f_test.write("Score:\n\n")  # 试卷的得分
30         province_and_capital_dictkeys = list(province_and_capital_dict.keys())  # 获得34省列表
31         random.shuffle(province_and_capital_dictkeys)  # 随机打乱34省列表的顺序
32         for i in range(34):  # 循环创建34个题目
33             # 将问题写入文件
34             f_test.write(str(i+1)+","+"what's the capital of " + province_and_capital_dictkeys[i]+"?\n")
35             correct_answer = province_and_capital_dict[province_and_capital_dictkeys[i]]  # 问题的正确答案
36             error_answer = list(province_and_capital_dict.values())  # 所有的答案
37             error_answer.remove(correct_answer)  # 在所有答案中移除正确的那个答案,得到错误答案的列表
38             random.shuffle(error_answer)  # 随机打乱错误答案
39             answer = random.sample(error_answer, 3)  # 在错误答案列表中随机选择3个错误答案
40             answer.append(correct_answer)  # 将正确答案添加到答案列表中
41             random.shuffle(answer)  # 再打乱4个答案的顺序
42             f_test.write("\n"+grade[0]+answer[0]+"\n"+grade[1]+answer[1]+"\n"+grade[2]+answer[2]+"\n"+grade[3] +
43                          answer[3] + "\n\n")  # 得到A、B、C、D四个答案,并写入到文件中
44             answer_grade = ""
45             for answer_index in answer:
46                 if answer_index == correct_answer:
47                     index = answer.index(answer_index)
48                     answer_grade = grade[index]  # 得到正确答案的等级(A、B、C、D)
49             f_answer.write(str(i+1)+","+answer_grade+correct_answer)  # 最后将答案写入试卷答案文件
50         f_test.close()
51         f_answer.close()
52 
53 调用两个方法
54 if __name__ == "__main__":
55     province_and_capital_dict = get_dict(capital_city_string)
56     print(province_and_capital_dict)
57     make_test_paper(province_and_capital_dict)

 

posted @ 2018-01-15 19:10  jonm  阅读(5557)  评论(0编辑  收藏  举报