一、python初始化模块                                                       


Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都能有相应的python库支持,以后的课程中会深入讲解常用到的各种库,现在,我们先来象征性的血2个简单的。

(库=模块)

  导入模块用import

sys模块

 import sys
print(sys.path) #打印pthon环境变量 #argv方法,系统传参数
cat sys_mod.py
import sys
print sys.argv[] #取第一个模块,结果等heloo
# python sys_mod.py hello worl abu
hello

os模块

 import os
#os.system('dir') #os.system方法,只执行命令,不保存结果
cmd_res = os.popen('dir').read() #使用os.popen方法,可以把结果保存到内存中,然后使用.read()方法把结果取出来
#不适用read()方法,结果是无法从内存中读出来的
print("-->",cmd_res) #输出的结果:
G:\python\day1 的目录 // : <DIR> .
// : <DIR> ..
// : file_lock.txt
// : hellow.py.txt
// : , lgoin作业.py
// : lock_file.txt
// : <DIR> mknew
// : passwdlist.txt
// : sys.py
// : test.txt
// : username_file.txt
// : user_pass.txt
// : var.py
// : , var2.py
个文件 , 字节
个目录 ,,, 可用字节 #os.mkdir方法,创建目录
os.mkdir("new_dir")

二、数据运算


逻辑运算

 and  布尔“与” 两个条件成立返回True
or 布尔“或” 两个条件有一个成立返回True
not 布尔“非”
in 布尔“真” >>> a = [,,,]
>>> if not in a :print 'ss'
ss 如果5不在a里面就打印ss
如果5在里面就不打印,也就是not 反义词的意思 in 跟not正好相反,如果5不在里面就不打印,在里面就打印,类型== is和is not
先说is is就是判断类型是否为相同,相同返回True,否则返回False, is not正好相反 >>> a
[, , , ]
>>> type(a)
<type 'list'>
>>> type(a) is list
True
>>> type('a') is str
True

三元运算


语法:result =值1 if条件 else 值2

 下面的语句解释:
a如果大于b 那d就等于a,否则等于c,因为不大于所以等于5
>>> a,b,c = ,,
>>> d = a if a>b else c
>>> d a如果小于b,那就d就等于a,否则等于c,因为a小于b所以等于a,这就是三元预算(这一段要仔细琢磨)
>>> d = a if a<b else c
>>> d

bytes数据类型

  Python3 最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode,有str类型表示,二进制数据则由bytes类型表示。python3 不会以任意隐式的方式混用str和bytes,正式这使得两者的区分特别清晰。你不能拼接字符串和字节包,也无法在字节包里搜索字符串(反之亦然),也不能将字符串传入参数为字节包的函数(反之亦然)。这是件好事。

字符串转换成二进制方法

encode(编码)

decode(解码)

 msg = "我爱广州"
print(msg)
print(msg.encode("utf-8")) 字符串转成二进制主要是:encode()
输出结果(b=bytes):
我爱广州
b'\xe6\x88\x91\xe7\x88\xb1\xe5\xb9\xbf\xe5\xb7\x9e' 二进制转回字符串,主要是:decode()
msg = "我爱广州"
print(msg)
print(msg.encode("utf-8"))
print(msg.encode("utf-8").decode("utf-8")) 输出结果:
我爱广州
b'\xe6\x88\x91\xe7\x88\xb1\xe5\xb9\xbf\xe5\xb7\x9e'
我爱广州

原理图:

四、列表,元组操作


原文:http://www.cnblogs.com/alex3714/articles/5717620.html

定义一个列表,根据列表下标取一个值,两个值

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[]) >>>XuLiangchen
 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[],names[]) >>>XuLiangchen ZhangYang

列表切片,从1开始切,切到3(但是不包括3),切片,是使用冒号:切分的。

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[:]) >>>['Guyun', 'XiangPeng']
 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[-],names[-])
