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取模
详细见urlhttp://www.cnblogs.com/liujianzuo888/articles/5440915.html
三编码转换
unicode可以编译成UTF-UGBK
即
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输入
五pycharm快捷键
ctrl+/批量注释
shift+方向键选中
shift+tab向左tab
六运算符
算数运算:
比较运算:
赋值运算:
逻辑运算:
成员运算:
身份运算:面向对象讲解
练习
View
Code
比如数字来说:
数字的方法都放在int类中,而数字是类的实例化。如上图所示
1整型
View
Code
2、布尔值
真或假
1或0
3、字符串
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化
PS:字符串是%s;整数%d;浮点数%f
字符串常用功能:后面有练习
移除空白
分割
长度
索引
切片
View
Code
示例
4、列表
创建列表:
基本操作:
索引
切片
追加
删除
长度
切片
循环
包含
View
Code
示例:
列表练习
View
Code
5、元组
创建元祖:元组一旦创建不等增加也不能减少
基本操作:
索引
切片
循环
长度
包含
View
Code
示例:
元组练习
6、字典(无序)
创建字典:
常用操作:
索引
新增
删除
键、值、键值对
循环
长度
View
Code
示例:
PS:循环,range,continue和break
字典练习
View
Code
View
Code
八for循环
1、for循环
用户按照顺序循环可迭代对象中的内容,
PS:break、continue
九enumrate
创建序列号
十range和xrange
迭代循环
不会先在内存中创建,而是每次循环就创建一次。节约内存。
3版本python只有range了,等同于xrange
指定范围,生成指定的数字
练习题
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
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
附加:可充值、某商品移除购物车
5、用户交互,显示省市县三级联动的选择
答案:
1
2
#易错点:
ifa条件orb条件andc条件
如果分级的话用括号包起来
if(a条件orb条件)andc条件
3
4
输出示例:
5
知识点
字典keys转换为list
输出截图
2运算符
3基本数据类型
整型:int
字符串:str
列表:list
元组:tuple
字典:dic
4forenumratexrangerange
上节内容回顾:
二前天作业讲解:
知识点:
判断奇偶:除以2取模
1% 23%2=1 32%2=0 44%2=0
详细见url
三编码转换
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]))
输出截图
相关文章推荐
- python基本数据类型list,tuple,set,dict用法以及遍历方法
- python基础-基本数据类型总结_整型(int)_字符型(str)_day3
- python数据类型dict、list、str、tuple互换方法
- Python基础,基本类型(整型,浮点数等)数据结构(List,dic(Map),Set,Tuple),控制语句(if,for,while,continue or break):来自学习资料
- Python小白学习之路(二)—【Pycharm安装与配置】【创建项目】【运算符】【数据类型】
- python基础31[list+tuple+set+dict+str+file的成员方法]
- Python基础数据结构(list, str, tuple, dict)
- Python基础(2)-基本数据类型以及运算符介绍
- python基础31[list+tuple+set+dict+str+file的成员方法]
- MyBatis-xml配置SQL文件中,传入List数组、基本类型String、int……、与自定义类型的方法
- python教程19--《python基本数据类型list、tuple、dict、linecache读取file内容大综合运用》
- Python3学习(一)-基础、数据类型、变量、字符串和编码、list&tuple、if、for、while、dict、set、函数与参数
- Python中list数据类型的基本函数方法
- Python【基础:数据类型和变量 字符串和编码 list和tuple 条件判断 循环 dict和set】注意事项(与java,c比较)
- Java基础加强:静态导入及可变参数和增强for循环 ,基本数据类型的自动拆箱和装箱
- Python基础02 基本数据类型
- 基础篇7-python基本数据类型讲解1.3
- python数据类型list方法整理
- 黑马程序员_Java基础1_(标示符、关键字、基本数据类型、运算符)
- 【学习笔记三】最基本的JAVA基础[数据类型,运算符]