您的位置:首页 > 编程语言 > Python开发

python 基础2 编码转换 pycharm 配置 运算符 基本数据类型int str list tupple dict for循环 enumerate序列方法 range和xrange

2017-05-10 23:50 1181 查看
一大纲

2运算符

3基本数据类型

  整型:int

  字符串:str

  列表:list

  元组:tuple

  字典:dic

4forenumratexrangerange

上节内容回顾:

  

二前天作业讲解:

知识点:

  判断奇偶:除以2取模

1%
23%2=1
32%2=0
44%2=0


  详细见urlhttp://www.cnblogs.com/liujianzuo888/articles/5440915.html
三编码转换

unicode可以编译成UTF-UGBK





#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='Administrator'

a='刘建佐'#默认是utf-8
a_unicod=a.decode('utf-8')#decode是解码成unicode括号是脚本内容的默认编码即:将脚本内容的utf-8解码成unicode
a_gbk=a_unicod.encode('gbk')#encode是编码,将unicode的编码内容编码成指定的,这里是gbk
print(a_gbk)#用于终端打印

#print(u"刘建佐")#3里面是字符串2里面是unicode

#3版本直接将utf-8编码成GBK不需要先转成unicode了,因为3没有了

E:\py_test\s2_py>python3test.py

Traceback(mostrecentcalllast):

File"test.py",line6,in<module>

a_unicod=a.decode('utf-8')#decode是解码成unicode括号是脚本内容的默认编码即:将脚本内容的utf-8解码成unicode

AttributeError:'str'objecthasnoattribute'decode'




四pycharm安装配置

  file-setings-editor-file&&fileencodetemplate输入

  

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'


五pycharm快捷键

  ctrl+/批量注释

  shift+方向键选中

  shift+tab向左tab

六运算符

算数运算:



比较运算:



赋值运算:



逻辑运算:



成员运算:



身份运算:面向对象讲解



运算符
名称
说明
例子
+

两个对象相加
3+5得到8。'a'+'b'得到'ab'。
-

得到负数或是一个数减去另一个数
-5.2得到一个负数。50-24得到26。
*

两个数相乘或是返回一个被重复若干次的字符串
2*3得到6。'la'*3得到'lalala'。
**

返回x的y次幂
3**4得到81(即3*3*3*3)
/

x除以y
4/3得到1(整数的除法得到整数结果)。4.0/3或4/3.0得到1.3333333333333333
//
取整除
返回商的整数部分
4//3.0得到1.0
%
取模
返回除法的余数
8%3得到2。-25.5%2.25得到1.5
<<
左移
把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)
2<<2得到8。——2按比特表示为10
>>
右移
把一个数的比特向右移一定数目
11>>1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
&
按位与
数的按位与
5&3得到1。
|
按位或
数的按位或
5|3得到7。
^
按位异或
数的按位异或
5^3得到6
~
按位翻转
x的按位翻转是-(x+1)
~5得到-6。
<
小于
返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
5<3返回0(即False)而3<5返回1(即True)。比较可以被任意连接:3<5<7返回True。
>
大于
返回x是否大于y
5>3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
<=
小于等于
返回x是否小于等于y
x=3;y=6;x<=y返回True。
>=
大于等于
返回x是否大于等于y
x=4;y=3;x>=y返回True。
==
等于
比较对象是否相等
x=2;y=2;x==y返回True。x='str';y='stR';x==y返回False。x='str';y='str';x==y返回True。
!=
不等于
比较两个对象是否不相等
x=2;y=3;x!=y返回True。
not
布尔“非”
如果x为True,返回False。如果x为False,它返回True。
x=True;notx返回False。
and
布尔“与”
如果x为False,xandy返回False,否则它返回y的计算值。
x=False;y=True;xandy,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算。
or
布尔“或”
如果x是True,它返回True,否则它返回y的计算值。
x=True;y=False;xory返回True。短路计算在这里也适用。
练习


