python文件读写练习题--随机出10套试卷

要求就是:10套试卷题目顺序不同,答案顺序不同 

import random
import os
city = {'河北省':'石家庄市','山西省':'太原市','辽宁省':'沈阳市','吉林省':'长春市','黑龙江省':'哈尔滨市','江苏省':'南京市','浙江省':'杭州市','安徽省':'合肥市','福建省':'福州市','江西省':'南昌市'}

#在当前路径下创建目录,用于保存试卷
if not os.path.exists('.\\data\\exam'):
    os.makedirs('.\\data\\exam')

#切换到创建的目录下
os.chdir('.\\data\\exam')

#创建十套试卷
for i in range(10):
    #试卷文件
    exam = open('试卷'+str(i+1)+'.txt','w')
    exam.write('姓名:\t')
    exam.write('成绩:\n\n')
    exam.write('单选题:请从下面选项中选出该省份对应的省会\n')

    #答案文件
    answ = open('试卷'+str(i+1)+'答案.txt','w')

    #题目列表
    provinces = list(city.keys())
    #答案选项
    options = ['A、','B、','C、','D、']

    #10道题目
    for j in range(10):
        #答案列表
        cityNames = list(city.values())
        #随机选题,打乱顺序
        province = random.choice(provinces)
        exam.write(str(j+1)+'、'+province+'的省会是?\n')
        #去除已选择的,避免重复
        provinces.remove(province)

        #随机选3个省会与正确的组成答案
        succ = city[province]
        cityNames.remove(succ)

        #随机选取3个错误省会当作答案
        error1 = random.choice(cityNames)
        cityNames.remove(error1)

        error2 = random.choice(cityNames)
        cityNames.remove(error2)

        error3 = random.choice(cityNames)
        cityNames.remove(error3)
        
        answers = [succ,error1,error2,error3]

        #将选项顺序打乱随机
        for opt in options:
            answer = random.choice(answers)
            answers.remove(answer)
            exam.write(opt+answer+'\t')
            #正确答案写入答案文件
            if answer==succ:
                answ.write(str(j+1)+'、'+opt+answer+'\n')

        exam.write('\n\n')
    
    exam.close()
    answ.close()



'''
以上代码是自己依据java经验而写,在随机选择的地方有点麻烦,其实python有函数
random.sample(provinces,10) 从provinces中随机选10个
random.shuffle(provinces) 将provinces随机排序
两种方式都可以使用这样直接就将10道题目顺序打乱了,可以少一重for循环  
'''
provinces = list(city.keys())
print('原provinces:',provinces)
print('random.sample()函数:',random.sample(provinces,10))
   
provinces = list(city.keys())
print('原provinces:',provinces)
random.shuffle(provinces)
print('随机排序后:',provinces)
    

 效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/153024.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何深度了解汤泉场所?VR全景给你答案

天气逐步转凉,温泉、水会这些室内汤泉场所开始登上消费的主战场。伴随着人们物质生活水平的提高,人们对休闲养生会馆的要求也愈发旺盛,汤泉场所也逐渐从单一的洗浴开始向休闲、娱乐、保健、桑拿等多种业态形式发展,那么大家如何深…

如何利用SD-WAN优化云时代的网络连接

在多云时代下,企业的网络连接需求面临着诸多挑战和变化。随着企业应用的日益复杂和分散,网络连接也变得更加复杂。企业需要同时连接多个云服务商、数据中心、分支机构和移动用户等,并保证网络连接的稳定性和可靠性。同时,企业对于…

什么是自动化测试

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

大数据的技术运用:探索未来的无限可能性

随着科技的不断进步和社会信息的快速增长,大数据已成为一个热门话题。本文将探讨大数据技术在多个领域的应用,以及它对未来的影响和无限可能性。 导言 在过去的几十年里,大数据技术取得了惊人的发展,它不仅改变了企业的经营方式&a…

2024江苏专转本流程与时间节点

2024江苏专转本考生,提前看一下转本的流程与时间节点!适用于江苏三年制、五年一贯制专转本考试: 1. 专转本工作通知(2023年12月上旬) 若无特殊情况,到12月中旬,江苏省教育厅会发布关于做好2024…

spark性能调优 | 内存优化

目录 我们先了解一下有哪些内存温馨提示RDD示范(spark版本2.1.1)RDD进行优化Df和Ds进行示范 我们先了解一下有哪些内存 1.storage内存 存储数据,缓存 可预估2.shuffle内存 计算join groupby 不可预估spark1.6之前 静态管理的,spark1.6之…

