zoukankan      html  css  js  c++  java
  • 简单购物车程序练习题

    内容要求:

    1. 启动程序后,让用户输入工资,然后打印商品列表
    2. 允许用户根据商品编号购买商品
    3. 用户现在商品后,检测余额是否够,够就直接扣款,不够就提醒
    4. 可随时退出,退出时,打印已购买商品和余额
    product_list = [
        ("苹果手机",5000),
        ("单车",300),
        ("手表",200),
        ("被子",100),
        ("杯子",150),
        ("笔记本电脑",6000)
    ]
    #购物车,用于将商品加入
    shop_list = []
    salary = input("请输入你的工资")
    if salary.isdigit():
        salary = int(salary) #判断输入是否是数字,将输入字符转换为数字类型
        #打印商品列表,使用enumerate方式更好,少了查询列表
        while True:
            for index,item in enumerate(product_list):
                print(index,item)
            '''for item in product_list:  #打印商品列表
                print(product_list.index(item),item)
            '''
            user_choice = input("请输入购买商品的编号>>>>")
            if user_choice.isdigit():
                user_choice = int(user_choice) #若输入字符为数字转换为数字
                if user_choice < len(product_list) and user_choice >=0:
                    #获取选择的产品信息
                    p_item = product_list[user_choice]
                    if salary > p_item[1]:
                        #计算剩余金额
                        salary -=p_item[1]
                        shop_list.append(p_item)
                        #33[31;1m    33[0m   红色字体
                        print("你增加了商品%s到购物车,剩余金额33[31;1m%s33[0m"%(p_item[0],salary))
                    else:
                        #33[41;1m   33[0m   红色背景
                        print("33[41;1m你的剩余金额为%s,不够买33[0m"% salary)
    
    
                    #print("你购买了%s,剩余%s"%(item[1],salary))
    
                else:
                    print("输入错误")
            elif user_choice == "q":
                print("--------购物清单--------")
                for index,item in enumerate(shop_list):
                    print(index,item)
                print("你的余额是:%s"% salary)
                exit()
            else:
                print("输入错误")
    
    else:
        print("输入错误!")
    

      优化后的代码:

    '''
    1.启动程序后,让用户输入工资,然后打印商品列表
    2.允许用户根据商品编号购买商品
    3.用户现在商品后,检测余额是否够,够就直接扣款,不够就提醒
    4.课随时退出,退出时,打印已购买商品和余额
    '''
    
    product_list = [
        ("苹果手机",5800),
        ("单车",300),
        ("手表",200),
        ("Python书籍",120),
        ("笔记本电脑",4600),
        ("显示器",1100),
    ]
    #购物车列表
    shop_list = []
    salary = input("输入你的工资")
    #判断输入是否数字,若是,将输入字符转换为数字格式
    if salary.isdigit():
        salary = int(salary)
        #利用循环,将商品列表打印出来
        while True:
            for index,item in enumerate(product_list):
                print(index,item)
            print("--------------------------------------")
            user_choice = input("输入你购买的商品编号:")
            #判断输入是否为数字编号,若是,将其转换为数字格式,若输入为q,则退出循环
            if user_choice.isdigit():
                user_choice = int(user_choice)
                #判断用户输入商品编号是否超过商品列表数量
                if user_choice < len(product_list) and user_choice >= 0:
                    #将购买的商品提取出来,加入到shop_list
                    p_item = product_list[user_choice]
                    if p_item[1]>salary:
                        #33[41;1m 33[0m   背景红色
                        print("33[41;1m你的钱不够,买毛线!33[0m")
                        print("--------------------------------------")
                    else:
                        shop_list.append(p_item)
                        #商品购买,减少对应价格
                        salary -=p_item[1]
                        #33[31;1m 33[0m  字体红色
                        print("你购买了%s,剩余价格33[31;1m%s33[0m"%(p_item[0],salary))
                        print("--------------------------------------")
                else:
                    print("输入编号没有对应产品!请重新选择")
            elif user_choice == 'q':
                #打印购物车以及余额
                print("---------shop_list-----------")
                for index,item in enumerate(shop_list):
                    print(index,item)
                print("你的余额是:%s"%salary)
                exit()
            else:
                print("输入错误")
    else:
        print("输入错误")
    

      



    
    
  • 相关阅读:
    LeetCode Path Sum II
    LeetCode Longest Palindromic Substring
    LeetCode Populating Next Right Pointers in Each Node II
    LeetCode Best Time to Buy and Sell Stock III
    LeetCode Binary Tree Maximum Path Sum
    LeetCode Find Peak Element
    LeetCode Maximum Product Subarray
    LeetCode Intersection of Two Linked Lists
    一天一个设计模式(1)——工厂模式
    PHP迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/cheng662540/p/7912637.html
Copyright © 2011-2022 走看看