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