主要是以Python 3.x 为开发环境
which python3 查看 linux及Mac下 python3是都安装以及程序的位置
终端打开python的时候,直接输入python3,打开的就是3.几的版本
- 变量 :字母 下划线 数字,第一个字符不能用数字
- 常量: 全部大写字母表示常量
变量定义的规则: 变量名只能是 字母、数字或下划线的任意组合 变量名的第一个字符不能是数字 以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
hello,world
1 #!/usr/bin/env python3 2 # -*- coding: UTF-8 -*- 3 4 print"hello,world"
当行注释 #被注释内容
多行注释 '''被注释内容'''
1 name ='张三'
2 name2 =name
3 print('姓名',name,name2)
4
5 name ='李四'
6
7 print(name,name2)
8
9 number='''
10 123
11 456'''
12 print(number)
13
14 # 三个引号多行注释 或者多行打印
Python算术运算符
以下假设变量: a=10,b=20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 加 - 两个对象相加 | a + b 输出结果 30 |
| - | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
| * | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
| / | 除 - x除以y | b / a 输出结果 2 |
| % | 取模 - 返回除法的余数 | b % a 输出结果 0 |
| ** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
| // | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。
>>> 1/2 0 >>> 1.0/2 0.5 >>> 1/float(2) 0.5
Python比较运算符
以下假设变量a为10,变量b为20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
| != | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
| <> | 不等于 - 比较两个对象是否不相等 | (a <> b) 返回 true。这个运算符类似 != 。 |
| > | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
| < | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。 | (a < b) 返回 true。 |
| >= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
| <= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
Python赋值运算符
以下假设变量a为10,变量b为20:
| 运算符 | 描述 | 实例 |
|---|---|---|
| = | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| **= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
Python位运算符
按位运算符是把数字看作二进制来进行计算的。Python中的按位运算法则如下:
下表中变量 a 为 60,b 为 13,二进制格式如下:
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^b = 0011 0001 ~a = 1100 0011
| 运算符 | 描述 | 实例 |
|---|---|---|
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。 | (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
| ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1 | (~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。 |
| << | 左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | a << 2 输出结果 240 ,二进制解释: 1111 0000 |
| >> | 右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数 | a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
Python逻辑运算符
Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
| or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
| not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
Python成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
| 运算符 | 描述 | 实例 |
|---|---|---|
| in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
| not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
Python身份运算符
身份运算符用于比较两个对象的存储单元
| 运算符 | 描述 | 实例 |
|---|---|---|
| is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
| is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
| 运算符 | 描述 |
|---|---|
| ** | 指数 (最高优先级) |
| ~ + - | 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) |
| * / % // | 乘,除,取模和取整除 |
| + - | 加法减法 |
| >> << | 右移,左移运算符 |
| & | 位 'AND' |
| ^ | | 位运算符 |
| <= < > >= | 比较运算符 |
| <> == != | 等于运算符 |
| = %= /= //= -= += *= **= | 赋值运算符 |
| is is not | 身份运算符 |
| in not in | 成员运算符 |
| not or and | 逻辑运算符 |
用户名-密码
name = input("用户名:")
password = input("密码:")
print(name,password)
格式化输入
格式化输出占位符%s s string = 字符串的意思%d d digit = 整数的意思%f f float = 浮点数,约等于小数
显示更多信息
1 name = input('name:')
2 age = int(input('age:')) #int(只能为整数)
3 print(type(age)) #tpye 显示数据类型 (str(age))转为字符串
4 job = input('job') #job 工作
5 salary = input('salary') #salary 薪水
6
7
8 info = '''
9 -------- info of %s -----
10 Name:%s
11 Age:%d
12 Job:%s
13 Salary:%s
14 ''' % (name,name,age,job,salary)
15 #s 代表:string 字符串 d 代表:整数
16
17 info2 = '''
18 ------ 人员信息 ------
19 姓名:{姓名}
20 年龄:{年龄}
21 工作:{工作}
22 工资:{工资}
23
24 ''' .format(姓名=name,
25 年龄=age,
26 工作=job,
27 工资=salary)
28 #format 格式
29 info3 = '''
30 -------- info of {0} -----
31 Name:{0}
32 Age:{1}
33 Job:{2}
34 Salary:{3}
35 '''.format(name,age,job,salary)
36 print(info3)
37
38 print(info2)
用户名密码输入
1 import getpass # 输入为密码为密文 引入getpass库 密文库
2
3 _username = 'bian'
4 _password = '123'
5
6 username = input('用户名:')
7 # password = input('密码:')#输入为明文密码
8 password = getpass.getpass('密码:') # 输入为密文密码
9
10 if _username == username and _password == password:
11 # 两个'=='代表等于 一个'='代表赋值变量
12 print('欢迎 {name} 登录'.format(name=username))
13 else:
14 print('用户名或密码错误!')
猜测年龄游戏
1 age = 56 #指定年龄为56
2
3 guess_age = int(input('年龄:')) #设置为只能输入整数
4
5 if guess_age == age: #如果guess_age 等于 age
6 print('猜测正常') #显示猜测正确
7 elif guess_age > age: #否则如果 大于 age
8 print('请往小猜测') #显示请往小猜测
9 else: #否则
10 print('请往大猜测')#显示请往大猜测
for 循环
打印奇数

1 for i in range(1,10,2): # 2 代表步长的意思 间隔一位
2 print('loop:',i) # 打印奇数
3
4 loop: 1
5 loop: 3
6 loop: 5
7 loop: 7
8 loop: 9
方法2
1 for i in range(1,10):
2 if i % 2 == 1: # 如果i除以2 得1 的为奇数
3 print('loop:',i) #打印奇数
打印 1-49 71-99
1 for i in range(100): 2 if i < 50 or i > 70: # 如果i 小于50 或者 i大于70 的数字 3 print(i) # 打印1-49 71-99
for循环 用户名密码输入
1 name = 'abc'
2 pw = '123'
3
4 for i in range(3): #循环 3次 range 范围
5 username = input('username:')
6 password = input('password:')
7 if username == name and password == pw : # 如果用户名和密码都正确
8 print('welcome %s login...'% name) #提示欢迎登录
9 break #退出 不会执行else语句
10 else: #否则
11 print(' Invalid username or password') #提示无效的用户名或密码
12 else:
13 print("错误超过3次,停止输入") # 只有在for循环正常循环结束后才执行此else语句。
for循环 用户名密码 标志位
1 name = 'abc'
2 pw = '123'
3
4 pass_au = True #flag 标记 标志位 pass——au 为真
5
6
7 for i in range(3): #循环 3次 range 范围
8 username = input('username:')
9 password = input('password:')
10 if username == name and password == pw : # 如果用户名和密码都正确
11 print('welcome %s login...'% name) #提示欢迎登录
12 pass_au =False #为假
13 break #退出 不会执行else语句
14 else: #否则
15 print(' Invalid username or password') #提示无效的用户名或密码
16 if pass_au: # 循环3次 为真时 执行
17 print("错误超过3次,停止输入") # 只有在for循环正常循环结束后才执行此else语句。
continue用法
1 exit_flag = False # 赋值标志位 等于False
2
3 for i in range(10): # 设置 i 循环 10次
4 if i < 5: #如果 i 小于5时
5 continue # 重新进入下一次循环
6 print(i)
7 for j in range(10): #设置 j循环10次
8 print('layer:',j)
9 if j == 6: #如果 j 循环到 等于6时
10 exit_flag = True #标志位 为 真
11 break
12 if exit_flag: #如果 为真是 退出
13 break
continue用法
1 for i in range(10): #循环范围10次 range 范围
2 print('loop:',i) #loop 循环
3 for i in range(10):
4 if i <5: #遇到小于5的
5 continue #不往下走了,直接进入下一次循环 continue(继续)
6 print('loop:',i)
7 for i in range(10):
8 if i >5: #遇到大于5的
9 break #不往下走了,直接退出整个循环
10 print('loop:',i)
无限循环
1 conut = 0 #conut(计数)
2 while True: # 当... 为真时 while(当) True(真实)
3 print('无限循环',conut)
4 conut +=1 #每次循环计数器+1
按次循环
1 count = 0 # count(计数)
2 while True: # 当... 为真时 while(当) True(真实)
3 print('循环',conut)
4 conut +=1
5 if count == 100: # 如果 count计数 等于100时 if(如果)
6 print('停止')
7 break #退出 break
while 循环
1 height = int(input('高度:')) # 输入值
2 width = int(input('宽度:')) #输入值
3
4 num1 = height # 赋值
5
6 while num1 > 0: #当 num1 大于 0 时
7 num2 = width #赋值
8 while num2 > 0: # 当num 2 大于 0 时
9 print('#',end='') # 打印# (end='' 为不换行)
10 num2 -= 1 #每次循环减 1
11 print() # 打印 换行
12 num1 -= 1 #每次循环减 1
while循环
1 user = 'abc'
2 pw = '123'
3
4 counter = 0 # counter 计数器 = 0
5
6 while counter < 3: #当 counter 小于 3次 0次开始计算
7 username = input('username:')
8 password = input('password:')
9 if username == user and password == pw: #如果 username 和 password 等于
10 print('welcom %s login..' %user ) #打印 %s 点位符
11 break #中断 退出
12 else: #否则 提示错误
13 print('invalid username or password')
14 counter += 1 # 计数器 每次循环 + 1
15 if counter == 3: # 如果count 等于3时
16 keep_going_choice = input('是否要继续输入 Y/N:') #提示 输入
17 if keep_going_choice == 'y': #如果输入内容为y时
18 counter = 0 # counter 计数器 清 0 重新循环
19
20 else: #否则 正常循环结束打印
21 print('输入结束')
whlie 循环
1 height = int(input('高度:'))
2 width = int(input('宽度:'))
3
4 num_height = 1 # 赋值是1
5
6 while num_height <= height: #当 num_height <= height 时
7 num_width = 1 # 赋值1
8 while num_width <= width: # 当 num_width <= width 时
9 print("@", end='') # 打印# (end='' 为不换行)
10 num_width += 1 # 循环 + 1
11 print() # print()为换行
12 num_height += 1 #循环 + 1
while循环
1 line = 6 # 行 赋值
2
3 while line > 0: #当行大于0 时
4 tmp = line # 赋值
5 while tmp > 0: #当 tmp 大于0时
6 print('#',end='') #打印 #号 不换行
7 tmp -= 1 #每次循环 - 1
8 print() #打印换行
9 line -= 1 #每次循环 - 1
和上面的结果相反
1 line = 1
2
3 while line <= 6:
4 tmp = 1
5 while tmp <= line:
6 print('#',end='')
7 tmp += 1
8 print()
9 line += 1
for按次循环 猜年龄游戏
1 age = 30 # 赋值 age 为30
2
3 count = 0 #计数器 0
4 for i in range(3): #循环3次
5 guess_age = int(input('年龄:')) #输入整数
6 if guess_age == age: #如果等于
7 print('输入正常')
8 break # 退出
9 elif guess_age >30: #如果 大于
10 print('往大输入')
11 else: #否则
12 print('往小输入')
13
14 else: #错误超过3次
15 print('错误超过3次,停止输入')
while 循环猜年龄游戏
1 age = 30 # 赋值 age 为30
2
3 count = 0 #计数器 0
4 while count <3: #循环3次
5 guess_age = int(input('年龄:')) #输入整数
6 if guess_age == age: #如果等于
7 print('输入正常')
8 break # 退出
9 elif guess_age >30: #如果 大于
10 print('往大输入')
11 else: #否则
12 print('往小输入')
13 count +=1 # 每次循环计数器+1
14 else: #错误超过3次
15 print('错误超过3次,停止输入')
九九乘法表
1 first = 1 #赋值 first(第一) = 1 2 while first <= 9: # 当first<= 9时 3 second = 1 #赋值 second(第二)= 1 4 while second <= first: #当second = 1时 5 print(str(second)+'*'+str(first)+'='+str(second*first),end='\t') 6 #打印 second * first = second * first end='\t'(制表符) 7 second += 1 #每次循环 + 1 8 print() # 打印换行 9 first += 1 #每次循环 + 1
列表
用[]表示列表

1 #增删改查
2 a = ['张三','李四','王五','赵六','陈七','1']
3 # 索引 作标从0 开始
4 # 查 切片
5 print(a[0:]) # 取到最后的值
6 print(a[0:-1])#取到倒数第二个值
7 print(a[0:-1:1]) #从左到右一个一个去取
8 print(a[1::2]) #从左到右隔一个去取
9 print(a[3::-1]) #从右到左去取
10
11 #增
12 #append 追加到后面 insert 插入
13 a.append('田八') #默认追加到最后一个位置
14 print(a)
15 a.insert(1,'田八') #可以插入到任意位置
16 print(a)
17
18 # 修改
19 a[1] = '罗八' #索引值 修改指定位置
20 print(a)
21 a[1:3] = ['刘九','廉十']#索引值 修改多个指定位置
22 print(a)
23
24 # 删除 remove pop del
25 a.remove('李四') #直接删除指定的元素
26 print(a)
27 b = a.pop(1) #按索引删除指定的元素 并返回删除的内容
28 print(a)
29 print(b)
30 del a[0] #按索引,也可以直接删除变量
31 print(a)
32
33 # count : 计算某个元素出现的次数
34
35 t = ['1','2','1','3','4'].count('1')
36 print(t)
37
38 # extend(延伸) : 当变量中的元素插入到另一个变量中
39 a = [1,2,3]
40 b = [4,5,6]
41 a.extend(b) #a 变量中 插入b变量的元素
42 print(a)
43 print(b)
44 c = a+b # c 等于 a+b的值
45
46 # index(索引) 根据内容查找索引位置
47 print(a.index('李四'))
48 #
49 reverse(相反)
50 a.reverse() #相反的方向显示
51 print(a)
52
53 # sort(排序) 按正序排序
54 a.sort() #从小到大排序 或者 ASCLL码排序
55 a.sort(reverse=True) # 加上reverse=True 从大到小排序
56 print(a)
列表嵌套
1 a = [[1,2,3],'abcdf',4,5,6,(7,8,9)] 2 # 列表 字符串 数字 元组 3 # a[0] #按索引取第一个元素 [1,2,3] 4 # a[0][2]#按索引取第二个元素 abc 5 print(a[0][2])
元组
为只读列表,数据只可以被查询,不可以修改,列表切片同样用于元组元组写在()里面,元素之间用逗号隔开。0个 或者 1个的元素的元组比较特殊a = () a = (1,) #一个元素,需要在元素后加逗号
a = (1,2,3,4)#元组print(a[1:4]) #查元组中元素购物车程序

1 shopping_list = [ #列表
2 ('iphone',6000),
3 ('macbook pro',9000),
4 ('apple watch',2500),
5 ('airpods',1288)]
6 shopping_car = []
7
8 money = input('请输入你的金额:')
9 if money.isdigit():# 判断输入的是否长的像数字
10 money = int(money) #输入的内容转成整型(数字)
11 while True:
12 #打印内容
13 for i,v in enumerate(shopping_list,1): # enumerate 在展示列表前面加上索引数字默认为0 (列表名,1)索引加1, i,v 用两个变量分别接收 索引 和 列表内容
14 print(i,'>>>',v)
15 #引导用户选择商品
16 choice = input('选择商品编号[退出:Q]:') #choice:选择
17 #验证输入是否合法
18 if choice.isdigit():#判断输入的是否长的像数字
19 choice = int(choice) #输入的内容转成整型(数字)
20 if choice > 0 and choice <= len(shopping_list):# 如果输入的结果大于0 同时小于len 返回字符串、列表、字典、元组等长度
21 #将用户选择的商品通过choice取出来
22 item = shopping_list[choice -1] # item 赋值 = 列表索引 输入的值-1
23 #如果钱够,用本金money减去选的商品价格,并选择的商品加入购入购物车
24 if item[1] < money: #
25 money -= item[1]
26 shopping_car.append(item)
27 else:
28 print('余额不足,还剩 %s 元钱'%money)
29 print(item)
30 else:
31 print('编码不存在')
32 elif choice == 'q':
33 print('-------你已购买如下商品-------')
34 #循环显示购物车里的商品,购物车存放的是已购商品
35 for i in shopping_car:
36 shopping_car.count(item)
37 print(i)
38 print('你的余额为 %s 元钱'%money)
39 break
40 else:
41 print('无效输入')
字符串

1 # 1 * 重复输出字符串
2 print('hello'*2) #重复输出字符串
3
4 # 2 通过索引获取字符串中的字条,这里和列表的切片操作是相同的
5 print('helloworld'[2:])
6
7 # 3 关键字 in 成员运算符,如果字符串中包含指定的字符返回 True 否则返回Flase
8 print(123 in [23,45,123])
9 print('el1' in 'hello')
10
11 #4 格式化字符串
12
13 print('%s world'%'hello')
14
15 #5 字符串拼接
16
17 a = '123'
18 b = 'abc'
19 c = a+b
20 print(c)
21 c = '---'.join([a,b]) #常用效率方法,「''」里面可以为空也可其它字符,或者空格
22 print(c)
23
24 #6 string字符串的内置方法
25
26 a = 'hello world {name}'
27 print(a.count('l')) # * 统计元素个数
28 print(a.capitalize()) #首字母大写
29 print(a.center(50,'-')) # * 居中显示字符串并两边显示 ''的的内容
30 print(a.endswith('d')) #判断以某个内容结尾
31 print(a.startswith('h')) # * 判断以某个内容开头
32 print(a.expandtabs(tabsize=10)) # \t 插入空格
33 print(a.find('w')) # * 查找到第一个元素,并将索引值返回
34 print(a.format(name='abc')) # * 格式化输出的另一种方式
35 print(a.format_map({'name':'abc'})) #以字典的方式格式化输出
36 print('My Name'.lower()) # * 全部转换为小写
37 print('My Name'.upper()) # * 全部转换为大写
38 print('\t My Name\n'.strip())# * 清空所有的空格和换行符
39 print('My Name Name'.replace('ame','o',1))# * 替换指定的内容,可指定替换几次
40 print('My Name name'.split('a',1)) # 指定分隔 来分隔内容,可指定分隔几次
字典

1 #创建字典 用{}号表示
2
3 dic = {'name':'张三','age':20} #字典创建方法
4 dic1 = dict((('name','张三'),('age',20))) #第二种方法 不常用
5 print(dic1,dic)
6
7 # 增加内容
8 dic2 = {'name':'李四'}
9 dic2 ['age'] = 22 #增加内容
10 print(dic2)#{'name': '李四', 'age': 22}
11 dic2.setdefault('age',25)#如果存在「键」不做修改,并返回「键」的值
12 dic2.setdefault('job','IT')#如果「键」不存在,在字典中增加新的「键」值对,并返回相应的值
13 print(dic2)
14
15 #查 通过键去查找
16 print(dic['name'])
17 print(list(dic.keys())) #查看所有的「键」并转换为列表
18 print(list(dic.values()))#查看所有的「键」的值 并转换为列表
19 print(list(dic.items()))#把所有的「键」值对拿出来
20
21 # 改
22 dic3 = {'name':'张三','age':28}
23 dic3['name'] = '李四' #更改内容
24 dic4 = {'name':'王五','salry':10000}
25 dic3.update(dic4) #如果没有增加内容,如果有相同的覆盖之前的内容
26 print(dic3)
27 print(dic4)
28
29
30
31 # 删除 del
32
33 dic5 = {'name':'赵六','age':'26'}
34 # del dic5['name'] #删除字典中指定的键值对
35 # dic5.clear()#清空字典内容
36 # del dic5 #删除整个字典
37 ret = dic5.pop('age')#删除字典中指定内容并返回删除内容的值
38 print(ret)
39
40 a = dic5.popitem()#随机删除某组键值对,并以元组方式返回值
41 「键」 值
42 dic6 = dict.fromkeys(['host1','host2','host3'],['test1','test2']) #第三种字典创建方法
43 print(dic6)#{'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']}
44
45 dic6['host2'][1] = 'test3' #修改字典元素 会批量修改
46 print(dic6)#{'host1': ['test1', 'test3'], 'host2': ['test1', 'test3'], 'host3': ['test1', 'test3']}
47
48 #字典嵌套
49
50
51 dic7 = {6:'333',2:'111',3:'666'}
52 print(sorted(dic7))#按字典中的「键」进行排序
53 print(sorted(dic7.values()))#按字典中的值进行排序
54 print(sorted(dic7.items()))#按字典中的「键」进行排序并显示整个键值对
55
56 #字典的遍历
57
58 dic8 = {'name':'张三','age':18}
59 for i in dic8:
60 print(i,dic8[i]) #显示 字典中的键和值
61
62 for i,v in dic8.items():# 第二种显示字典中的键和值,这种效率慢
63 print(i,v)
三级菜单

1 menu = {
2 '北京':{
3 '海淀':{
4 '中关村':{},
5 '知春路':{},
6 '五道口':{},
7
8 },
9 '东城':{
10 '东单':{},
11 },
12 '西城':{
13 '金融街':{},
14 '西单':{},
15 },
16
17 },
18 '上海':{
19 '徐汇区':{},
20 '浦东':{}
21
22 },
23 '天津':{
24 '河北区':{},
25 '河东区':{},
26 }
27 }
28
29 current_layer = menu # 赋值动态循环 current(当前) layer层
30 parent_layers = [] #保存所有父级,最后一个元素永远都是父级
31 while True:
32 for key in current_layer:
33 print(key)
34 choice = input('>>>:').strip() #
35 if len(choice) == 0:continue
36 if choice in current_layer:
37 parent_layers.append(current_layer)#在进入下一层之前,把当前层(下一层的父级)
38 #追加到列表中,下一次循环,当用户选择b的时候,就可以直接取列表中最后一个值出来
39 current_layer = current_layer[choice]#改成子层
40 elif choice == 'b':
41 if parent_layers: #如果为空的时候
42 current_layer = parent_layers.pop()#取出列表的最后一个值,因为迱就是当前层的父级
43 else:
44 print('无内容')
来源:https://www.cnblogs.com/bianyi/p/7473041.html