>>>XuLiangchen XiangPeng

-1 -2 表示从后面开始数起

以下示例:从-2开始切到-1,-1是最后一个值,可以不用写,names[:3]等于names[0:3]

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[-:])
print(names[:]) >>>['XiangPeng', 'XuLiangchen']
>>>['ZhangYang', 'Guyun', 'XiangPeng']

列表追加names.append(‘值')

names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.append("LeiHaidong")
print(names) >>>['ZhangYang', 'Guyun', 'XiangPeng', 'XuLiangchen', 'LeiHaidong']
#append 中文翻译,追加,也就是追加到列表最后

插入,names.insert(下标,‘value1’)

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.insert(,"ChenRonghua")
print(names)
>>>['ZhangYang', 'ChenRonghua', 'Guyun', 'XiangPeng', 'XuLiangchen']

更改,names[下标]=“value”

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names[]="ChenRonghua"
print(names)
>>>['ZhangYang', 'Guyun', 'ChenRonghua', 'XuLiangchen']

删除,有三种方法

方法1:names.remove("value") 删除匹配值

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.remove("Guyun")
print(names) >>>['ZhangYang', 'XiangPeng', 'XuLiangchen']

方法2:del names[下标] ,把匹配的下标删除掉, del names  则是直接把整个列表删除

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
del names[]
print(names) >>>['ZhangYang', 'Guyun', 'XuLiangchen']

方法3: names.pop()不输入下标,默认删除最后一个值,names.pop(2)删除下标2的值

 #names.pop()不输入下标,默认删除最后一个值
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.pop()
print(names) >>>['ZhangYang', 'Guyun', 'XiangPeng'] #names.pop()删除下标2的值
___________________________________________
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.pop()
print(names) >>>['ZhangYang', 'Guyun', 'XuLiangchen']

或许列表下标,names.index('value')

 #找下标
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names.index("Guyun")) >>> ___________________________________
#把下标里对应的值取出来
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
print(names[names.index("Guyun")])

列表计数:names.count('value')

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.insert(,'abu')
names.insert(,'abu') print(names.count('abu')) >>>

清空列表:names.clear()

 names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
names.clear()
print(names)
>>>[]

列表整合,排序,反转

#两个列表整合成一个列表,names.extend(列表2)
names = ["ZhangYang","Guyun","XiangPeng","XuLiangchen"]
a=['','','']
names.extend(a)
print(names) >>> ['ZhangYang', 'Guyun', 'XiangPeng', 'XuLiangchen', '', '', '']

排序:列表排序 names.sort() 排序的顺序,特殊字符——数字——大写字母——小写字母(注意:python3不同类型不可以排序,如,字符串跟数字,存在同一个列表中不可以排序)

 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"]
a=['','','']
names.extend(a)
names.sort()
print(names)
#extend中文翻译整合,合并
>>>['', '', '', 'Guyun', 'XuLiangchen', 'ZhangYang', 'aiangPeng']

反转:names.reverse(),也就是把列表反转过来

 names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"]
a=['','','']
names.extend(a)
names.sort()
names.reverse()
print(names) >>>['aiangPeng', 'ZhangYang', 'XuLiangchen', 'Guyun', '', '', '']

列表copy,name2 = names.copy()

#复制一份列表
names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"]
name2 = names.copy()
print(names)
print(name2) >>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen']
>>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen'] #复制一份name2后,我把names改了
names = ["ZhangYang","Guyun","aiangPeng","XuLiangchen"]
name2 = names.copy()
names[]="张德润"
print(names)
print(name2) >>>['ZhangYang', 'Guyun', '张德润', 'XuLiangchen']
>>>['ZhangYang', 'Guyun', 'aiangPeng', 'XuLiangchen']

列表潜copy,深copy

