IT编程 > 脚本编程 > Python

pythonABC学习:测试卷小游戏

37人参与2020-07-07

pythonABC学习:测试试卷小游戏

正文

项目题目

素材:我国的省及对应的城市
‘山东’:‘济南’,
‘河北’:‘石家庄’,
‘吉林’:‘长春’,
‘黑龙江’:‘哈尔滨’,
‘辽宁’:‘沈阳’,
‘内蒙古’:‘呼和浩特’,
‘新疆’:‘乌鲁木齐’,
‘甘肃’:‘兰州’,
‘宁夏’:‘银川’,
‘山西’:‘太原’,
‘陕西’:‘西安’,
‘河南’:‘郑州’,
‘安徽’:‘合肥’,
‘江苏’:‘南京’,
‘浙江’:‘杭州’,
‘福建’:‘福州’,
‘广东’:‘广州’,
‘江西’:‘南昌’,
‘海南’:‘海口’,
‘广西’:‘南宁’,
‘贵州’:‘贵阳’,
‘湖南’:‘长沙’,
‘湖北’:‘武汉’,
‘四川’:‘成都’,
‘云南’:‘昆明’,
‘西藏’:‘拉萨’,
‘青海’:‘西宁’,
‘天津’:‘天津’,
‘上海’:‘上海’,
‘重庆’:‘重庆’,
‘北京’:‘北京’,
‘台湾’:‘台北’,
‘香港’:‘香港’,
‘澳门’:‘澳门’
需生成指定数目的试卷,每张卷子题目顺序要不同,答案要全部打乱,而且还需生成对应答案
在这里插入图片描述

使用工具

使用random模块,主要是里面的shuffle与sample命令,还有一些文件操作命令与循环的命令

实现代码

import random
provinces_dict = {
'山东':'济南',
'河北':'石家庄',
'吉林':'长春',
'黑龙江':'哈尔滨',
'辽宁':'沈阳',
'内蒙古':'呼和浩特',
'新疆':'乌鲁木齐',
'甘肃':'兰州',
'宁夏':'银川',
'山西':'太原',
'陕西':'西安',
'河南':'郑州',
'安徽':'合肥',
'江苏':'南京',
'浙江':'杭州',
'福建':'福州',
'广东':'广州',
'江西':'南昌',
'海南':'海口',
'广西':'南宁',
'贵州':'贵阳',
'湖南':'长沙',
'湖北':'武汉',
'四川':'成都',
'云南':'昆明',
'西藏':'拉萨',
'青海':'西宁',
'天津':'天津',
'上海':'上海',
'重庆':'重庆',
'北京':'北京',
'台湾':'台北',
'香港':'香港',
'澳门':'澳门'
}
# print(provinces_dict['广东'])
#请输入你要输出多少份试卷
paperNum = int(input('请输入试卷份数: '))
for papernum in range(paperNum):
    paperfile = open('student_paper{}.txt'.format(papernum+1),'w',encoding='utf-8')
    answerfile = open('student_answer{}.txt'.format(papernum+1),'w',encoding='utf-8')
    paperfile.write('\t姓名:\n')
    paperfile.write('\t班级:\n')
    paperfile.write('\t年龄:\n')
    paperfile.write(' '*20+'各省会测试券\n')
    provinces = list(provinces_dict.keys())
    random.shuffle(provinces)
    for questionNum in range(len(provinces)):
        paperfile.write('{}、 {}的省会是? \n'.format(questionNum+1, provinces[questionNum]))
        correct_answer = provinces_dict[provinces[questionNum]]
        wrong_answer = list(provinces_dict.values())
        wrong_answer.remove(correct_answer)
        wrong_answer = random.sample(wrong_answer,3)
        answer_list = wrong_answer + [correct_answer]
        random.shuffle(answer_list)  #shuffle后不用对象接受
        # print(answer_list[0])
        for selectNum in range(4):
            paperfile.write('{}. {}\n'.format('ABCD'[selectNum] , answer_list[selectNum]))
        paperfile.write('\n')
        answerfile.write('{}、 {}\n'.format(questionNum+1,'ABCD'[answer_list.index(correct_answer)]))
    paperfile.close()
    answerfile.close()

经验总结

  1. 关于random.shuffle(answer_list)中的shuffle使用是不需再用变量接受重排后的列表的
  2. 关于answer_list = wrong_answer + [correct_answer]中需要将correct_answer类型为字符串的转换为列表,再进行列表的加法
  3. 关于’ABCD’[selectNum],可以直接对特定的字符串进行str[num]的操作
  4. 程序完成后要记得close()文件,释放内存

本文地址:https://blog.csdn.net/weixin_43768611/article/details/107140956

您对本文有任何疑问!!点此进行留言回复

推荐阅读

猜你喜欢

pythonABC学习:测试卷小游戏

07-07

python实训记录 One day

07-07

Python继承特性

07-07

python基于WSGI服务器程序实现helllo

07-07

python efficientdet AttributeError: module ‘gast‘ has no attribute ‘Num‘

07-07

【剑指 Offer-python】 03. 数组中重复的数字

07-07

大家都在看

pythonABC学习:测试卷小游戏

07-07

pip安装速度慢的一种解决方法

07-30

Scrapy爬虫实例讲解_校花网

07-25

前面程序整合加自定义日志,日志会记录重目前还在找问题

06-12

python僵尸进程产生的原因

04-17

python reverse反转部分数组的实例

01-25

Python机器学习 (Python Machine Learning 中文版 PDF)

03-12

Python cv指定间隔截取视频帧并保存图像到指定路径

07-08

拓展阅读

热门评论