python3 购物车程序

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author:SKING
 4 
 5 """
 6 题目:购物车
 7 1.启动程序后,让用户输入工资,然后打印商品列表。
 8 2.允许用户根据商品编号购买商品。
 9 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒。
10 4.可随时退出,退出时,打印已购买商品和余额。
11 
12 """
13 
14 import sys, os, time, string
15 
16 def commodity_list():
17     """打印商品列表"""
18     with open('commodity_list.txt', 'r') as file_commodity_list: # 打开商品列表文件commodity_list.txt
19         for commodity_list in file_commodity_list:
20             # 处理商品列表,并分别将序号、商品名称、商品价格、数量赋值给变量(serial_num, commdity_name, commodity_price, commdity_num)
21             (serial_num, commdity_name, commodity_price, commdity_num) = commodity_list.strip().split('\t')
22             dict_commodity_list.update({serial_num: (commdity_name, commodity_price, commdity_num)})  # 将商品列表存在字典里
23             # 打印商品列表
24             print(f'{serial_num.ljust(5)}\t{commdity_name.ljust(20)}\t{commodity_price.ljust(8)}\t{commdity_num.ljust(5)}')
25         return dict_commodity_list
26 
27 
28 count = 0 #记录用户输入工资的次数
29 dict_commodity_list = {} #存放商品列表的字典
30 count_buy = 0 # 统计已买的商品数量
31 price_buy = 0 # 统计已买的商品总价
32 
33 serial_num_count = [] # 存放已购商品的序号,也就是字典dict_commodity_list的key
34 buy_num = 0 #结算的时候打印已购商品的序列号
35 
36 
37 while count<5:
38     count += 1
39     if count == 5: #如果用户输入次数超过5次,就提示休息5s
40         print('You have input too many times!')
41         print('Please wait 5s...')
42         for a in range(5,1,-1):
43             print(f'{a}s...')
44             time.sleep(1)
45         count = 0
46 
47     salary = input('Please enter your salary:') #提示让让用户输入工资
48     if salary.isdigit(): #判断输入是否是数字
49         commodity_list()
50         Salary_balance = salary  # 统计剩余的工资
51 
52     else:
53         print('\n\nEnter wrong!try again!')
54         continue
55 
56     while True:
57         #os.system('cls') # 清屏
58         print('Press "O" to settle accounts!')
59         commdity_serial_num = input('Enter the serial number("Q" to exit):')  # 提示让用户输入想要购买的商品序号
60 
61         if commdity_serial_num in dict_commodity_list.keys():  #判断输入是否是商品的列表序号
62             Salary_balance = 0
63             dict_commodity_list = commodity_list()
64             price_buy = price_buy + float(dict_commodity_list[commdity_serial_num][1]) # 已购商品价格总额
65             count_buy += 1 #统计已买商品数量
66             Salary_balance = int(salary) - price_buy #工资余额
67             serial_num_count.append(commdity_serial_num) #统计已购商品的序号,也就是字典dict_commodity_list的key
68             commodity_list()
69             print(f'Have buy commodities:{count_buy},\tSalary balance:{Salary_balance}\n\n')
70 
71         else:
72             if commdity_serial_num == 'O' or commdity_serial_num == 'o':
73                 #结算,显示已购商品、总价,剩余工资等信息
74                 #os.system('cls') # 清屏
75                 print('\nHave buy commdity list:')
76                 for b in serial_num_count:  #打印已购商品列表
77                     buy_num += 1
78                     print(f'\n{str(buy_num).ljust(5)}\t{dict_commodity_list[b][0].ljust(20)}\t{dict_commodity_list[b][1].ljust(8)}\t{dict_commodity_list[b][2].ljust(5)}\t')
79 
80                 print(f'\nBuy commdities:{count_buy}, total price:{price_buy}\n')
81                 print(f'Salary balance:{Salary_balance}')
82                 sys.exit(0)
83             elif commdity_serial_num == 'q' or commdity_serial_num == 'Q':
84                 sys.exit(0)
85             else:
86                 print('\nEnter wrong!try again!')
87                 continue

 

posted @ 2019-01-18 14:44  SKING_Python  阅读(347)  评论(0编辑  收藏  举报