1、潜copy的四种方式

  1)name1 = copy.copy(names)

  2)name2 = names.copy()

  3)name3 = names[:]

  4)name4 = list(names)

 #看下面的代码,我在里面嵌套了一个二级列表,然后拷贝一份,把里面的abu改为ABU,结果我复制的也改了,为什么呢?就是因为这是潜copy,只拷贝了第一级。所以就这就是潜copy。
names = ["ZhangYang","Guyun","aiangPeng",["abu","Jack"],"XuLiangchen"]
name2 = names.copy()
names[]="张德润"
names[][]="ABU"
print(names)
print(name2) >>>['ZhangYang', 'Guyun', '张德润', ['ABU', 'Jack'], 'XuLiangchen']
>>>['ZhangYang', 'Guyun', 'aiangPeng', ['ABU', 'Jack'], 'XuLiangchen']

2、深copy

#深copy主要是调用copy函数的copy.deepcop方法, copy_list=copy.deepcopy(想被copy的列表);看下面,现在改了子列表里面的信息,被copy的列表也没有变化了

 import copy
names = ["ZhangYang","Guyun","aiangPeng",["abu","Jack"],"XuLiangchen"]
name2 = copy.deepcopy(names)
names[]="张德润"
names[][]="张德润"
print(names)
print(name2) >>>['ZhangYang', 'Guyun', '张德润', ['张德润', 'Jack'], 'XuLiangchen']
>>>['ZhangYang', 'Guyun', 'aiangPeng', ['abu', 'Jack'], 'XuLiangchen']

