我是爱哭鬼  

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

1
2
3
4
5
6
>>> list1=["a",1,2,3,"b"]
>>> random.choice(list1)
1
>>> tuple1=(1,2,3,4)
>>> random.choice(tuple1)
2

2、random.shuffle(sep) 用于将一个列表中的元素打乱

1
2
3
4
>>> list1=["a",1,2,3,"b"]
>>> random.shuffle(list1)
>>> list1
[3, 'b', 'a', 1, 2]

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个文本文件。 

复制代码
#! coding=utf-8
import random
capitalCityString="北京市--北京 ;上海市 --上海 ;天津市 --天津 ;重庆市 --重庆 ;\
黑龙江省 --哈尔滨 ;吉林省 --长春; 辽宁省 --沈阳 ;内蒙古自治区--呼和浩特 ;\
河北省 --石家庄 ;新疆维吾尔自治区--乌鲁木齐 ;甘肃省-- 兰州 ;青海省--西宁 ;\
陕西省 --西安 ;宁夏回族自治区--银川 ;河南省-- 郑州 ;山东省--济南 ;\
山西省--太原 ;安徽省--合肥 ;湖南省--长沙;湖北省--武汉 ;江苏省--南京 ;\
四川省--成都; 贵州省--贵阳 ;云南省--昆明 ;广西壮族自治区--南宁 ;\
西藏自治区-- 拉萨 ;浙江省--杭州; 江西省--南昌 ;广东省--广州 ;福建省--福州 ;\
台湾省--台北 ;海南省 --海口 ;香港特别行政区-- 香港; 澳门特别行政区-- 澳门。"
grade = {0: "A", 1: "B", 2: "C", 3: "D"}#设置答案等级

def getDict(cityString):#将省会和省会城市的字符串转变成一个字典格式
    provinceAndCapitalDict = {}
    cityList=cityString.split("")
    for cityIndex in cityList:
        provinceAndCapitalList=cityIndex.split("--")
        provinceAndCapitalDict[provinceAndCapitalList[0]]=provinceAndCapitalList[1]
    return provinceAndCapitalDict


def makeTestPaper(provinceAndCapitalDict):
    for i in range(20):
        fTest=open("E:\\test"+str(i+1)+".txt","w+")#创建试卷文件
        fAnswer=open("E:\\answer"+str(i+1)+".txt","w+")#创建试卷答案文件
        fTest.write("Name:\n")#试卷前需要学生填写自己的姓名
        fTest.write("Score:\n\n")#试卷的得分
        provinceAndCapitalDictkeys=list(provinceAndCapitalDict.keys())#获得34省列表
        random.shuffle(provinceAndCapitalDictkeys)#随机打乱34省列表的顺序
        for i in range(34):#循环创建34个题目

            fTest.write(str(i+1)+","+"what's the capital of "+provinceAndCapitalDictkeys[i]+"?\n")#将问题写入文件
            correctAnswer=provinceAndCapitalDict[provinceAndCapitalDictkeys[i]]#问题的正确答案
            errorAnswer=list(provinceAndCapitalDict.values())#所有的答案
            errorAnswer.remove(correctAnswer)#在所有答案中移除正确的那个答案,得到错误答案的列表
            random.shuffle(errorAnswer)#随机打乱错误答案
            Answer=random.sample(errorAnswer,3)#在错误答案列表中随机选择3个错误答案
            Answer.append(correctAnswer)#将正确答案添加到答案列表中
            random.shuffle(Answer)#再打乱4个答案的顺序
            fTest.write("\n"+grade[0]+Answer[0]+"\n"+grade[1]+Answer[1]+"\n"+grade[2]+Answer[2]+"\n"+grade[3]+Answer[3]+"\n\n")#得到A、B、C、D四个答案,并写入到文件中
            answerGrade=""
            for AnswerIndex in Answer:
                if AnswerIndex==correctAnswer:
                    index=Answer.index(AnswerIndex)
                    answerGrade=grade[index]#得到正确答案的等级(A、B、C、D)
            fAnswer.write(str(i+1)+","+answerGrade+correctAnswer)#最后将答案写入试卷答案文件
        fTest.close()
        fAnswer.close()

#调用两个方法
if __name__=="__main__":
    provinceAndCapitalDict = getDict(capitalCityString)
    makeTestPaper(provinceAndCapitalDict)
复制代码

最后在磁盘上创建的文件如下:

打开一个试卷文件,如下图:

 

 打开试卷答案文件,如下图:

 

posted on   我是爱哭鬼  阅读(2588)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
 
点击右上角即可分享
微信分享提示