针对python2.7和python3.4二个版本的不同之处说明如下:
1、在python3.4下,经测试字符串存储的类型已经都成为str,包括英文,汉字
而在python2.7下,经测试字符串存储类型,英文为unicode;汉字为str
(1)在python2.7下还需要设置默认编码,具体如下:
reload(sys)
sys.setdefaultencoding('utf-8')
要不然会报如下错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 18: ordinal not in range(128)
(2)在python2.7下还需要对汉字的str进行转码,具体如下:
s = s.decode('utf-8')
#! /usr/bin/env python #coding=gbk ################################################ # Task Name: 三级菜单 # # Description:打印省、市、县三级菜单 # # 可返回上一级 # # 可随时退出程序 # #----------------------------------------------# # Author:Mike M Zhu # ################################################ area_dic = { '香港':{'香港':['香港']}, '澳门':{'澳门':['澳门']}, '台湾':{'台湾':['台湾']}, '钓鱼岛':{'钓鱼岛':['钓鱼岛']}, '北京市':{ '市辖区':['市辖区'], '东城区':['东城区'], '西城区':['西城区'], '崇文区':['崇文区'], '宣武区':['宣武区'], '朝阳区':['朝阳区'], '丰台区':['丰台区'], '石景山区':['石景山区'], '海淀区':['海淀区'], '门头沟区':['门头沟区'], '房山区':['房山区'], '通州区':['通州区'], '顺义区':['顺义区'], '昌平区':['昌平区'], '大兴区':['大兴区'], '怀柔区':['怀柔区'], '平谷区':['平谷区'], '密云县':['密云县'], '延庆县':['延庆县']}, '山东' : { '青岛' : ['四方','黄岛','崂山','李沧','城阳'], '济南' : ['历城','槐荫','高新','长青','章丘'], '烟台' : ['龙口','莱山','牟平','蓬莱','招远']}, '江苏' : { '苏州' : ['沧浪','相城','平江','吴中','昆山'], '南京' : ['白下','秦淮','浦口','栖霞','江宁'], '无锡' : ['崇安','南长','北塘','锡山','江阴']}, '浙江' : { '杭州' : ['西湖','江干','下城','上城','滨江'], '宁波' : ['海曙','江东','江北','镇海','余姚'], '温州' : ['鹿城','龙湾','乐清','瑞安','永嘉']}, '安徽' : { '合肥' : ['蜀山','庐阳','包河','经开','新站'], '芜湖' : ['镜湖','鸠江','无为','三山','南陵'], '蚌埠' : ['蚌山','龙子湖','淮上','怀远','固镇']}, '广东' : { '深圳' : ['罗湖','福田','南山','宝安','布吉'], '广州' : ['天河','珠海','越秀','白云','黄埔'], '东莞' : ['莞城','长安','虎门','万江','大朗']}, '上海市':{ '闵行区':['闵行区'], '长宁区':['长宁区'], '浦东新区':['浦东新区'], '嘉定区':['嘉定区'], '青浦区':['青浦区'], '闸北区':['闸北区'], '宝山区':['宝山区'], '静安区':['静安区'], '虹口区':['虹口区'], '黄浦区':['黄浦区'], '松江区':['松江区'], '普陀区':['普陀区'], '徐汇区':['徐汇区'], '奉贤区':['奉贤区'], '杨浦区':['杨浦区']} } #area_dic #省:pro 11个 市:city 区:town pro_list = list(area_dic.keys()) while True: print("省".center(50,'=')) for i in pro_list: print(str(pro_list.index(i)+1)+'-'+i) #打印省列表和对应编号 pro_id_input = raw_input("请输入您的省编号,或按q退出:") if pro_id_input.isdigit(): #判断是否是数字 pro_id_input = int(pro_id_input) if pro_id_input > 0 and pro_id_input <= len(pro_list): pro_name = pro_list[pro_id_input-1] print("您输入的省名为:%s,其城市列表如下:" %pro_name) city_list = list(area_dic[pro_name].keys()) while True: #根据省打印所在城市列表和对应编号 print("城市".center(50,'=')) for c in city_list: print(str(city_list.index(c)+1) + '-' + c) city_id_input = raw_input("请输入您的城市编号,或按b返回上级菜单,或按q退出:") if city_id_input.isdigit(): city_id_input = int(city_id_input) if city_id_input > 0 and city_id_input <= len(city_list): city_name = city_list[city_id_input-1] print("您输入的城市名位:%s, 其区县列表如下:" %city_name) town_list = area_dic[pro_name][city_name] while True: print("区县".center(50,'=')) for t in town_list: print(str(town_list.index(t)+1) + '-' +t) backorquit_input = raw_input("按b返回上级菜单,或按q退出:") if backorquit_input == 'b': break elif backorquit_input == 'q': exit() else: print('您的输入有误!') else: print('输入的城市编号%s不存在' %city_id_input) elif city_id_input == 'b': break elif city_id_input == 'q': exit() else: print('您的输入有误!') else: print('输入的省编号%s不存在' %pro_id_input) elif pro_id_input == 'q': break else: print('您的输入有误!')
posted on
浙公网安备 33010602011771号