zoukankan      html  css  js  c++  java
  • Python3之列表、元组和购物车程序练习

      1 # Author:Allister.Liu
      2 import copy
      3 
      4 """
      5 列表,元组
      6 """
      7 # --------------------------------------列表 start-------------------------------------------------------
      8 # names = ["Allister", "Alex", "Liudi", "WangPo", "Enle"]
      9 #
     10 # print(names)
     11 # print(names[2], names[3], names[-1]) # 通过下标获取,还可以倒着取
     12 
     13 """
     14 切片,0和-1可省略(首位)
     15 """
     16 # print(names[1:4]) # 取下标1至下标4之间的数字,包括1,不包括4
     17 #
     18 # print(names[1:-1]) #取下标1至-1的值,不包括-1
     19 
     20 # print(names[1:]) # 如果想取最后一个,必须不能写-1,只能这么写
     21 # print(names[:3]) # 0也可以不写
     22 # print(names[0:-1:2]) # 后面的2是代表,每隔一个元素,就取一个 === names[:-1:2]
     23 
     24 
     25 """
     26 追加
     27 """
     28 # names.append("Ajsd")
     29 # print(names)
     30 
     31 
     32 
     33 """
     34 插入
     35 """
     36 # names.insert(3, "追加")
     37 # print(names)
     38 
     39 
     40 """
     41 修改,del 变量名称    也可以删除变量
     42 """
     43 # names[1] = "Alex 修改后的值"
     44 # print(names)
     45 
     46 
     47 """
     48 删除
     49 """
     50 # del names[2]
     51 # names.remove("Allister")
     52 # names.pop() # 如果不指定下标,则默认删除最后一个
     53 # names.pop(1)
     54 # print("删除Liudi后:", names)
     55 
     56 
     57 
     58 """
     59 扩展,将新列表元素扩展进来
     60 """
     61 # b = [2, 5, 7]
     62 # names.extend(b)
     63 # print(names)
     64 
     65 """
     66 拷贝(浅拷贝):只copy最外层,内层只copy内存地址
     67 """
     68 # names_copy = names.copy()
     69 # print("copy :", names_copy)
     70 
     71 users = ["Allister", "Kiter", ["Hender", "haty"], "Jime"]
     72 # 浅拷贝一共三种:
     73 #1
     74 u1 = copy.copy(users)
     75 u2 = users[:]
     76 u3 = list(users)
     77 print("三种浅copy:", u3)
     78 
     79 # print(users)
     80 # users2 = users.copy()
     81 # print(users2)
     82 
     83 users[1] = "NewKiter"
     84 # print(users)
     85 # print(users2) #修改了外层数据,不影响
     86 
     87 
     88 # users[2][0] = "NewHender"
     89 # print(users)
     90 # print(users2) #修改了内层数据,copy后的数据也引用修改后的数据,因为浅拷贝只copy最外层数据,内层只copy一等内存地址
     91 
     92 
     93 # 深拷贝,需导入coopy模块
     94 users2 = copy.deepcopy(users)
     95 print("deepCopy:", users2)
     96 """
     97 排序,排序规则是按ASCII码顺序
     98 """
     99 # names.sort()
    100 # print("sort", names)
    101 
    102 """
    103 翻转
    104 """
    105 # names.reverse()
    106 # print("reverse", names)
    107 
    108 """
    109 获取下标
    110 """
    111 # print(names.index("Enle"))
    112 
    113 """
    114 统计个数
    115 """
    116 # print(names.count("Allister"))
    117 
    118 """
    119 清空
    120 """
    121 # names.clear()
    122 # print(names)
    123 
    124 # -----------------------------------------  end 列表 ----------------------------------------------------------
    125 
    126 
    127 
    128 
    129 
    130 # -----------------------------------------  元组 start ----------------------------------------------------------
    131 """
    132 元组:只有以下两个方法(count(), index()),它其实和列表很相似,但是元组一旦创建便不能修改,所以有名只读列表
    133 """
    134 # usernames = ("Allister", "Lindi", "Zenfy", "Kity", "Zenfy")
    135 # print(usernames.count("Allister")) # 统计元组中出现的个数
    136 
    137 # 如果存在相同的名称,则只返回找到的第一个下标
    138 # print(usernames.index("Zenfy")) # 获取该名称的下标
    139 
    140 
    141 # -----------------------------------------  end 元组 ----------------------------------------------------------
    执行结果
    程序练习:购物车程序

    需求:
    启动程序后,让用户输入工资,然后打印商品列表
    允许用户根据商品编号购买商品
    用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    可随时退出,退出时,打印已购买商品和余额

     1 # Author:Allister.Liu
     2 
     3 """
     4 程序:购物车程序
     5 
     6 需求:
     7     启动程序后,让用户输入工资,然后打印商品列表
     8     允许用户根据商品编号购买商品
     9     用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    10     可随时退出,退出时,打印已购买商品和余额
    11 
    12 """
    13 
    14 # 商品列表 名称&单价
    15 product_list = [
    16     ["Iphone", 6600],
    17     ["Mac Pro", 12888],
    18     ["Watch", 1033],
    19     ["Bike", 899],
    20     ["Nick", 2688],
    21     ["Book", 69.5]
    22 ]
    23 
    24 card_list = []
    25 
    26 # 打印产品信息
    27 def print_product_infos():
    28     print("-----编码---------名称------单价-----")
    29     index_ = 0
    30     for key in product_list:
    31         print("----", index_, "-----", key[0], "-----", key[1])
    32         index_ += 1
    33     else:
    34         print("---------------------------------")
    35 
    36 
    37 # 结账
    38 def settle(salaty_, count):
    39     print("-----编码--------单价-----")
    40     for i in card_list:
    41         print("----", int(i), "-------", product_list[int(i)][1])
    42 
    43     else:
    44         print("---------------------------------")
    45         print("您一共消费¥%.2f元,卡余额¥%.2f元" % (float(count), float(salaty_) - float(count)))
    46 
    47 
    48 # 卡余额
    49 salaty = input("您的余额:")
    50 if salaty.isdigit():
    51     # 购物车商品总额
    52     card_count = 0
    53     salaty = float(salaty)
    54     while card_count <= salaty:
    55         # 打印产品信息
    56         print_product_infos()
    57 
    58         # 输入产品编码,并判断金额是否小于卡余额,若小于,则加入购物车
    59         product_id = input("请输入产品编码或直接输入q退出:")
    60         if product_id.isdigit():
    61             user_choce = int(product_id)
    62             if user_choce < len(product_list) and user_choce >= 0:
    63                 card_list.append(product_id)
    64                 card_count += product_list[int(product_id)][1]
    65                 if card_count > salaty:
    66                     print("您的卡片余额不足购买商品金额¥%.2f元,请充值后再试!" % card_count)
    67                     break
    68             else:
    69                 print("商品不存在,请重新输入商品编码")
    70                 continue
    71         elif product_id == 'q':
    72             if card_count > 0:
    73                 # 扣款并结账
    74                 settle(salaty, card_count)
    75             break
    76         else:
    77             print("您的输入有误,请重新输入商品编码")
    78             continue
    79     else:
    80         # 扣款并结账
    81         settle(salaty, card_count)
    82 else: # 卡余额输入错误
    83     print("会员卡余额输入错误")
    84     exit()
    您的余额:34222
    -----编码---------名称------单价-----
    ---- 0 ----- Iphone ----- 6600
    ---- 1 ----- Mac Pro ----- 12888
    ---- 2 ----- Watch ----- 1033
    ---- 3 ----- Bike ----- 899
    ---- 4 ----- Nick ----- 2688
    ---- 5 ----- Book ----- 69.5
    ---------------------------------
    请输入产品编码或直接输入q退出:1
    -----编码---------名称------单价-----
    ---- 0 ----- Iphone ----- 6600
    ---- 1 ----- Mac Pro ----- 12888
    ---- 2 ----- Watch ----- 1033
    ---- 3 ----- Bike ----- 899
    ---- 4 ----- Nick ----- 2688
    ---- 5 ----- Book ----- 69.5
    ---------------------------------
    请输入产品编码或直接输入q退出:2
    -----编码---------名称------单价-----
    ---- 0 ----- Iphone ----- 6600
    ---- 1 ----- Mac Pro ----- 12888
    ---- 2 ----- Watch ----- 1033
    ---- 3 ----- Bike ----- 899
    ---- 4 ----- Nick ----- 2688
    ---- 5 ----- Book ----- 69.5
    ---------------------------------
    请输入产品编码或直接输入q退出:5
    -----编码---------名称------单价-----
    ---- 0 ----- Iphone ----- 6600
    ---- 1 ----- Mac Pro ----- 12888
    ---- 2 ----- Watch ----- 1033
    ---- 3 ----- Bike ----- 899
    ---- 4 ----- Nick ----- 2688
    ---- 5 ----- Book ----- 69.5
    ---------------------------------
    请输入产品编码或直接输入q退出:q
    -----编码--------单价-----
    ---- 1 ------- 12888
    ---- 2 ------- 1033
    ---- 5 ------- 69.5
    ---------------------------------
    您一共消费¥13990.50元,卡余额¥20231.50元
    购物车程序运行结果

    键盘上的武者

  • 相关阅读:
    Unknown host mirrors.opencas.cn You may need to adjust the proxy settings in Gradle 报错及解决办法
    Design editor is unavaiable until next gradle sync报错及解决办法
    mkdir创建目录失败
    读书笔记之梦断代码(三)
    Android学习——更新数据
    Android学习——添加数据
    Android学习——升级数据库
    Android学习——创建数据库
    开课第十一周周总结
    Android学习——数据库简介
  • 原文地址:https://www.cnblogs.com/allister/p/8279708.html
Copyright © 2011-2022 走看看