博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python练习_module01-2-购物车
阅读量:4579 次
发布时间:2019-06-08

本文共 4041 字,大约阅读时间需要 13 分钟。

购物车练习

一、需求:

1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表

2、允许用户根据商品编号购买商品

3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒

4、可随时退出,退出时,打印已购买商品和余额

5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示

6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买

7、允许查询之前的消费记录

二、实现需求:

- 达成7项作业需求

- 自动去除用户输入前后的空格
- 简单修饰商品列表,购物车列表
- 用户输入 s 显示消费记录后,程序暂停。可输入任意键,按回车继续

 

三、代码

  1. 生成包含 账号信息 的pickle文件

 
1 import  pickle 2  3 acc = { 4     'Jailly': 5         {
'pwd':'123', 6 'salary':None, 7 'shopping cart':[]}, 8 'Lily': 9 {
'pwd':'abc',10 'salary':None,11 'shopping cart':[]}12 }13 14 with open('acc.pkl','wb') as f:15 pickle.dump(acc,f)
 

  2. 主程序

1 #! /usr/bin/env python3  2 # -*- encoding:utf-8 -*-  3 # Author:Jailly  4   5 import pickle,getpass  6   7 # 用户登陆  8 def login():  9     count = 0 10     while count < 3: 11         name_input = input('用户名:').strip() 12         pwd_input = getpass.getpass('密码:') 13  14         if name_input in acc: 15             if acc[name_input]['pwd'] == pwd_input: 16                 return name_input 17             else: 18                 print('\033[1;31m密码错误\033[0m') 19                 count += 1 20         else: 21             print('\033[1;31m您输入的用户名不存在,请重新输入\033[0m') 22     else: 23         print('错误次数太多,程序关闭...') 24         exit() 25  26  27 # 欢迎信息 & 判断是否第一次登陆 28 def welcome(name_input): 29     if acc[name_input]['salary']: 30         salary = acc[name_input]['salary'] 31         print('欢迎,%s'%name_input) 32         print('您的当前余额为\033[1;31m%d\033[0m,愿您购物愉快~' % salary) 33     else: 34         print('欢迎,%s' % name_input) 35         salary = input('请输入您的工资:').strip() 36  37         # 工资输入并判断输入是否正确 38         while 1: 39             if salary.isdigit() and int(salary) >= 0: 40                 salary = int(salary) 41  42                 break 43             else: 44                 salary = input('工资必须为正整数,请重新输入:') 45     return salary 46  47 # 消费记录 48 def show_recode(sc,salary): 49     print('-' * 51) 50     print('|', 'shopping cart'.center(47, ' '), '|') 51     print('-' * 51) 52     for i in sc: 53         print('|', i[0].center(22, ' '), '|', str(i[1]).center(22, ' '), '|') 54         print('-' * 51) 55     print('|',('您的余额为%d' % salary).center(42,' '),'|') 56     print('-' * 51) 57  58 # 选购商品 59 def shopping(name_input,salary): 60     sc = acc[name_input]['shopping cart'] 61  62     while 1: 63         print(' Product List '.center(50,'-')) 64         for k,v in enumerate(product_list): 65             print(('| %s. %s'%(k,v)).ljust(48,' '),'|') 66         print('-'*50) 67  68         choice = input('请输入您想要购买的商品编号:').strip() 69         if choice.isdigit(): 70             choice = int(choice) 71             if 0 < choice < len(product_list): 72                 p_item = product_list[choice] 73                 salary -= p_item[1] 74                 sc.append(p_item) 75                 print('您刚购买了\033[;31m%s\033[0m,当前账户余额为\033[1;31m%d\033[0m'%(str(p_item),salary)) 76             else: 77                 print('抱歉,没有找到您选择的商品') 78  79         elif choice == 's': 80             show_recode(sc,salary) 81             input('输入回车键继续...') 82  83         elif choice == 'q': 84             show_recode(sc,salary) 85  86             acc[name_input]['salary'] = salary 87             acc[name_input]['shopping cart'] = sc 88             with open('acc.pkl','wb') as f: 89                 pickle.dump(acc,f) 90  91             print('感谢您的支持,再见~') 92             exit() 93  94         else: 95             print('\033[1;31m请输入正确的商品编号\033[0m') 96  97 # 主程序 98 def main(): 99     name_input = login()100     salary = welcome(name_input)101     shopping(name_input,salary)102 103 if __name__ == '__main__':104     product_list = [105         ('IPhone', 5000),106         ('Mac Pro', 12000),107         ('xbox360', 2500),108         ('PlayStation3', 2000),109         ('bike', 1000),110         ('kindle', 150)111     ]112 113     with open('acc.pkl', 'rb') as f:114         acc = pickle.load(f)115 116     main()

 

 
 

转载于:https://www.cnblogs.com/jailly/p/6734397.html

你可能感兴趣的文章
php计算字符串长度:utf8编码,包含中文
查看>>
经济学的修练,应该从“估值”开始[程序员学经济三]
查看>>
字符流习题
查看>>
打印一个杨辉三角
查看>>
IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa
查看>>
二、使用NHibernate对数据库实现增、删、改、查操作
查看>>
临时禁用Resharper
查看>>
【线性代数公开课MIT Linear Algebra】 第二课 矩阵与高斯消元
查看>>
hdu4976 贪心+dp
查看>>
P1217 [USACO1.5]回文质数 Prime Palindromes 时空限制 1000ms / 128MB
查看>>
Git--命令
查看>>
JavaScript中的关联数组
查看>>
Razor Engine,实现代码生成器的又一件利器
查看>>
bitmap格式分析
查看>>
VC++中的延时函数
查看>>
几种设计良好结构以提高.NET应用性能的方法
查看>>
Directx11 教程(1) 基本的windows应用程序框架(1)
查看>>
Directx11教程(53) D3D11管线(8) GS的调度执行
查看>>
.NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程
查看>>
依赖注入[4]: 创建一个简易版的DI框架[上篇]
查看>>