2023测试工程师做哪些准备,才能从众人中脱颖而出,不看后悔10年

最近,裁员的声音此起披伏。貌似我们只有努力奔跑,这一块带有命运诅咒的“石头”才不会轻易的落到我们的头上。 在不是金三银四、金九银十的求职旺季外,还会有机会吗?我想,对于有能力的人来说,任何时候都可…

数据库测试的认知和分类详解

现在的软件系统,尤其是业务应用系统,后台都连接着一个数据库。数据库中存储了大量的数据,数据库的设计是否合理和完善,SQL语句编写是否正确、高效,都直接影响了一个软件系统的功能正确性和性能表现。今天跟大家分享一些…

【python】均值、中值和高斯滤波详解和示例

本文对均值、中值和高斯滤波进行详解,以帮助大家理解和使用。 这里写目录标题 均值滤波中值滤波高斯滤波核大小为(9,9)核大小为(51,51) 小结 下面是示例中使用的原图。 均值滤波 均值滤波是一种简单的平滑滤波器&…

猫罐头怎么选择?市面上最受欢迎的5款猫罐头推荐!

很多人在买猫罐头的时候,可是费了老鼻子劲儿了。他们浏览了各大平台,读了大量的评测文章,就想着找到最好的那一个。但最后他们发现,很多所谓的「实测」都是虚的,假的。花了几天时间,结果选了个质量不好的猫…

骨传导式蓝牙耳机值得入手吗?盘点最值得入手的5款骨传导耳机

在骨传导耳机还没有火之前,相信很多朋友都是使用入耳式和头戴式耳机比较多一点,但是慢慢的会发现,这两种耳机都存在很大的问题,比如说入耳式耳机,长时间佩戴会造成耳朵痛等问题,而头戴式耳机因为隔音效果好…

vue2项目从0搭建(二):配置代理,登录功能和菜单权限

前言: 发送ajax,fetch,websocket请求获取服务端的数据,配置代理是必须的环节 登录功能和菜单权限是后台管理系统中非常经典且十分重要的业务,这里涉及的知识点也是比较多的,坑也多,面试也是很重要的一环。 这里必须得会,没错是必须。 配置服务代理 创建两个node服务 在和…

【SOLO】实例分割论文SOLO: Segmenting Objects by Locations详解

🚩🚩实例分割论文专栏快速跳转🚩🚩【实例分割】 目录 🌞🌞1.摘要 🌳🌳2.创新点 🌼🌼3.网络结构 🎃🎃3.1背景 🎃&…

4-flask-cbv源码、Jinja2模板、请求响应、flask中的session、flask项目参考

1 flask中cbv源码 2 Jinja2模板 3 请求响应 4 flask中的session 5 flask项目参考 1 flask中cbv源码 ***flask的官网文档:***https://flask.palletsprojects.com/en/3.0.x/views/1 cbv源码执行流程1 请求来了,路由匹配成功---》执行ItemAPI.as_view(item…

【java学习—十五】线程的生命周期(4)

文章目录 线程的生命周期1. 相关概念 线程的生命周期 1. 相关概念 线程的生命周期:线程从生到死的整个经历。 JDK 中用 Thread.State 枚举表示了线程的几种状态 要想实现多线程,必须在主线程中创建新的线程对象。 Java 语言使用 Thread 类及其子类的…

UnitTest + Selenium 完成在线加法器自动化测试

1. 任务概述 利用 UnitTest 与 Selenium 编写自动化用例,测试在线加法器中的整数单次加法功能【如123 】 人工操作流程(测试 12 是否等于 3): 打开在线加法器点击按钮1,再点击按钮,再点击按钮2&#xff0c…

adb手机调试常用命令

查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery 查看分辨率 adb shell wm size 查看屏幕密度 adb shell wm density 查看显示屏参数 adb shell dumpsys window displays 查看android_id adb shell settings get secure android…

安科瑞为数据中心绿色高质量发展贡献力量

安科瑞 崔丽洁  0前言 目前,数字经济的迅猛发展激发了数据中心的算力需求,数据中心规模与功耗密度不断提高,能耗问题日益突出。短期内,数据中心的能耗、碳排放量仍会呈现上升趋势。面对国家“双碳”压力,我国数据中心…

Active Directory 域服务基础知识

Active Directory 域服务(AD DS)是 Microsoft 提供的传统本地域服务,它是 Active Directory(AD)中的核心组件和服务器角色,Active Directory(AD)是 Windows 操作系统环境中的专用专有…