码迷,mamicode.com
首页 > 编程语言 > 详细

一个有意思的Python小程序(全国省会名称随机出题)

时间:2017-05-15 00:39:48      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:处理   澳门   correct   福州   dex   false   山西   南京   新建   

最近比较迷Python,仿照《Python编程快速上手》8.5写了一个随机出卷的小程序。程序本身并不难,关键是解决问题的思路,还有就是顺便复习了一下全国地名(缅怀一下周总理)。

OK其实还是有一个难点的,就是关于Python的中文编码问题,如何把中文字典输入到txt然后再把它读出来,程序中借用了json方法,而且在输出时decode、encode,有一些参考的价值吧。废话不说了,上程序。

# *encoding:utf-8 *
from __future__ import print_function
import os
import json
import random
#总理的诗:两湖两广两河山,五江云贵福吉安,四西二宁青甘陕,还有内台北上天
capitals = {湖南:长沙,湖北:武汉,广东:广州,广西:南宁,河北:石家庄,河南:郑州,山东:济南,山西:太原,
江苏:南京,浙江:杭州,江西:南昌,黑龙江:哈尔滨,新疆:乌鲁木齐,云南:昆明,贵州:贵阳,福建:福州,吉林:吉林,安徽:合肥,
四川:成都,西藏:拉萨,宁夏:银川,辽宁:长春,青海:西宁,甘肃:兰州,陕西:太原,
内蒙古:呼和浩特,台湾:台北,北京:北京,上海:上海,天津:天津,重庆:重庆,
香港:香港,澳门:澳门,}
#将测试集合保存为txt,中文字典转字符串后很难处理,所以借用json处理,json.dumps转字符串
capitalslContent = json.dumps(capitals, encoding = utf-8, ensure_ascii = False) 
capitalTxt = open(./lesson8/capitals.txt,w)
capitalTxt.write(capitalslContent)
capitalTxt.close()

#从txt中读取测试集合
capitalTxt = open(./lesson8/capitals.txt)
capitals = json.loads(capitalTxt.read())              #直接print为Unicode编码字典
# capitals = json.dumps(capitals,ensure_ascii=False)  #输出中文字符串编码
# for key,value in capitals.items():                  #遍历字典输出中文的key和value
#     print(key+‘:‘+value)
capitalTxt.close()
#生成首府测试集合试卷(随机生成试卷2份) for qNum in range(2): qFile = open(./lesson8/capitalQuestions%s.txt%(qNum+1),w) aFile = open(./lesson8/capitalAnswers%s.txt%(qNum+1),w) qFile.write(姓名:\n\n日期:\n\n学号:\n\n) qFile.write(( *20)+全国省会名称测试 (地理卷%s)\n\n%(qNum+1)) states = list(capitals.keys()) random.shuffle(states) for questionNum in range(len(capitals)): correctA = capitals[states[questionNum]] wrongA = list(capitals.values()) del wrongA[wrongA.index(correctA)] wrongA = random.sample(wrongA,3) answerOption = wrongA+[correctA] random.shuffle(answerOption) qFile.write(%s. %s的省会是_____\n%(questionNum+1,states[questionNum].encode(utf-8))) for i in range(4): qFile.write(%s. %s\n%(ABCD[i],answerOption[i].encode(utf-8))) qFile.write(\n) aFile.write(%s. %s\n%(questionNum+1,ABCD[answerOption.index(correctA)])) qFile.close() aFile.close()

注意,没有检测文件路径,需要在当前文件夹下新建一个lesson8的文件夹,运行程序后会在该目录生成测试卷。

 

一个有意思的Python小程序(全国省会名称随机出题)

标签:处理   澳门   correct   福州   dex   false   山西   南京   新建   

原文地址:http://www.cnblogs.com/mar-q/p/6854494.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!