关于购物车程序的Python实现

'''

需求:
1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表 2、允许用户根据商品编号购买商品 3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4、可随时退出,退出时,打印已购买商品和余额 5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
说明:运行此程序需要自己再在相同的目录里新建balance.txt与shopping_car.txt文件分别存放余额与所购物品

'''

#源代码

#登陆用户名及密码
username = 'whw'
password = '123'
#商品列表
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
{'name':'1080ti','price':2222},
{'name':'机械键盘','price':555},
{'name':'《西游记》','price':56},
{'name':'固态硬盘','price':666}
]
#若用户名密码不正确直接退出系统
print('-------------用户登陆----------------')
input_user = input('请输入用户名:')
input_pass = input('请输入密码:')
if input_user != username or input_pass != password:
    print('\033[31;1m很遗憾登陆失败\033[0m')
    exit()
#用户名及密码正确后进行接下来的操作
print('\033[32;1m登陆成功!\033[0m')
#在balance.txt 与 shopping_car.txt 中找之前的记录
file_balance = open('balance.txt','r')
file_balance_data = file_balance.read() #注意要把文件读取第一次的值赋给变量,后面不要再次进行read()操作了!
if file_balance_data != '': #balance文件中如果有记录说明之前购买过东西
    #print('原来的余额:',file_balance_data)
    wages = int(file_balance_data) #利用上次的余额赋给wages
    #上次购买的购物车的物品
    file_shopping_car = open('shopping_car.txt','r')
    shopping_car_old = file_shopping_car.read()
    print('\033[32;3m-----您的购物车共有以下商品-----\033[0m')
    print(shopping_car_old) #直接打印即可
    print('\033[32;3m您上次购买后的余额为:%d\033[0m' % wages)
    #若没之前的记录就输入工资新开始
else:
    wages = input('请输入工资:')#不建议直接int(),如果输入字符就会报错,需先用isdigit()方法判断下
    if wages.isdigit():#isdigit方法 判断是否输入的全是数字
         wages = int(wages)
    else:
        print('\033[32;3m抱歉您输入了错误的字符,程序退出!\033[0m')
        exit()
shopping_car = []
while 1:
    print('-----商品列表-----')
    for i,v in enumerate(goods):
        print(i,":",v)
    print('-----可进行的操作-----')
    print('一:输入相应的商品编号购买商品')
    print('二:输入Q/q以退出程序')
    choice = input('请输入要购买的商品编号或要进行的操作:')
    #===========购买=====================
    if choice.isdigit(): #isdigit()方法
        if 0 <= int(choice) < len(goods): #先确认在编号范围
            if goods[int(choice)].get('price') <= wages:#工资不得少于所选商品的价格
                wages -= goods[int(choice)].get('price')
                shopping_car.append(goods[int(choice)])
                print('\033[32;3m商品 %s 已添加进购物车!\033[0m' % goods[int(choice)])#将商品添加进购物车
                print('\033[31;3m您的余额为:%d\033[0m ' % wages)
            else:
                print('\033[31;3m对不起,您的余额不足以购买该商品\033[0m')
        else:
            print('\033[31;3m请输入正确的商品编号或操作编号\033[0m')

    #=========退出,打印已购买的商品并显示余额,并将余额与购物车物品写到文件里===========================
    elif choice =='q' or choice == 'Q':
        print('\033[32;3m-----您已购买以下商品-----\033[0m')
        for index,k in enumerate(shopping_car):
            print(index,':',k)
        print('\033[32;3m账户余额为:%d\033[0m'% wages)
        #余额存到balance.txt中,购物车存到shopping_car.txt中
        file1 = open('balance.txt', 'w')
        #file1.truncate()  # 因为'w'方式本身可以清空原来的内容,故不用清空原有的余额
        file1.write(str(wages))#将新的余额信息写进去
        file1.close()
        file2 = open('shopping_car.txt','a')
        file2.write(str(shopping_car))
        file2.close()
        break
    else:
        print('\033[31;3m请输入正确的操作编号!\033[0m')

 

转载于:https://www.cnblogs.com/paulwhw/p/8610643.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值