列表循环:

 names = ["ZhangYang","Guyun","aiangPeng",
for i in names:
print(i)
>>>ZhangYang
Guyun
aiangPeng
['abu', 'Jack']
XuLiangchen

商品列表作业代码:

老师写的版本+备注:

 #Author:abu zhang

 #定义商品列表
product_list = [
('Iphone',),
('Mac Pro',),
('Bike',),
('Watch',),
('Coffee',),
('Alex Python',)
]
#定义购物车列表
shop_list = [] salary = input('请输入你的工资:') #启动程序,让用户输入工资
if salary.isdigit(): #判断用户输入的是否为数字
salary = int(salary) #把salary转换成数字类型
while True: #上面通过之后进入死循环
for index,item in enumerate(product_list): #循环商品列表,enumerate() 方法可以取到列表下标(index)。
print(index,item) #打印商品和下标,如( iphone )
user_choice = input('请选择你要购买的商品:') #让用户输入想要购买的商品
if user_choice.isdigit(): #判断用户输入的是否为数字类型
user_choice = int(user_choice) #把user_choice转为数字类型
if user_choice < len(product_list) and user_choice >=: #判断用户输入的参数,是否匹配商品下标
p_item = product_list[user_choice] #这句话不好理解,定义用户商品列表的下标列表,如:用户输入一个0,那我product_list[] =('Iphone',)
if p_item[] <= salary: #判断用户的工资是否买的起商品
shop_list.append(p_item) #如买的起,就把它append到购物车里面去
salary -= p_item[] #添加到购物车后进行扣钱 p_item[] = product_list[][]
print('Added %s into shopping cart,your current balance in \033[31;1m%s\033[0m'%(p_item[],salary)) #扣完钱后,打印用户买的商品以及所剩的钱
else:
print('\033[31;1m你的余额只剩%s,你买不起该商品,sorry!\033[0m'% salary) #上面如果买不起,打印你的钱不够
else:
print('product code %s is not exist!'% user_choice) #如果用户输入的参数,不匹配商品下标,打印无该商品
elif user_choice == 'q': #如果用户输入的是q,那就退出,并打印以及购买的商品,并打印还剩下多少钱
print("-------------shopping list-----------")
for p in shop_list:
print(p)
print("Your current balance:",salary)
exit()
else:
print('invalid option') #翻译:invalid option 无效的选项
elif len(salary) == :
print('薪资不能为空') else:
print('请输入您的薪资')

自个写的版本

 #Author:abu zhang

 #定义商品列表
product_list = [
('Iphone',5800),
('Mac Pro',9800),
('Bike',800),
('Watch',10600),
('Coffee',31),
('Alex Python',120)
]
#定义购物车列表
shop_list = []
salary = input('Please enter your salary:') #翻译,请输入你的薪资
if salary.isdigit():
salary = int(salary)
while True:
for index,item in enumerate(product_list): #item=商品
print(index,item)
user_choice = input('请输入你想要购买的商品,添加至购物车:') #choice = 选择
if user_choice.isdigit():
user_choice = int(user_choice)
if user_choice < len(product_list) and user_choice >= 0 :
p_item = product_list[user_choice]
if salary >= p_item[1]:
salary -= p_item[1]
shop_list.append(p_item)
print('你已购买了\033[31;1m%s\033[0m,所剩余额为\033[31;1m%s\033[0m'%(p_item[0],salary)) #\033[31;1m%s\033[0m'
else:
print('你买不起\033[31;1m%s\033[0m了,因为你钱不够了!'%p_item[0])
else:
print('对不起,没有找到您想要的商品!') elif user_choice == 'q':
print('----------shopping list-----------')
for i in shop_list:
print(i)
print('您所剩余额为\033[31;1m%s\033[0m,欢迎下次光临。good bye'%salary)
exit() elif len(salary) == 0:
print('Input cannot be empty!') #翻译,输入不能为空
else:
print('input error!')

五、字符串操作


操作解释

 #Author:abu zhang
#print('121'.isdigit()) #isdigit是否为整数,常用
#print('abc'.isalnum()) #判断是不是大小字母,返回True,否则返回False, 常用
#print('aa'.islower()) #判断是不是小写字母 ,返回True,否则返回False, 常用
print('MY'.isupper()) #判断是不是大写字母, 常用
#print('33.33'.isnumeric()) #判断是不是数字,常用
#print(' '.isspace()) #判断是否为空格,常用
print('+'.join(["",'','',''])) #把一个列表变成一个字符串,指定分隔符,常用
#>>>1+2+3+4
print('\nAlex\n'.lstrip()) #strip()去掉两遍的空格跟回车,lstrip去掉左边的空格跟回车
print('\nAlex\n'.rstrip()) #strip()去掉两遍的空格跟回车,rstrip去掉右边的空格跟回车
print('alex li'.replace('l','L',1)) #字符串替换,把l换成L 1代表换一个,不加全替换
print('1+2+3+4'.split('+')) #把字符串按照空格分成列表 ,常用
print('1+2\n+3+4'.splitlines()) #按照换行符来切成列表 ,常用 name = 'abu zhang {name} and {age}'
print(name.capitalize()) #首字母大写,用法:name.capitalize()
print(name.count('a')) #统计a有多少个,计数,用法:name.count('value')
print(name.center(50,'-')) #一共打印50个字符,不够的使用'-'代替,把里面的value放在中间
print(name.endswith('ng')) #endswith判断一个字符串以什么结尾,如:判断邮件地址qq.com结尾
print(name.expandtabs(tabsize=30)) #打印一个字符串,定义它可以多长,用处不大
print(name[name.find('z'):]) #find查找一个字符串的下标
print(name.format(name='abu',age=23)) #相当于变量,传参
print(name.index('d')) #查找字符串下标
print('ab23'.isalnum()) #包含小数和大写字母,返回True,否则返回False
print('AA'.isalnum()) #判断是不是大小字母,返回True,否则返回False
print('121a'.isdigit()) #isdigit是否为整数,常用
print('1a'.isidentifier()) #判断是不是合法的变量名
print('aa'.islower()) #判断是不是小写字母 ,返回True,否则返回False
print('33.33'.isnumeric()) #判断是不是数字,常用
print(' '.isspace()) #判断是否为空格,常用
print('My Name Is '.istitle()) #判断每个首字母是否为大写
print('My Name Is'.isprintable()) #判断是不是可以打印的
print('MY'.isupper()) #判断是不是大写字母
print('+'.join(["",'','',''])) #把一个列表变成一个字符串,指定分隔符,常用
print( name.ljust(50,'*')) #给左边添加字符串长度
print(name.rjust(50,'*')) #给右边添加字符串
print('AlEx'.lower()) #把大写全变成小写
print('AlEx'.upper()) #把小写全变成大写
print('\nAlex\n'.lstrip()) #strip()去掉两遍的空格跟回车,lstrip去掉左边的空格跟回车
print('\nAlex\n'.rstrip()) #strip()去掉两遍的空格跟回车,rstrip去掉右边的空格跟回车
p = str.maketrans('5bedfdef','12#%@456') #随机密码
print('alex li '.translate(p))
print('alex li'.replace('l','L',1)) #字符串替换,把l换成L 1代表换一个,不加全替换
print('alex lil'.rfind('l')) # 从左往右找,找到最后边的下标
print('1+2+3+4'.split('+')) #把字符串按照空格分成列表 ,常用
print('1+2\n+3+4'.splitlines()) #按照换行符来切成列表 ,常用
print('Alex Li'.swapcase()) #大写变成小写,小写变成大写
print('alex li'.title()) #把每个字符的首字母变成大写
print('alex li'.zfill(50)) #不够的就添加0

输出结果

 True
1+2+3+4
Alex Alex
aLex li
['', '', '', '']
['1+2', '+3+4']
Abu zhang {name} and {age}
5
------------abu zhang {name} and {age}------------
False
abu zhang {name} and {age}
zhang {name} and {age}
abu zhang abu and 23
19
True
True
False
False
True
False
True
True
True
True
1+2+3+4
abu zhang {name} and {age}************************
************************abu zhang {name} and {age}
alex
ALEX
Alex Alex
al5x li
aLex li
7
['', '', '', '']
['1+2', '+3+4']
aLEX lI
Alex Li
0000000000000000000000000000000000000000000alex li

六、字典操作


字典是一种key-value的数据类型,使用就像我们上学用的字典,通过笔划,字母来查对应页的详细内容。

新建一个字典,打印字典

 #key : value 中间用冒号分割,一条数据以逗号隔开
#字典是无排序的
info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
} print(info)
{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

通过key查找内容

方法一:使用info.get方法,如果找到这个key就回返回里面的值,否则返回None

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
print(info.get('stu1103'))
print(info.get('stu1104'))

>>>XiaoZe Maliya
>>>None

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
print(info['stu1101']) #通过key查里面的值 TengLan Wu

修改

如果1101不存在会增加一条数据

info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
info['stu1101'] = "武藤兰"
print(info)
{'stu1101': '武藤兰', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}

增加

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
info['stu1104'] = "武藤兰"ae
print(info)
{'stu1101': 'TengLan Wu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1104': '武藤兰'}

删除

del 加key删除

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
info['stu1104'] = "武藤兰"
del info['stu1101']
print(info)

info.pop,指定删除,info.popitem随机删除一个

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
info['stu1104'] = "武藤兰"
info.pop('stu1102')
info.popitem()
print(info)
{'stu1101': 'TengLan Wu', 'stu1103': 'XiaoZe Maliya'}

#判断字典里面的key存不存在,存在返回真,否则假

语法:
print('stu1104' in info)
info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
print('stu1104' in info) #info.has_key('stu1103') in python2.x版本这么写
False

多级字典嵌套及操作

 av_catalog = {
"欧美":{
"www.youporn.com": ["很多免费的,世界最大的","质量一般"],
"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
},
"日韩":{
"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
},
"大陆":{
"":["全部免费,真好,好人一生平安","服务器在国外,慢"]
}
} av_catalog['大陆'][''][1] = "可以再国内做镜像"
av_catalog.setdefault("大陆",{"www.baidu.com":[1,2,3]})
print(av_catalog)

其它

其中的setdefault很重要,setdefault插入一条数据,如果这个key值已经存在就不插入,如果不存在则插入

用法:

av_catalog.setdefault("大陆",{"www.baidu.com":[1,2,3]})

 #values
>>> info.values()
dict_values(['LongZe Luola', 'XiaoZe Maliya']) #keys
>>> info.keys()
dict_keys(['stu1102', 'stu1103']) #setdefault
>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","龙泽萝拉")
'LongZe Luola'
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #update
>>> info
{'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
>>> info.update(b)
>>> info
{'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Alex'} #items ,把一个字典,变成一个大的列表
info.items()
dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Alex')]) #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'testd')
{1: 'testd', 2: 'testd', 3: 'testd'}

合并更新

info.update(),把两个字典合并起来,如果有相同key的,该key里面的内容会被更新掉

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
b = {
'stu1101':'abu',
2:3,
4:5
}
info.update(b)
print(info) {'stu1101': 'abu', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 2: 3, 4: 5}

字典的循环

循环 i=key print (i,infor[key])

 info = {
'stu1101':'TengLan Wu',
'stu1102':'LongZe Luola',
'stu1103':'XiaoZe Maliya',
}
for i in info:
print(i,info[i]) stu1101 TengLan Wu
stu1102 LongZe Luola
stu1103 XiaoZe Maliya

字典多级嵌套练习程序

 #Author:abu zhang

 data = {
'广东':{
'广州':{
'天河':['棠德花园','阿布家'],
'白云':['白云学院','学校']
},
'佛山':{},
'湛江':{
'霞山':['山卡拉','aaa'],
'徐闻':['上卡拉2','bbb']
}
},
'北京':{
'朝阳':{
},
'昌平':{}
},
'深圳':{}
} exit_false = False
while not exit_false: #死循环
for i in data: #循环打印字典一级菜单key
print(i)
choice = input('请选择进入>>:') #输入菜单
if choice in data: #判读输入的是否是菜单里面的key,如果是为True,接着走
while not exit_false: #然后又来个死循环
for i2 in data[choice]: #循环打印key1里面的菜单
print(i2)
choice2 = input('请选择进入>>:')
if choice2 in data[choice]: #判读输入的key1里面的key是不是等于key,如果是接着走,继续打印,以此类推
while not exit_false:
for i3 in data[choice][choice2]:
print(i3)
choice3 = input('请选择进入>>:')
if choice3 in data[choice][choice2]:
for i4 in data[choice][choice2][choice3]:
print(i4)
choice4 = input('已经是最后一层,返回上一层按b>>:')
if choice4 == 'b':
pass
elif choice4 == 'q':
exit_false = True
if choice3 == 'b':
break
elif choice3 == 'q':
exit_false = True
if choice2 == 'b':
break
elif choice2 == 'q':
exit_false = True
elif choice == 'q':
exit_false = True

Python Day2 Learning record的更多相关文章

  1. Python_day1 Learning record

    Python Day1 Learning record(python第一天学习记录) 一.ptyhon安装 windows .下载安装包 https://www.python.org/download ...

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

    Python机器学习介绍(Python Machine Learning 中文版) 机器学习,如今最令人振奋的计算机领域之一.看看那些大公司,Google.Facebook.Apple.Amazon早 ...

  3. python day2:python的基本数据类型及其方法

    目录 python day2 1. 编码转换 2. python的基本数据类型 3. for 迭代遍历 4. 列表list 5. 元组tuple 6. 字典dict 7. 枚举enumerate 8. ...

  4. [Python & Machine Learning] 学习笔记之scikit-learn机器学习库

    1. scikit-learn介绍 scikit-learn是Python的一个开源机器学习模块,它建立在NumPy,SciPy和matplotlib模块之上.值得一提的是,scikit-learn最 ...

  5. Python -- machine learning, neural network -- PyBrain 机器学习 神经网络

    I am using pybrain on my Linuxmint 13 x86_64 PC. As what it is described: PyBrain is a modular Machi ...

  6. Python Machine Learning: Scikit-Learn Tutorial

    这是一篇翻译的博客,原文链接在这里.这是我看的为数不多的介绍scikit-learn简介而全面的文章,特别适合入门.我这里把这篇文章翻译一下,英语好的同学可以直接看原文. 大部分喜欢用Python来学 ...

  7. 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作

    声明 : 文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  模块初始: Python的强大之处在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相 ...

  8. Python——day2

    学完今天我保证你自己可以至少写50行代码 明天,还在等你 回顾day1 小练习1: 小练习2: 小练习3: 好了激情的的一天已经过去了正式开始,day2的讲解         Day2 目录: 格式化 ...

  9. python day2 练习题

    #/usr/bin/env python # -*- coding:utf-8 -*- # Author:ylw # name = '  ylwA  ' # 1.移除name变量对应的值两边的空格 # ...

随机推荐

  1. OO随笔

    第一次作业——多项式计算 1.自我程序分析 第一次作业是多项式计算,只使用了一个多项式类.第一次接触面向对象的程序,还比较生疏,不是很能理解面向对象的思想.将读入,处理,计算,都放到了main函数中, ...

  2. vue 学习笔记(一)

    对于 vue 官网给的教程由浅及深,非常容易上手.我之前有过 react 项目开发经验,对 webpack 打包,脚手架这一类的东西并不陌生.所以也是我上手比较快的原因吧.简单将我在学习 vue 中遇 ...

  3. 闽南师范大学·大英A3复习专题

    精读<新视野·读写教程A3> U2: words: TEXT A   TEXT B appraise vt.评定 | abort vt.(因困难或危险)使(活动)终止 paralyze v ...

  4. 【Core】当前 .NET SDK 不支持将 .NET Core 2.2 设置为目标。请将 .NET Core 2.1 或更低版本设置

    问题起因: 新的电脑,打开core2.2的项目时,因为没有安装2.2 sdk,项目编译失败 所以在选择目标框架下拉框选择安装其他目标框架 会跳转到官网下载sdk:https://dotnet.micr ...

  5. setTimeout setInterval 计时器

    setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. 返回值:返回一个 ID(数字),可以将这个ID传递给 clearTimeout() 来取消执行. 案例: 点击按钮开始,停止时 ...

  6. python多版本共存

    根据环境变量的顺序调用python,pip等程序 将python.exe修改为python2.exe(或python3.exe)后可以通过不同的名字调用不同版本的python 注意修改Anaconda ...

  7. 浮点型/小数/栅格图层转为整数型arcgis操作

    有时候会遇到将32位栅格数据提取属性表的操作,但是一般此类数据都是浮点型,是无法计算得到属性表的.因此我们可以利用数据管理工具下的: 复制栅格工具,在最下面选择16位即可,看自己数据情况选择signe ...

  8. pytest--fixture参数化的实现方式和执行顺序

    之前看到fixture函数可以通过添加,params参数来实现参数化,后续看到了悠悠 的博客,可以通过@pytest.mark.parametrize来实现,现在做一个总结 实现方式一 通过param ...

  9. erlang下lists模块sort(排序)方法源码解析(二)

    上接erlang下lists模块sort(排序)方法源码解析(一),到目前为止,list列表已经被分割成N个列表,而且每个列表的元素是有序的(从大到小) 下面我们重点来看看mergel和rmergel ...

  10. OpenBUGS抽样数据基本操作

    新建两个文件 第一个文件写操作程序,第二个文件写数据数量,类似于下图 鼠标聚焦在第一个文件中,点击工具栏的Model,选择Specification,然后点击check Moel,会有弹框出现 点击确 ...