zoukankan      html  css  js  c++  java
  • python_day2

    简介:列表操作,元组,购物车程序

    1、列表操作

    # Author:Er
    
    #列表操作
    
    name = ["name", "age", "hah"]
    del name[2]
    print("删除del: ", name)
    
    name.remove(name[0])
    print("删除remove: ", name)
    
    name.append("li")
    print("追加append: ", name)
    
    name.insert(2, "xiong")
    print("插入insert: ", name)
    
    name[0] = "info"
    print("修改: ", name)
    
    _name = ["my", "name", "is", "er"]
    name.extend(_name)
    print("扩展extend:", name)
    
    _name_copy = name.copy()
    print(_name_copy)
    
    count = name.count("is")
    print("is 的个数为:", count)
    
    name.sort()
    print("排序sort: ", name)
    
    name.reverse()
    print("反转reverse: ", name)
    
    #获取下标
    print("er 的下标为: ", name.index("er"))
    
    
    # 元组  和列表差不多,只是一创建,就不能再修改,只有count,index
    names = ("my", "name", "is")
    Code

    运行结果

    E:PYvenvScriptspython.exe E:/PY/day2/list_all.py
    删除del:  ['name', 'age']
    删除remove:  ['age']
    追加append:  ['age', 'li']
    插入insert:  ['age', 'li', 'xiong']
    修改:  ['info', 'li', 'xiong']
    扩展extend: ['info', 'li', 'xiong', 'my', 'name', 'is', 'er']
    ['info', 'li', 'xiong', 'my', 'name', 'is', 'er']
    is 的个数为: 1
    排序sort:  ['er', 'info', 'is', 'li', 'my', 'name', 'xiong']
    反转reverse:  ['xiong', 'name', 'my', 'li', 'is', 'info', 'er']
    er 的下标为:  6
    
    Process finished with exit code 0
    

      2、复制copy

    # Author:Er
    import copy
    name = ["my", "name", "is", "er", ["li", "xiong", "fei"]]
    _name = copy.copy(name)
    _name = name[:]
    _name = list(name)     # 以上全部为浅复制,只有一层(可以单独改变),第二层里面(一变就全部同时变)(例子的话银行存款)
    _name1 = copy.deepcopy(name)  # 深复制
    del name[4][0]
    print(_name, _name1)
    for i, j in enumerate(name):    # 前是编号,后是内容
        print(i, j)
    
    for i in name:
        print(name.index(i), i)
    Code

    运行结果

    E:PYvenvScriptspython.exe E:/PY/day2/new_dir/test.py
    ['my', 'name', 'is', 'er', ['xiong', 'fei']] ['my', 'name', 'is', 'er', ['li', 'xiong', 'fei']]
    0 my
    1 name
    2 is
    3 er
    4 ['xiong', 'fei']
    0 my
    1 name
    2 is
    3 er
    4 ['xiong', 'fei']
    
    Process finished with exit code 0
    

      

    # 关于浅复制的应用
    假设A 与B 拥有共同财产 count =[ "name",[余额]]
    A = ["A",余额]
    B = ["B",余额]
    这样A B 可以随时修改姓名,但账户余额因为是由count浅复制而来,消费时count-,但AB 不能更改
    

      3、购物车

    # Author:Er
    
    # 购物车程序
    product_list = [
        ("手机", 1699),
        ("电脑", 5000),
        ("手环", 200)
    ]
    
    shopping_cart = []
    
    salary = input("请输入余额: ")
    if salary.isdigit():                # 判断输入是否为数字
        salary = int(salary)
        while True:
            print("**********商品列表**********")
            for _index, item in enumerate(product_list):
                print(_index, item)                   # index 编号   item 列表内容
            print("***************************")
            choice_list = input("请输入购买商品编号:")
            if choice_list.isdigit():
                choice_list = int(choice_list)
                if choice_list < len(product_list):
                    if salary >= product_list[choice_list][1]:
                        salary -= product_list[choice_list][1]
                        shopping_cart.append(product_list[choice_list])
                        print("你的当前余额为:", salary)
                    else:
                        print("您的当前余额为:%d,余额不足!" % salary)          # 打印格式
                else:
                    print("暂无此商品!")                                       # 判断是否退出
            elif choice_list == "q":
                # 打印当前购物车信息
                print("你的当前余额为:", salary)
                print("--------购物车---------")
                for item in shopping_cart:
                    print(item)
                print("----------------------")
                exit()                                                          # 退出
            else:
                print("输入错误!请重新输入:")
    
    else:
        print("输入错误!")
    Code

    运行结果

    E:PYvenvScriptspython.exe E:/PY/day2/new_dir/shopping.py
    请输入余额: 10000
    **********商品列表**********
    0 ('手机', 1699)
    1 ('电脑', 5000)
    2 ('手环', 200)
    ***************************
    请输入购买商品编号:0
    你的当前余额为: 8301
    **********商品列表**********
    0 ('手机', 1699)
    1 ('电脑', 5000)
    2 ('手环', 200)
    ***************************
    请输入购买商品编号:1
    你的当前余额为: 3301
    **********商品列表**********
    0 ('手机', 1699)
    1 ('电脑', 5000)
    2 ('手环', 200)
    ***************************
    请输入购买商品编号:5
    暂无此商品!
    **********商品列表**********
    0 ('手机', 1699)
    1 ('电脑', 5000)
    2 ('手环', 200)
    ***************************
    请输入购买商品编号:3
    暂无此商品!
    **********商品列表**********
    0 ('手机', 1699)
    1 ('电脑', 5000)
    2 ('手环', 200)
    ***************************
    请输入购买商品编号:q
    你的当前余额为: 3301
    --------购物车---------
    ('手机', 1699)
    ('电脑', 5000)
    ----------------------
    
    Process finished with exit code 0
    

    4、三级菜单(参考)

    __author__ = "Alex Li"
    
    data = {
        '北京':{
            "昌平":{
                "沙河":["oldboy","test"],
                "天通苑":["链家地产","我爱我家"]
            },
            "朝阳":{
                "望京":["奔驰","陌陌"],
                "国贸":{"CICC","HP"},
                "东直门":{"Advent","飞信"},
            },
            "海淀":{},
        },
        '山东':{
            "德州":{},
            "青岛":{},
            "济南":{}
        },
        '广东':{
            "东莞":{},
            "常熟":{},
            "佛山":{},
        },
    }
    exit_flag = False
    
    while not exit_flag:
        for i in data:
            print(i)
        choice = input("选择进入1>>:")
        if choice in data:
            while not exit_flag:
                for i2 in data[choice]:
                    print("	",i2)
                choice2 = input("选择进入2>>:")
                if choice2 in data[choice]:
                    while not exit_flag:
                        for i3 in data[choice][choice2]:
                            print("		", i3)
                        choice3 = input("选择进入3>>:")
                        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_flag = True
                        if choice3 == "b":
                            break
                        elif choice3 == "q":
                            exit_flag = True
                if choice2 == "b":
                    break
                elif choice2 == "q":
                    exit_flag = True
    Code

    运行结果

    E:PYvenvScriptspython.exe "E:/书籍下载/python/L002-Python基础2 列表、字典、集合/s14day2_code/3level_menus.py"
    北京
    山东
    广东
    选择进入1>>:北京
    	 昌平
    	 朝阳
    	 海淀
    选择进入2>>:昌平
    		 沙河
    		 天通苑
    选择进入3>>:沙河
    		 oldboy
    		 test
    最后一层,按b返回>>:b
    		 沙河
    		 天通苑
    选择进入3>>:b
    	 昌平
    	 朝阳
    	 海淀
    选择进入2>>:朝阳
    		 望京
    		 国贸
    		 东直门
    选择进入3>>:b
    	 昌平
    	 朝阳
    	 海淀
    选择进入2>>:q
    
    Process finished with exit code 0
    

     集合操作及字符串操作:(来源)

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

      *以上仅供自己复习之用*

  • 相关阅读:
    mybatis文件映射之select操作返回List集合
    mybatis文件映射之使用#取值时的一些规则
    mybatis文件映射之获取参数值时#和$的区别
    Java之对象池
    Java多线程设计模式(6)两阶段终止模式
    Future和FutureTask
    Java多线程设计模式(3)读写锁模式
    Java中的对象池模式
    创建资源池(对象池)
    Java多线程设计模式之线程池模式
  • 原文地址:https://www.cnblogs.com/BlogOfEr/p/8862541.html
Copyright © 2011-2022 走看看