View
Code


大于小于左移右移按位与按位或

>>>3>2
True
>>>3<2
False
>>>3>=2
True
>>>3!=2
True
>>>print"数字变成2进制"
数字变成2进制
>>>5<<2
20
>>>5>>2
1
>>>5|3
7
>>>5&3
1




12345678
1248163264128
数组5转二进制5=1+4
101所以是5就是00000101
左移两位5<<2
00101所以5<<2结果是20即4+16=20
右移两位5>>2
1所以结果是1
按位与5&3
5的二进制1013的二进制是110
101
110
得出结果100竖向看:1和1与是1,0和1与是0,1和0与是0,所以得出的结果是1
按位或5|3
5的二进制1013的二进制是110
101
110
得出结果111竖向看:1和1或是1,0和1或是1,1和0或是1,所以得出的结果是1+2+4=7



七基本数据类型



比如数字来说:

  数字的方法都放在int类中,而数字是类的实例化。如上图所示

1整型

n1=4
n2=4
print(n1.__add__(n2))

a=18
print("thenum18'sbitis:",a.bit_length())



View
Code

2、布尔值

  真或假

  1或0

3、字符串

"helloworld"


万恶的字符串拼接:

  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。

字符串格式化

name="alex"
print"iam%s"%name

#输出:iamalex


PS:字符串是%s;整数%d;浮点数%f
字符串常用功能:后面有练习

移除空白
分割
长度
索引
切片


View
Code

示例

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'

a1="Alex"
print(a1.capitalize())

b="alexalexalex"
print(b.center(20,"*"))

print(b.count("le",1,9))
print(b.find("xxlex"))
print(b.istitle())
print(b.partition("le"))
print(b.replace("ale","ALE",2))
print(b.split("le",2))
print(a1.swapcase())
print(a1.upper())
print(a1.zfill(20))
print(a1.__add__("dfsf"))
s="hell{0},age{1}"
print(s.format('alex',19))
print("字符串的分片",a1[0],a1[0:2],a1[0:])

注意:strip()
  1可以去除两端空格
2可以去除末尾\n
3可以去除空行
4可以传如参数,比如
    n=“hello”
s=n.strip(“o”)
    prints结果是=‘hell’


4、列表

创建列表:

name_list=['alex','seven','eric']
或
name_list=list(['alex','seven','eric'])


基本操作:

索引
切片
追加
删除
长度
切片
循环
包含


View
Code

示例:

###### 列表 ##########

#!/usr/bin/envpython #_*_coding:utf-8_*_ __author__='liujianzuo'

lis=[1,2,3,'alex']
cc=[5,5]
print(lis.count("alex"))
lis.extend(cc)
print(lis)

name_list=["eirc","alex",'tony']
"""
#索引
print(name_list[0])
#切片
print(name_list[0:2])
#len
print(name_list[2:len(name_list)])
#for
foriinname_list:
print(i)

#join方法,拼接字符串
li=["alex","eric"]
name="lijie"
ss="_".join(li)
s="_".join(name)
print(s,ss)

"""
#列表内部提供的其他功能
#append后追加
name_list.append('seven')
name_list.append('seven')
name_list.append('seven')
print(name_list)
#元素出现的次数
print(name_list.count('seven'))
#iterable,可迭代的
temp=[111,22,33,44]
#扩展,批量添加
name_list.extend(temp)
print(name_list)
#获取指定元素的索引位置
print(name_list.index('alex'))
#向指定索引位置插入数据
name_list.insert(1,'SB')
print(name_list)
#在原列表中移除掉最后一个元素,并将其赋值给a1
a1=name_list.pop()
print(name_list)
print(a1)
#移除某个元素
name_list.remove('seven')
print(name_list)
#翻转
name_list.reverse()
print(name_list)

# 删除指定索引位置
print(name_list)
delname_list[1:3]
print(name_list)


