购物车练习

Posted Tim_Gu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了购物车练习相关的知识,希望对你有一定的参考价值。

购物车: 用户启动程序后打印商品列表 允许用户选择购买商品 允许用户不断地购买各种商品 购买时检测 余额是否足够,如果足够,直接扣款 否则打印余额不足 允许用户主动退出程序,退出时打印已购商品列表

作业需求: 1.优化购物程序,购买时允许用户选择购买多少件 2.允许多用户登陆,下一次登录后,继续按上次的余额继续购买(可以充值) 3.允许多户查看之间的购买记录(记录要显示商品购买时间) 4.商品列表分级展示,比如 第一层菜单: 1.家电类 2.衣服 3.手机类 4.车类

随便选择一个,比如车类,进入第2层 1.BMW X3 300000 2.AUDI Q5 350000 3.pasate 333335 4 tesla model_3 430000 5.tesla model_s 8888888

5.显示已购买商品时,如果有重复的商品,不打印多行,而是在一行展示

id  p_name        num         total_price

1.  TeslaModelS    2        35000000

2.  coffee              4     10000

 

 

# Author:Tim Gu

import json

#====================================================用户登录模块==============================================================
users = json.load(open(\'user.txt\',\'r\')) #从文件读取用户信息(用户名,密码,账户余额)

counter = 0
while counter < 3:
    username = input(\'username:\')  # 输入用户名
    password = input(\'password:\') #输入密码
    if username in users.keys() and password == users[username][0]: #判断用户名和密码是否匹配
        print("You have login!")
        break
    else:
        print("Invaild username or password!please try again!")
        counter += 1
    if counter == 3:
        print(\'Try too many times!Bye!\')
        exit()
welcome_msg = \'Welcome to Tim Shopping mall\'.center(50, \'-\')
print(welcome_msg)
print("Your balance is %d"%users[username][1])
#============================================================================================================
#============================================用户充值模块========================================================
flag = 0
while flag < 3:
    ifrecharge = input("Do you want to recharge your salary? \'y\' or \'n\' or \'q\'")
    if ifrecharge == \'n\':
        break
    elif ifrecharge == \'y\':
        for i in range(3):
            add = input("How much do you to fill?")
            if add.isdigit() and int(add) > 0:
                users[username][1] += int(add)
                json.dump(users, open(\'user.txt\', \'w\'))  # 充值成功的更新文件内的余额
                break
            else:
                if i < 2:
                    print("Your input is wrong,Please try again!")
                elif i == 2:
                    print("You input wrong!Bye!")
                    exit()
                continue
        flag = 3
        print("Your current balance is %d!"%users[username][1])
    elif ifrecharge == \'q\':
        print("ByeBye!")
        json.dump(users, open(\'user.txt\', \'w\'))
        exit()
    else:
        flag += 1
        if flag < 3:
            print("Your input is wrong,Please try again!")
        else:
            print("You try too many time,Bye!")
            exit()

#======================================================================================================================

#=============================================打印商品列表=============================================
exit_flag = False
product_list = [
    (\'Iphone\',5888),
    (\'Mac Air\',8000),
    (\'mac pro\',9000),
    (\'xiaomi 2\',120),
    (\'Coffer\',30),
    (\'Tesla\',820000),
    (\'Bike\',700),
    (\'Cloth\',200)
]
salary = users[username][1]  #定义变量余额
shop_car = []

while exit_flag != True:
    print(\'product list\'.center(50,\'-\'))
    for item in enumerate(product_list):#枚举元组
        index = item[0]
        p_name = item[1][0]
        p_price = item[1][1]
        print(index,p_name,p_price)
#===============================================================================================================

    user_choice = input(\'[q=quit,c=check]What do you watn to buy?:\')
    if user_choice.isdigit():#肯定是选择商品
#------------------------------------------选择商品数量---------------------------------------------------------------
        count2 = 0
        while count2 < 3:
            buy_sum = input("How many do you want to buy?")
            if buy_sum.isdigit() and int(buy_sum) > 0:
                buy_sum = int(buy_sum)
                break
            else:
                count2 += 1
                if count2 == 3:
                    print("You try too many times,Bye!")
                    exit()
                else:
                    print("Please input a number of the goods!")
 #---------------------------------------------------------------------------------------------------------------------

        user_choice = int(user_choice)
        if user_choice < len(product_list):

            p_item = product_list[user_choice]
            if p_item[1] * buy_sum <= salary: #资金够买
                shop_car.append(product_list[user_choice])
                salary -= (p_item[1] * buy_sum)
                users[username][1] = salary
                print(\'Added \\033[31;1m[%s]* %d\\033[0m into shop car,you current balance is \\033[31;1m[%d]\\033[0m\'%(
                    p_item[0],buy_sum,salary))
                json.dump(users, open(\'user.txt\', \'w\'))
            else:
                print("Your balance is [%s],cannot afford this..."%salary)
    elif user_choice == \'q\' or user_choice == \'quit\':
        print("purchased products as below".center(40,\'*\'))
        for item in shop_car:
            print(item)
        print("END".center(40,\'*\'))
        print("Your balance is [%s] last"%salary)
        exit_flag = True
    elif user_choice == \'c\' or user_choice == \'check\':
        print("purchased products as below".center(40, \'*\'))
        print("-序号---商品----数量----总价-------")
        for k, v in enumerate(shop_car):
            print("%d     %s     %d     %d"%(k,v[0],buy_sum,v[1]*buy_sum))
        print("END".center(40, \'*\'))
        print("Your balance is \\033[41;1m[%s] last\\033[0m" % salary)

 

以上是关于购物车练习的主要内容,如果未能解决你的问题,请参考以下文章

vue.js实战——购物车练习(包含全选功能)

angularjs购物车练习

列表练习题 简单购物车

购物车练习

Python 练习题_简易购物车

Python初学时购物车程序练习实例