zoukankan      html  css  js  c++  java
  • Day02:我的Python学习之路

    1、初识模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库,现在简单的学习2个常见的标准库——sys和os。

    (1)系统的标准库sys

    1 # Author:GCL
    2 
    3 # 系统的标准库sys
    4 import sys
    5 
    6 # 打印环境变量
    7 print(sys.path)
    8 # 打印相对路径
    9 print(sys.argv)
    标准库sys
    ['F:\Python\code\Day02', 'F:\Python\code\Day02', 'E:\PythonAnZhuang\python36.zip', 'E:\PythonAnZhuang\DLLs', 'E:\PythonAnZhuang\lib', 'E:\PythonAnZhuang', 'E:\PythonAnZhuang\lib\site-packages']
    ['F:/Python/code/Day02/MySys_Os.py']
    输出

    (2)系统的标准库os

     1 # Author:GCL
     2 
     3 # 系统的标准库os
     4 import os
     5 
     6 # 执行系统命令,不保存结果,返回执行的状态,成功返回0
     7 statue=os.system("dir")
     8 print(statue)
     9 # 得到返回的结果
    10 ret=os.popen("dir").read()
    11 print(ret)
    12 # 新建文件夹的命令如下
    13 #os.mkdir("newDir")
    标准库os
     ������ F �еľ��� ѧϰ
     �������� 0000-0C4A
    
     F:PythoncodeDay02 ��Ŀ¼
    
    2018/05/05  17:04    <DIR>          .
    2018/05/05  17:04    <DIR>          ..
    2018/05/05  20:22    <DIR>          .idea
    2018/05/04  17:14               181 BytesAndStr.py
    2018/05/05  11:45               772 ListCopy.py
    2018/05/05  11:22             1,884 MyList.py
    2018/05/04  01:38               443 MySys_Os.py
    2018/05/05  17:04             1,561 ShoppingCart.py
                   5 ���ļ�          4,841 �ֽ�
                   3 ��Ŀ¼ 30,338,977,792 �����ֽ�
    0
     驱动器 F 中的卷是 学习
     卷的序列号是 0000-0C4A
    
     F:PythoncodeDay02 的目录
    
    2018/05/05  17:04    <DIR>          .
    2018/05/05  17:04    <DIR>          ..
    2018/05/05  20:22    <DIR>          .idea
    2018/05/04  17:14               181 BytesAndStr.py
    2018/05/05  11:45               772 ListCopy.py
    2018/05/05  11:22             1,884 MyList.py
    2018/05/04  01:38               443 MySys_Os.py
    2018/05/05  17:04             1,561 ShoppingCart.py
                   5 个文件          4,841 字节
                   3 个目录 30,338,977,792 可用字节
    输出

    2、pyc文件是什么

    经常说Python是一门解释性语言,其实不够准确,想要弄清楚pyc文件到底是什么,就必须清楚Python的运行过程。
    Python的运行过程其实类似于Java,先编译后解释,即:Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器解释成机器文件。所以说Python应该是一门先编译后解释的语言。
    在说Python的运行过程之前,我们先来说两个概念,PyCodeObject和pyc文件。我们在硬盘上看到的pyc文件自然不必多说,而其实PyCodeObject则是Python编译器真正编译出的结果。
    当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。所以pyc文件其实是PyCodeObject的一种持久化保存方式。

    3、Python3的数据类型bytes

    在Python3中,文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python3不会以任意隐式的方式混用str和bytes,所以两者的区分特别清晰。
    但是,字符串可以编码成字节包,而字节包可以解码成字符串。

    1 # Author:GCL
    2 
    3 nameStr="我是Chinese"
    4 # 编码
    5 nameBytes=nameStr.encode('utf-8')
    6 print(nameBytes)
    7 # 解码
    8 nameStr=nameBytes.decode('utf-8')
    9 print(nameStr)
    编码与解码
    b'xe6x88x91xe6x98xafChinese'
    我是Chinese
    输出

    4、列表

    列表是我们以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作。

    (1)定义列表与访问单个元素

     1 # Author:GCL
     2 
     3 print("========定义列表与访问单个元素========")
     4 # 定义列表
     5 names=["Jack","Tom","Mary","Alex"]
     6 print(names)
     7 # 通过下标访问列表中的元素,下标从0开始计数
     8 print(names[0],names[1],names[2],names[3])
     9 # 倒着取的下标
    10 print(names[-4],names[-3],names[-2],names[-1])
    定义列表与访问单个元素
    ========定义列表与访问单个元素========
    ['Jack', 'Tom', 'Mary', 'Alex']
    Jack Tom Mary Alex
    Jack Tom Mary Alex
    输出

    (2)切片——取多个元素

     1 print("========切片========")
     2 # 切片——取多个元素
     3 # 取下标1至下标3之间的数字,包括1,不包括3
     4 print(names[1:3])
     5 # 与上句等价
     6 print(names[1:-1])
     7 # 当从头开始取的时候,下标0可以忽略
     8 print(names[:2])
     9 # 与上句等价
    10 print(names[0:2])
    11 # 如果想取到最后一个元素,应该像如下这么写
    12 print(names[2:])
    13 # 间隔着取元素
    14 print(names[0:-1:2])
    15 print(names[:-1:3])
    16 print(names[::2])
    切片——取多个元素
    ========切片========
    ['Tom', 'Mary']
    ['Tom', 'Mary']
    ['Jack', 'Tom']
    ['Jack', 'Tom']
    ['Mary', 'Alex']
    ['Jack', 'Mary']
    ['Jack']
    ['Jack', 'Mary']
    输出

    (3)追加

    1 print("========追加========")
    2 names.append("追加新成员0")
    3 print(names)
    追加
    ========追加========
    ['Jack', 'Tom', 'Mary', 'Alex', '追加新成员0']
    输出

    (4)插入

    1 print("========插入========")
    2 names.insert(1,"插入新成员0")
    3 print(names)
    插入
    ========插入========
    ['Jack', '插入新成员0', 'Tom', 'Mary', 'Alex', '追加新成员0']
    输出

    (5)修改

    1 print("========修改========")
    2 names[2]="Tom_Mod"
    3 print(names)
    修改
    ========修改========
    ['Jack', '插入新成员0', 'Tom_Mod', 'Mary', 'Alex', '追加新成员0']
    输出

    (6)删除

     1 print("========删除========")
     2 del names[1]
     3 print(names)
     4 # 删除指定元素
     5 names.remove("Tom_Mod")
     6 print(names)
     7 # 删除列表的一个元素,默认是最后一个
     8 names.pop()
     9 print(names)
    10 # names.pop(1)
    11 names.pop(-2)
    12 print(names)
    删除
    ========删除========
    ['Jack', 'Tom_Mod', 'Mary', 'Alex', '追加新成员0']
    ['Jack', 'Mary', 'Alex', '追加新成员0']
    ['Jack', 'Mary', 'Alex']
    ['Jack', 'Alex']
    输出

    (7)扩展

    1 print("========扩展========")
    2 ex=[1,2,3,2]
    3 names.extend(ex)
    4 del ex
    5 print(names)
    扩展
    ========扩展========
    ['Jack', 'Alex', 1, 2, 3, 2]
    输出

    (8)统计

    1 print("========统计========")
    2 # 统计列表中元素为2的个数
    3 num=names.count(2)
    4 print(num)
    统计
    ========统计========
    2
    输出

    (9)排序与翻转

     1 print("========排序与翻转========")
     2 # Python3中不同数据类型不能放在一起排序
     3 names[2]="1"
     4 names[3]="2"
     5 names[-2]="3"
     6 names[-1]="2"
     7 print(names)
     8 # 按照ASCII码的顺序排列
     9 names.sort()
    10 print(names)
    11 # 翻转
    12 names.reverse()
    13 print(names)
    排序与翻转
    ========排序与翻转========
    ['Jack', 'Alex', '1', '2', '3', '2']
    ['1', '2', '2', '3', 'Alex', 'Jack']
    ['Jack', 'Alex', '3', '2', '2', '1']
    输出

    (10)获取下标

    1 print("========获取下标========")
    2 # 只返回找到的第一个下标
    3 index=names.index("2")
    4 print(index)
    获取下标
    ========获取下标========
    3
    输出

    (11)清空列表

    1 print("========清空列表========")
    2 names.clear()
    3 print(names)
    清空列表
    ========清空列表========
    []
    输出

    (12)拷贝

    ①.第一种浅拷贝

     1 # Author:GCL
     2 
     3 names1=["Jack","Tom","Mary",["1","2"],"Alex"]
     4 # 浅拷贝
     5 # names2=names1.copy()
     6 # 等价于上句
     7 # names2=names1[:]
     8 # 等价于上句
     9 names2=list(names1)
    10 print(names1)
    11 print(names2)
    12 names1[1]="Tom_Mod"
    13 names1[3][0]="One"
    14 print(names1)
    15 print(names2)
    源码
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom_Mod', 'Mary', ['One', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['One', '2'], 'Alex']
    结果

    ②.第二种浅拷贝

     1 # Author:GCL
     2 
     3 import copy
     4 names3=["Jack","Tom","Mary",["1","2"],"Alex"]
     5 # 浅拷贝
     6 names4=copy.copy(names3)
     7 print(names3)
     8 print(names4)
     9 names3[1]="Tom_Mod"
    10 names3[3][0]="One"
    11 print(names3)
    12 print(names4)
    源码
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom_Mod', 'Mary', ['One', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['One', '2'], 'Alex']
    输出

    ③.深拷贝

     1 # Author:GCL
     2 
     3 import copy
     4 # 深拷贝
     5 names5=["Jack","Tom","Mary",["1","2"],"Alex"]
     6 names6=copy.deepcopy(names5)
     7 print(names5)
     8 print(names6)
     9 names5[1]="Tom_Mod"
    10 names5[3][0]="One"
    11 print(names5)
    12 print(names6)
    源码
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    ['Jack', 'Tom_Mod', 'Mary', ['One', '2'], 'Alex']
    ['Jack', 'Tom', 'Mary', ['1', '2'], 'Alex']
    输出

    5、元组

    元组其实跟列表差不多,也是存一组数,只不过它一旦创建,便不能再修改,所以又叫只读列表。

    6、购物车小程序

    需求:

    (1)启动程序后,让用户输入工资,然后打印商品列表;

    (2)允许用户根据商品编号购买商品;

    (3)用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒; 

    (4)可随时退出,退出时,打印已购买商品和余额。

     1 # Author:GCL
     2 
     3 # 商品列表
     4 product_list=[("苹果",12),("香蕉",20),("西瓜",15),("橘子",10)]
     5 # 购物列表,存放用户购买的商品
     6 shopping_list=[]
     7 # 工资
     8 salary=input("请输入您的工资:")
     9 # 工资是否为数字
    10 if salary.isdigit():
    11     salary=int(salary)
    12     while True:
    13         print("==========商品列表==========")
    14         # index保存索引,item保存具体的值
    15         for index,item in enumerate(product_list):
    16             print(index,item)
    17         user_choice=input("请选择需要购买的商品的编号:")
    18         if user_choice.isdigit():
    19             user_choice=int(user_choice)
    20             # len(product_list)表示的是列表的元素个数
    21             if user_choice<len(product_list) and user_choice>=0:
    22                 tmp_item=product_list[user_choice]
    23                 if tmp_item[1]<=salary:
    24                     shopping_list.append(tmp_item)
    25                     salary-=tmp_item[1]
    26                     print("商品:%s添加成功,还剩余额:33[31;1m%d33[0m"%(tmp_item,salary))
    27                 else:
    28                     print("33[41;1m您的余额不够,只剩下:%d33[0m"%(salary))
    29             else:
    30                 print("您所输入的编号:%d不存在!"%(user_choice))
    31         elif user_choice=="q":
    32             print("正常退出!")
    33             print("您所购买的商品如下:")
    34             for index,item in enumerate(shopping_list):
    35                 print(index,item)
    36             print("您的余额为:33[31;1m%d33[0m"%(salary))
    37             exit()
    38         else:
    39             print("您的选择非法,无法识别!")
    40 else:
    41     print("您输入的工资有误!")
    源码
    请输入您的工资:50
    ==========商品列表==========
    0 ('苹果', 12)
    1 ('香蕉', 20)
    2 ('西瓜', 15)
    3 ('橘子', 10)
    请选择需要购买的商品的编号:1
    商品:('香蕉', 20)添加成功,还剩余额:30
    ==========商品列表==========
    0 ('苹果', 12)
    1 ('香蕉', 20)
    2 ('西瓜', 15)
    3 ('橘子', 10)
    请选择需要购买的商品的编号:2
    商品:('西瓜', 15)添加成功,还剩余额:15
    ==========商品列表==========
    0 ('苹果', 12)
    1 ('香蕉', 20)
    2 ('西瓜', 15)
    3 ('橘子', 10)
    请选择需要购买的商品的编号:1
    您的余额不够,只剩下:15
    ==========商品列表==========
    0 ('苹果', 12)
    1 ('香蕉', 20)
    2 ('西瓜', 15)
    3 ('橘子', 10)
    请选择需要购买的商品的编号:q
    正常退出!
    您所购买的商品如下:
    0 ('香蕉', 20)
    1 ('西瓜', 15)
    您的余额为:15
    输出

    7、字符串操作

    关于对字符串的一系列操作,都在下面的源码中进行了详细的说明:

      1 # Author:GCL
      2 
      3 # 首字母大写,后续字母全部变为小写
      4 print("toM gooD".capitalize())
      5 
      6 # 统计给定字符串出现的次数
      7 print("abc fdh aha".count("a"))
      8 
      9 # 将字符串填充到15位,用*号前后填充,如果指定的位数小于字符串的长度,将没有效果
     10 print("1234567".center(15,"*"))
     11 
     12 # 对字符串进行编码,得到对应的字节包
     13 print("我爱中国".encode("utf-8"))
     14 
     15 # 判断字符串是否以gcl结尾
     16 print("Qggh hjgcl".endswith("gcl"))
     17 
     18 # 将Tab键的距离扩展到16
     19 print("I love	You".expandtabs(16))
     20 
     21 # 格式化字符串
     22 print("My name is {name},I am {year}".format(name="gcl",year=22))
     23 print("My name is {name},I am {year}".format_map({"name":"gcl","year":22}))
     24 
     25 # 在字符串中查找name,找到的话返回首次找到的索引,否则返回-1
     26 print("My name is {name},I am {year}".find("name"))
     27 
     28 # 在字符串中查找name,找到的话返回首次找到的索引,否则报错
     29 print("My name is {name},I am {year}".index("name"))
     30 
     31 # 判断字符串是否为整数
     32 print("11".isdigit())
     33 
     34 # 判断字符串是否只由数字和字母组成
     35 print("ak15".isalnum())
     36 
     37 # 判断字符串是否只由字母组成
     38 print("aaA".isalpha())
     39 
     40 # 判断字符串是否为十进制
     41 print("12".isdecimal())
     42 
     43 # 判读字符串是否为一个合法的标识符
     44 print("jk2_".isidentifier())
     45 
     46 # 判读字符串中字母是否全为小写
     47 print("abc 36".islower())
     48 
     49 # 判断字符串是否只由数字组成
     50 print("2361".isnumeric())
     51 
     52 # 判断字符串是否可以打印
     53 print("MyNameIs".isprintable())
     54 
     55 # 判断字符串是否为空格
     56 print(" ".isspace())
     57 
     58 # 判断字符串是否为标题
     59 print("My Name is".istitle())
     60 print("My Name Is".istitle())
     61 
     62 # 判读字符串中字母是否全为大写
     63 print("AS11".isupper())
     64 
     65 # join的示例用法
     66 print("+".join(["1","2","3"]))
     67 print("->".join(["a","b","c"]))
     68 
     69 # 从左到右(左对齐),不够的位数用*来填充
     70 print("12345".ljust(10,"*"))
     71 
     72 # 从右到左(右对齐),不够的位数用*来填充
     73 print("12345".rjust(10,"*"))
     74 
     75 # 转换成小写
     76 print("KLHasgUK".lower())
     77 
     78 # 转换成大写
     79 print("KLHasgUK".upper())
     80 
     81 # 去除左边的空格或换行
     82 print(" 
    abc".lstrip())
     83 
     84 # 去除右边的空格或换行
     85 print("abc
    ".rstrip())
     86 
     87 # 去除两端的空格或换行
     88 print(" 
    abc
    ".strip())
     89 
     90 # maketrans用法示例
     91 p=str.maketrans("abcde","12345")
     92 print("hajbkcldqe".translate(p))
     93 
     94 # 从左到右拆分字符串
     95 print("My name is {name},I am {year}".partition(" "))
     96 
     97 # 替换指定的字符串
     98 print("gcl love li".replace("l","L",2))
     99 
    100 # 从右到左首次找到的索引
    101 print("gcl love li".rfind("l"))
    102 
    103 # 从右到左拆分字符串
    104 print("My name is {name},I am {year}".rpartition(" "))
    105 
    106 # 分割字符串
    107 print("1+2+3+4".split("+"))
    108 
    109 # 大小写互换
    110 print("aBcDeFgHi".swapcase())
    111 
    112 # 转换成标题
    113 print("i love you".title())
    114 
    115 # 填充字符串
    116 print("123abc".zfill(10))
    源码

    其对应的输出如下:

    Tom good
    3
    ****1234567****
    b'xe6x88x91xe7x88xb1xe4xb8xadxe5x9bxbd'
    True
    I love          You
    My name is gcl,I am 22
    My name is gcl,I am 22
    3
    3
    True
    True
    True
    True
    True
    True
    True
    True
    True
    False
    True
    True
    1+2+3
    a->b->c
    12345*****
    *****12345
    klhasguk
    KLHASGUK
    abc
    abc
    abc
    h1j2k3l4q5
    ('My', ' ', 'name is {name},I am {year}')
    gcL Love li
    9
    ('My name is {name},I am', ' ', '{year}')
    ['1', '2', '3', '4']
    AbCdEfGhI
    I Love You
    0000123abc
    输出

    8、字典操作

    (1)字典是一种----->key:value 的数据类型,其语法如下:

    1 info={
    2     "stu001":"gcl","stu002":"lmy","stu003":"xx"
    3 }
    4 print(info)
    定义
    {'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx'}
    输出

    (2)字典的特性:

    ①.字典是无序的;

    ②.字典的key值必须是唯一的。

    (3)字典的常见操作

    ①.增加

    1 # 增加
    2 info["stu004"]="yxm"
    3 info["stu005"]="tl"
    4 print(info)
    增加
    {'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx', 'stu004': 'yxm', 'stu005': 'tl'}
    输出

    ②.修改

    1 # 修改
    2 info["stu001"]="gcl2.0"
    3 print(info)
    修改
    {'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx', 'stu004': 'yxm', 'stu005': 'tl'}
    输出

    ③.删除

    1 # 删除
    2 # 指定删除
    3 info.pop("stu004")
    4 print(info)
    5 del info["stu005"]
    6 print(info)
    7 # 随机删除
    8 info.popitem()
    9 print(info)
    删除
    {'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx', 'stu005': 'tl'}
    {'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
    {'stu001': 'gcl2.0', 'stu002': 'lmy'}
    输出

    ④.查找

    1 # 查找
    2 # 如果Key值不存在就会报错
    3 print(info["stu001"])
    4 # 最好的方法是get,如果不存在会返回None
    5 print(info.get("stu002"))
    6 print(info.get("stu003"))
    7 # 判断Key值是否存在
    8 print(("stu001" in info))
    查找
    gcl2.0
    lmy
    None
    True
    输出

    ⑤.Keys值与values值

    1 # Keys值
    2 print(info.keys())
    3 
    4 # values值
    5 print(info.values())
    Keys值与values值
    dict_keys(['stu001', 'stu002'])
    dict_values(['gcl2.0', 'lmy'])
    输出

    ⑥.setdefault、update、items

     1 # setdefault
     2 info.setdefault("stu003","xx")
     3 print(info)
     4 info.setdefault("stu001","gcl")
     5 print(info)
     6 
     7 # update
     8 ex={11:22,33:44,"stu001":"gcl"}
     9 info.update(ex)
    10 print(info)
    11 
    12 # items
    13 print(info.items())
    setdefault、update、items
    {'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
    {'stu001': 'gcl2.0', 'stu002': 'lmy', 'stu003': 'xx'}
    {'stu001': 'gcl', 'stu002': 'lmy', 'stu003': 'xx', 11: 22, 33: 44}
    dict_items([('stu001', 'gcl'), ('stu002', 'lmy'), ('stu003', 'xx'), (11, 22), (33, 44)])
    输出

    ⑦.循环打印

    1 # 循环打印字典
    2 # 比较常用
    3 for key in info:
    4     print(key,info[key])
    5 #会先把dict转成list,数据量大时莫用
    6 for k,v in info.items():
    7     print(k,v)
    循环打印字典
    stu001 gcl
    stu002 lmy
    stu003 xx
    11 22
    33 44
    stu001 gcl
    stu002 lmy
    stu003 xx
    11 22
    33 44
    输出

    9、程序:三级菜单

    要求:

    (1)可返回上一级;

    (2)可随时退出程序。

      1 # Author:GCL
      2 
      3 # 整体的字典数据
      4 data={
      5     "A1":{
      6         "A11":{
      7             "A111":["1","2"],
      8             "A112":["3","4"]
      9         },
     10         "A12":{
     11             "A121":["5","6"],
     12             "A122":["7","8"]
     13         },
     14         "A13":{
     15             "A131":["9","10"],
     16             "A132":["11","12"]
     17         }
     18     },
     19     "A2":{
     20         "A21":{
     21             "A211":["13","14"],
     22             "A212":["15","16"]
     23         },
     24         "A22":{
     25             "A221":["17","18"],
     26             "A222":["19","20"]
     27         },
     28         "A23":{
     29             "A231":["21","22"],
     30             "A232":["23","24"]
     31         }
     32     },
     33     "A3":{
     34         "A31":{
     35             "A311": ["25", "26"],
     36             "A312": ["27", "28"]
     37         },
     38         "A32":{
     39             "A321": ["29", "30"],
     40             "A322": ["31", "32"]
     41         },
     42         "A33":{
     43             "A331": ["33", "34"],
     44             "A332": ["35", "36"]
     45         }
     46     },
     47     "A4":{
     48         "A41":{
     49             "A411": ["37", "38"],
     50             "A412": ["39", "40"]
     51         },
     52         "A42":{
     53             "A421": ["41", "42"],
     54             "A422": ["43", "44"]
     55         },
     56         "A43":{
     57             "A431": ["45", "46"],
     58             "A432": ["47", "48"]
     59         }
     60     }
     61 }
     62 
     63 # 退出的标志位,默认为真
     64 exit_flag=True
     65 while exit_flag:
     66     # 打印第一级的keys值
     67     for k in data:
     68         print(k)
     69     choice1=input("您的选择(第一级):")
     70     if (choice1 in data):
     71         while exit_flag:
     72             # 打印第二级的keys值
     73             for k in data[choice1]:
     74                 print(k)
     75             choice2=input("您的选择(第二级):")
     76             if (choice2 in data[choice1]):
     77                 while exit_flag:
     78                     # 打印第三级的keys值
     79                     for k in data[choice1][choice2]:
     80                         print(k)
     81                     choice3=input("您的选择(第三级):")
     82                     if (choice3 in data[choice1][choice2]):
     83                         print(data[choice1][choice2][choice3])
     84                     elif choice3=="b":
     85                         break
     86                     elif choice3=="q":
     87                         exit_flag=False
     88                     else:
     89                         print("您的选择有误,无法识别!")
     90             elif choice2=="b":
     91                 break;
     92             elif choice2=="q":
     93                 exit_flag=False
     94             else:
     95                 print("您的选择有误,无法识别!")
     96     elif choice1=="b":
     97         print("已经是第一级了,无法返回上一级!")
     98     elif choice1=="q":
     99         exit_flag=False
    100     else:
    101         print("您的选择有误,无法识别!")
    源码
    A1
    A2
    A3
    A4
    您的选择(第一级):A2
    A21
    A22
    A23
    您的选择(第二级):A21
    A211
    A212
    您的选择(第三级):A212
    ['15', '16']
    A211
    A212
    您的选择(第三级):A211
    ['13', '14']
    A211
    A212
    您的选择(第三级):B
    您的选择有误,无法识别!
    A211
    A212
    您的选择(第三级):b
    A21
    A22
    A23
    您的选择(第二级):b
    A1
    A2
    A3
    A4
    您的选择(第一级):b
    已经是第一级了,无法返回上一级!
    A1
    A2
    A3
    A4
    您的选择(第一级):A4
    A41
    A42
    A43
    您的选择(第二级):q
    
    Process finished with exit code 0
    输出

    后记:欢迎各路大神批评与指正!

    2018.5.6

  • 相关阅读:
    __all__
    python内置函数
    qZnF新存马王至许观制两利各
    PHP中获取当前页面的完整URL
    DedeCms用tag调用全站相关文章
    dedecms如何利用tag来调取相关文章
    SQL Server TempDB
    SQL Server Pivot 隐藏group
    Rebind and Rewind in Execution Plans
    batch 数字进制的问题
  • 原文地址:https://www.cnblogs.com/gcl0909031172/p/8996949.html
Copyright © 2011-2022 走看看