列表练习


View
Code

  

5、元组

创建元祖:元组一旦创建不等增加也不能减少

ages=(11,22,33,44,55)或ages=tuple((11,22,33,44,55))


基本操作:

索引

切片

循环

长度

包含


View
Code

示例:

###############元组#################
name_tuple=('alex','eric')
#索引
print(name_tuple[0])
#len
print(name_tuple[len(name_tuple)-1])
#切片
print(name_tuple[0:1])
#for
foriinname_tuple:
print(i)
#删除
#delname_tuple[0]不支持
#count,计算元素出现的个数
print(name_tuple.count('alex'))
#index获取指定元素的索引位置
print(name_tuple.index('alex'))


元组练习

不想别人改默认变量等。别人调用你的程序元组。别人该你的不想改用元组
只有两个方法
c.count(
c.index(

tuple(列表)列表变元组
>>>a=range(10)
>>>a
[0,1,2,3,4,5,6,7,8,9]
>>>d=tuple(a)
>>>d
(0,1,2,3,4,5,6,7,8,9)
list(元组)元组变列表
>>>d
(0,1,2,3,4,5,6,7,8,9)
>>>e=list(a)
>>>e
[0,1,2,3,4,5,6,7,8,9]


6、字典(无序)

创建字典:

person={"name":"mr.wu",'age':18}
或
person=dict({"name":"mr.wu",'age':18})


常用操作:

索引
新增
删除
键、值、键值对
循环
长度


View
Code

示例:


#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'

dic={1:2,"alex":4,4:9}
print(dic.get("alex"))
print(dic.items())
print(dic.keys())
print(dic.values())
print(dic.pop(2,None))
print(dic.setdefault("name","rain"))

######################字典###################
#字典的每一个元素,键值对
user_info={
0:"alex",
"age":73,
2:'M'
}
#0“alex"
#173

#索引
#print(user_info[0])
#print(user_info["age"])

#循环,默认值输出key
#foriinuser_info:
#print(i)

##获取所有键
#print(user_info.keys())
##获取所有值
#print(user_info.values())
##获取所有键值对
#print(user_info.items())

#foriinuser_info.keys():
#print(i)
#
#foriinuser_info.values():
#print(i)

#user_info={
#0:"alex",
#"age":73,
#2:'M'
#}
#fork,vinuser_info.items():
#print(k)
#print(v)

#clear,清除所有内容
#user_info.clear()
#print(user_info)

#get根据key获取值,如果key不存在,可以指定一个默认值
#val=user_info.get('age')
#print(val)
#val=user_info.get('age','123')
#print(val)
#索引取值时,key不存在,报错
#print(user_info['age'])
#print(user_info['age1111'])

#has_key检查字典中指定key是否存在3版本python没有了可以用in判断
#ret='agfffe'inuser_info.keys()
#print(ret)
#pop

#popitem

#update
#print(user_info)
#test={
#"a1":123,
#'a2':456
#}
#user_info.update(test)
#print(user_info)

#删除指定索引的键值对
test={
"a1":123,
'a2':456
}

deltest['a1']
print(test)


PS:循环,range,continue和break

字典练习




View
Code



View
Code

八for循环

1、for循环

用户按照顺序循环可迭代对象中的内容,

PS:break、continue

li=[11,22,33]
foriinli:
print(li.index(i),i)


九enumrate

创建序列号

li=[11,22,33]
fork,vinenumerate(li,1):
print(k,v)


十range和xrange

迭代循环

  不会先在内存中创建,而是每次循环就创建一次。节约内存。

3版本python只有range了,等同于xrange

指定范围,生成指定的数字

printrange(1,10)
#结果:[1,2,3,4,5,6,7,8,9]

printrange(1,10,2)
#结果:[1,3,5,7,9]

printrange(30,0,-2)
#结果:[30,28,26,24,22,20,18,16,14,12,10,8,6,4,2]

例如:

print(range(1,10))
  输出range(1,10)而不是123.。。10



range用法:stop不匹配

 range(start,stop,sep)

  比如range(1,10,2)

    打印13579

  range(10,1,-1)

      10987...2


练习题

1、元素分类

有如下值集合[11,22,33,44,55,66,77,88,99,90...],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。

即:{'k1':大于66的所有值,'k2':小于66的所有值}

2、查找

查找列表中元素,移动空格,并查找以a或A开头并且以c结尾的所有元素。

li=["alec","aric","Alex","Tony","rain"]

tu=("alec","aric","Alex","Tony","rain")

dic={'k1':"alex",'k2':'aric',"k3":"Alex","k4":"Tony"}

3、输出商品列表,用户输入序号,显示用户选中的商品利用enumrate

商品li=["手机","电脑",'鼠标垫','游艇']

4、购物车

功能要求:

要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车

goods=[
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]


5、用户交互,显示省市县三级联动的选择

dic={
"河北":{
"石家庄":["鹿泉","藁城","元氏"],
"邯郸":["永年","涉县","磁县"],
}
"河南":{
...
}
"山西":{
...
}

}


答案:

1

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'
list_a=[11,22,33,44,55,66,77,88,99,111]
dic={"k1":[],"k2":[]}
foriinlist_a:
ifi<=66:
dic["k1"].append(i)
else:
dic["k2"].append(i)

print("\033[33;1m小于66的值:\033[0m%s\n\033[35;1m大于66的值:\033[0m%s"%(dic["k1"],dic["k2"]))


2

#易错点:

    ifa条件orb条件andc条件

    如果分级的话用括号包起来

      if(a条件orb条件)andc条件


#!/usr/bin/envpython #_*_coding:utf-8_*_ __author__='liujianzuo'
li=["alec","aric","Alec","Tony","rain"]
tu=("adnc","arlc","Amx","Tony","rain")
dic={'k1':"arm",'k2':'apec',"k3":"Alc","k4":"Tony"}

a=[]
b=[]
c=[]
foriinli:
key_a=i.strip()
if(key_a.startswith("a")orkey_a.startswith("A"))andkey_a.endswith("c"):
a.append(key_a)
fortupintu:
key_b=tup.strip()
if(key_b.startswith("a")orkey_b.startswith("A"))andkey_b.endswith("c"):
b.append(key_b)
forkeyindic.keys():
key_c=dic[key].strip()
if(key_c.startswith("a")orkey_c.startswith("A"))andkey_c.endswith("c"):
c.append(key_c)

print("列表内的符合元素为:",a)
print("元组内的符合元素为:",b)
print("字典内内的符合元素为:",c)


3

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'
li=["手机","电脑",'鼠标垫','游艇']
print("商品列表")
foriinenumerate(li,1):
print(i[0],i[1])

whileTrue:
chose=input("请选择商品:").strip()
iflen(chose)==0:
print("\033[31;1m输入为空,清重新输入!!\033[0m")
continue
elifchose.isdigit()==True:
break
else:
print("\033[31;1m你的输入为非数字,请重新输入\033[0m")
continue
print("\033[31;1m选中的商品是:\033[0m",li[int(chose)-1])


4

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'
whileTrue:
salary=input("\033[33;1m请输入你的工资:\033[0m").strip()
iflen(salary)==0:
print("\033[31;1m工资不能为空重新输入~~\033[0m")
continue
elifsalary.isdigit()!=True:
print("\033[31;1m输入必须是数字~~~\033[0m")
continue
else:
break
salary=int(salary)
goods=[
{"name":"电脑","price":1999},
{"name":"鼠标","price":10},
{"name":"游艇","price":20},
{"name":"美女","price":998},
]
deflist_goods():
print("\033[32;1m欢迎来到商城,商品列表:\033[0m")
n=1
foriingoods:
print(n,i["name"],i["price"])
n+=1
list_goods()
shop_list=[]
whileTrue:
chose=input("\033[33;1m输入选中的商品输入quit离开:\033[0m").strip()
iflen(chose)==0:
print("\033[31;1m选择不能为空重新输入~~\033[0m")
continue
elifchose=='quit':
whileTrue:
print("\033[34;1m购物车列表,如果要移除请选择序列号\033[0m")
forxinenumerate(shop_list,1):
print(x[0],x[1])
del_list=input("\033[33;1m你可以移除商品,输入你的购物车商品编号,输入quit离开:\033[0m")
iflen(del_list)==0:
print("\033[31;1m不能为空~~\033[0m")
continue
elifdel_list=='quit':
break
elifdel_list.isdigit()!=True:
print("\033[31;1m必须是个数字\033[0m")
continue
elifint(del_list)>len(shop_list):
print("\033[31;1m物品不存在\033[0m")
continue
del_list=int(del_list)
foriingoods:
ifshop_list[del_list-1]==i["name"]:
salary+=i["price"]
print(
"\033[35;1m移除了商品:%s返回现金:%s元,目前余额:%s元\033[0m"%(shop_list[del_list-1],i["price"],salary))
delshop_list[del_list-1]
break
elifchose.isdigit()!=True:
print("\033[31;1m输入必须是数字~~~\033[0m")
continue

chose=int(chose)
ifchose>len(goods):
print("\033[31;1m你选择的商品不存在!!\033[0m")
continue
ifgoods[chose-1]["price"]<=salary:
salary-=goods[chose-1]["price"]
shop_list.append(goods[chose-1]["name"])
print("\033[35;1m你选择了:%s还剩下工资:%s你的购物车内有:%s\033[0m"%(goods[chose-1]["name"],salary,shop_list))
continue
else:
print("\033[31;1m余额不够\033[0m")
ans=input("你是否想充值?yes=充值no=返回商城列表:")
ifans=='yes':
whileTrue:
add_salary=input("输入你的充值额数:").strip()
iflen(add_salary)==0:
add_salary=0
break
elifadd_salary.isdigit()!=True:
print("\033[31;1m输入必须是数字~~~\033[0m")
continue
else:
break
add_salary=int(add_salary)

salary+=add_salary
print("\033[35;1m充值金额:%s现在工资:%s元\033[0m"%(add_salary,salary))
elifans=='no':
list_goods()
continue
balance=salary
iflen(shop_list)<1:
shop_list="0件"
print("\033[35;1m购买的商品:%s余额是:%s\033[0m"%(shop_list,balance))


输出示例:



5

1#!/usr/bin/envpython
2#_*_coding:utf-8_*_
3__author__='liujianzuo'
4chinamap={
5"山东省":{
6"济南":["市中区","历下区","天桥区","槐荫区","历城区","长清区","章丘市","平阴县","济阳县","商河县","其他"],
7"青岛":["市南区","市北区","城阳区","四方区","李沧区","黄岛区","崂山区","胶南市","胶州市","平度市","莱西市","即墨市","其他"]
8},
9"北京市":{
10"北京":["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","门头沟区","密云县","延庆县","其他"],
11},
12"广东省":{
13"广州":["越秀区","荔湾区","海珠区","天河区","白云区","黄埔区","番禺区","花都区","南沙区","萝岗区","增城市","从化市","其他"],
14"深圳":["福田区","罗湖区","南山区","宝安区","龙岗区","盐田区","其他"]
15},
16"河北省":{
17"邯郸":[
18"成安县","磁县","大名县","肥乡县","馆陶县","广平县","邯郸市","邯郸县","鸡泽县","临漳县","邱县","曲周县","涉县","魏县","武安市","永年县"
19],
20"衡水":[
21"安平县","阜城县","故城县","衡水市","冀州市","景县","饶阳县","深州市","武强县","武邑县","枣强县"
22],
23"石家庄":[
24"高邑县","晋州市","井陉县","灵寿县","鹿泉市","平山县","深泽县","石家庄市","无极县","辛集市","新乐市","行唐县","元氏县","赞皇县","赵县","正定县","藁城市","栾城县"
25]
26}
27}
28chose=[]
29defzero():
30print("\033[31;1m选择不能为空,清重新输入~~\033[0m")
31defcrre():
32print("\033[31;1m你的选择不正确,清重新输入~~\033[0m")
33
34print("\033[32;1m省列表如下:\033[0m\033[0m")
35forkeyinchinamap.keys():
36print(key)
37whileTrue:
38sheng=input("\033[33;1m请输入省,quitforleave:\033[0m").strip()
39iflen(sheng)==0:
40zero()
41continue
42elifsheng=='quit':
43break
44elifshengnotinchinamap.keys():
45crre()
46continue
47
48else:
49chose.append(sheng)
50print("\033[32;1m市列表如下:\033[0m")
51forkey_shiinchinamap[sheng].keys():
52print(key_shi)
53whileTrue:
54shi=input("\033[33;1m请输入市:quitforleave:\033[0m").strip()
55iflen(shi)==0:
56zero()
57elifshi=='quit':
58print("\033[35;1m你选择的省:%s\033[0m"%(chose[0]))
59exit()
60elifshinotinchinamap[sheng].keys():
61crre()
62else:
63chose.append(shi)
64print("\033[32;1m县区列表如下:\033[0m")
65forkey_xianinenumerate(chinamap[sheng][shi],1):
66print(key_xian[0],key_xian[1])
67whileTrue:
68xian=input("\033[33;1m请输入县序号,qutiforleave:\033[0m").strip()
69iflen(xian)==0:
70zero()
71elifxian=='quit':
72print("\033[35;1m你选择的省:%s市是:%s\033[0m"%(chose[0],chose[1]))
73exit()
74elifxian.isdigit()!=True:
75
76print("\033[31;1m必须是数字\033[0m")
77continue
78elifint(xian)>len(chinamap[sheng][shi]):
79print("\033[31;1m选择不存在\033[0m")
80continue
81else:
82xian=int(xian)
83chose.append(chinamap[sheng][shi][xian-1])
84break
85break
86break
87iflen(chose)<1:
88print("\033[35;1m你什么也没选~~!!\033[0m")
89else:
90print("\033[35;1m你选择的省:%s市是:%s县是:%s\033[0m"%(chose[0],chose[1],chose[2]))





第5题以序列号的选择来输出

  知识点

    字典keys转换为list

  

#!/usr/bin/envpython
#_*_coding:utf-8_*_
__author__='liujianzuo'
chinamap={
"山东省":{
"济南":["市中区","历下区","天桥区","槐荫区","历城区","长清区","章丘市","平阴县","济阳县","商河县","其他"],
"青岛":["市南区","市北区","城阳区","四方区","李沧区","黄岛区","崂山区","胶南市","胶州市","平度市","莱西市","即墨市","其他"]
},
"北京市":{
"北京":["东城区","西城区","崇文区","宣武区","朝阳区","海淀区","丰台区","石景山区","房山区","通州区","顺义区","昌平区","大兴区","怀柔区","平谷区","门头沟区","密云县","延庆县","其他"],
},
"广东省":{
"广州":["越秀区","荔湾区","海珠区","天河区","白云区","黄埔区","番禺区","花都区","南沙区","萝岗区","增城市","从化市","其他"],
"深圳":["福田区","罗湖区","南山区","宝安区","龙岗区","盐田区","其他"]
},
"河北省":{
"邯郸":[
"成安县","磁县","大名县","肥乡县","馆陶县","广平县","邯郸市","邯郸县","鸡泽县","临漳县","邱县","曲周县","涉县","魏县","武安市","永年县"
],
"衡水":[
"安平县","阜城县","故城县","衡水市","冀州市","景县","饶阳县","深州市","武强县","武邑县","枣强县"
],
"石家庄":[
"高邑县","晋州市","井陉县","灵寿县","鹿泉市","平山县","深泽县","石家庄市","无极县","辛集市","新乐市","行唐县","元氏县","赞皇县","赵县","正定县","藁城市","栾城县"
]
}
}
#n=list(chinamap.keys())
#print(n)
#m=list(chinamap[n[0]].keys())
#print(m)
#print(n[0])
#print(m[0])
#print(chinamap[n[0]][m[0]])
#exit()
chose=[]
defzero():
print("\033[31;1m选择不能为空,清重新输入~~\033[0m")
defcrre():
print("\033[31;1m你的选择不正确,清重新输入~~\033[0m")

print("\033[32;1m省列表如下:\033[0m\033[0m")
#forkeyinchinamap.keys():
#print(key)
n=list(chinamap.keys())
n1=[]
shi_list=[]
xian_list=[]
fork,iinenumerate(n,1):
print(k,i)
n1.append(i)

#print("=================",n1)
whileTrue:
sheng=input("\033[33;1m请输入省,quitforleave:\033[0m").strip()
iflen(sheng)==0:
zero()
continue
elifsheng=='quit':
break
elifsheng.isdigit()!=True:
print("\033[31;1m请选择一个数字~~~\033[0m")
continue
elifint(sheng)-1>=len(n):
print("\033[31;1m选择不存在outofrange\033[0m")
continue
else:
sheng=int(sheng)

chose.append(n1[sheng-1])
print("\033[35;1m你进入省:%s\033[0m"%(chose[0]))
#print(chose)
print("\033[32;1m市列表如下:\033[0m")
shi_dic_list=list(chinamap[n1[sheng-1]])
#print(shi_dic_list)
fork,vinenumerate(shi_dic_list,1):
print(k,v)
shi_list.append(v)
#print("=============",shi_list)
whileTrue:
shi=input("\033[33;1m请输入市:quitforleave:\033[0m").strip()
iflen(shi)==0:
zero()
elifshi=='quit':
print("\033[35;1m你选择的省:%s\033[0m"%(chose[0]))
exit()
#elifshinotinchinamap[sheng].keys():
#crre()
elifshi.isdigit()!=True:
print("\033[31;1m请选择一个数字~~~\033[0m")
continue
elifint(shi)-1>=len(shi_dic_list):
print("\033[31;1m选择不存在outofrange\033[0m")
continue
else:
shi=int(shi)
chose.append(shi_list[shi-1])

print("\033[35;1m你进入省:%s市是:%s\033[0m"%(chose[0],chose[1]))

#print(chose)
#exit()
print("\033[32;1m县区列表如下:\033[0m")
forkey_xianinenumerate(chinamap[n1[sheng-1]][shi_list[shi-1]],1):
print(key_xian[0],key_xian[1])
xian_list.append(key_xian[1])
whileTrue:
xian=input("\033[33;1m请输入县序号,qutiforleave:\033[0m").strip()
iflen(xian)==0:
zero()
elifxian=='quit':
print("\033[35;1m你选择的省:%s市是:%s\033[0m"%(chose[0],chose[1]))
exit()
elifxian.isdigit()!=True:

print("\033[31;1m必须是数字\033[0m")
continue
elifint(xian)>len(chinamap[n1[sheng-1]][shi_list[shi-1]]):
print("\033[31;1m选择不存在outofrange\033[0m")
continue
else:
xian=int(xian)
chose.append(xian_list[xian-1])
break
break
break
iflen(chose)<1:
print("\033[35;1m你什么也没选~~!!\033[0m")
else:
print("\033[35;1m你选择的省:%s市是:%s县是:%s\033[0m"%(chose[0],chose[1],chose[2]))


输出截图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