主要是以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 =name3 print('姓名',name,name2)4
5 name ='李四'
6
7 print(name,name2)8
9 number='''
10 12311 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/20>>>1.0/20.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 =00111100b =00001101-----------------a&b =00001100a|b =00111101a^b =00110001~a =11000011
运算符描述实例
&
按位与运算符:参与运算的两个值,如果两个相应位都为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,在一个有符号二进制数的补码形式。
<<
左移动运算符:运算数的各二进位全部左移若干位,由"<
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:%s11 Age:%d12 Job:%s13 Salary:%s14 ''' %(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
View Code
方法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 whileTrue: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 inshopping_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+b20 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 indic8: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 whileTrue:32 for key incurrent_layer:33 print(key)34 choice = input('>>>:').strip() #35 if len(choice) == 0:continue
36 if choice incurrent_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('无内容')
三级菜单实例