• python实现购物车


    一、 功能:

      1、 用户充值余额

        判断余额输入格式是否正确,正确则转换成float型。

      2、 显示商品列表

        根据已有商品显示所有商品的序号、商品名称、和价格供用户选择

      3、 用户选择商品

        判断用户输入

        (1) 若输入为数字则判断是否为负或超出商品序号范围

        (2) 若输出为“q”则打印已选择商品,并退出

        (3) 若前者都不是则判断非法,重新选择

      4、 用户选择商品后判断余额是否能够支付已选择商品的总价格

        (1) 可以支付则继续选择

        (2) 不可支付则提醒充值,充值完成后继续选择购买

    二、 流程图

      

    三、 代码

      

     1 # Author:晴空无云
     2 #购物车存储列表
     3 cartlist = []
     4 #商品列表
     5 goodslist = [[1,'note',1.0],[2,'Python Struct',88.0],[3,'Java',55.0],[4,'C++',1.0],]
     6 #余额,
     7 balance = input("请充值:")
     8 #判断余额是否合法
     9 if balance.isdigit():
    10     #将balance转置成float
    11     balance = float(balance)
    12     while balance>=0:#余额不为负
    13         print("*******商品列表********")
    14         for index,item in enumerate(goodslist,start=1):
    15             print(item)
    16         user_choice = input("请选择购买商品:")
    17         if user_choice.isdigit():# 判断商品选择是否合法
    18             # 选择商品从1开始,列表下标是0
    19             user_choice = int(user_choice)-1
    20             if user_choice < 0:
    21                 print("非法输入,商品序号不能为负")
    22             elif (user_choice < len(goodslist)):
    23                 price = goodslist[user_choice][2]
    24                 if balance - price >=0 :
    25                     balance = balance - price
    26                     print("选择的商品为:",goodslist[user_choice])
    27                     print("余额为:", balance)
    28                     cartlist.extend(goodslist[user_choice])
    29                 else:
    30                     now_salar = input("余额不足,请充值:")
    31                     if now_salar.isdigit():
    32                         now_salar = int(now_salar)
    33                         balance = balance + now_salar
    34                         print("余额为:", balance)
    35                     else:
    36                         print("非法输入")
    37 
    38             else:
    39                 print("选择商品不存在")
    40         elif user_choice=="q":
    41             print("-----已选购商品-----")
    42             print(cartlist)
    43             print("-----余额------")
    44             print(balance, '')
    45             break
    46         else:
    47             print("商品序号非法输入")
    48 else:
    49     print("余额输入非法")

    四、 测试结果

      1. 余额输入非法

      

    请充值:d
    余额输入非法
    **********
    请充值:-1
    余额输入非法

      2. 测试打印商品列表

      

    请充值:99
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:

      3.测试购买商品

      

    请选择购买商品:1
    选择的商品为: [1, 'note', 1.0]
    余额为: 98.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:2
    选择的商品为: [2, 'Python Struct', 88.0]
    余额为: 10.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:

      4. 测试余额不足下充值

      

    余额为: 9.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:2
    余额不足,请充值:55
    余额为: 64.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:

      5. 测试商品序号非法输入

      

    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:0
    非法输入,商品序号不能为0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:-1
    商品序号非法输入
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:5
    选择商品不存在
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:dd
    商品序号非法输入
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:

      6. 测试退出购买

    请充值:999
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:1
    选择的商品为: [1, 'note', 1.0]
    余额为: 998.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:3
    选择的商品为: [3, 'Java', 55.0]
    余额为: 943.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:2
    选择的商品为: [2, 'Python Struct', 88.0]
    余额为: 855.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:4
    选择的商品为: [4, 'C++', 1.0]
    余额为: 854.0
    *******商品列表********
    [1, 'note', 1.0]
    [2, 'Python Struct', 88.0]
    [3, 'Java', 55.0]
    [4, 'C++', 1.0]
    请选择购买商品:q
    -----已选购商品-----
    [1, 'note', 1.0]
    [3, 'Java', 55.0]
    [2, 'Python Struct', 88.0]
    [4, 'C++', 1.0]
    -----总消费------
    145.0
    -----余额------
    854.0 元
  • 相关阅读:
    mybatis之mapper.xml分析
    mybati之运行过程
    ibatis中的resultClass,parameterClass,resultMap,resultType的使用与区别
    mybatis之parameterType传递多个参数
    mybati之#与$的区别
    【Java面试题】20 运行时异常和一般异常有何区别
    【Java面试题】19 final,finally和finalize的区别
    【Java面试题】18 java中数组有没有length()方法?string没有lenght()方法?下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
    【Java面试题】17 如何把一个逗号分隔的字符串转换为数组? 关于String类中split方法的使用,超级详细!!!
    【Java面试题】16 静态代码块,main方法,构造代码块,构造方法
  • 原文地址:https://www.cnblogs.com/qingkongwuyun/p/8176535.html
Copyright © 2020-2023  润新知