本文实例讲述了Python实现的购物车功能。分享给大家供大家参考,具体如下:
这里尝试用python实现简单的购物车程序。。。
基本要求:
用户输入工资,然后打印购物菜单
用户可以不断的购买商品,直到余额不够为止
退出时打印用户已购买的商品和剩余金额。。。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
#!/usr/env python #coding:utf-8 import re,math def get_customer_salary(): while True : salary = raw_input ( 'Please input your monthly salary(a positive integer):' ) if __is_valid_num(salary): return int (salary) else : print '[warn] Please input a valid number!' def __is_valid_num(num): p = re. compile (r '^\d+$' ) m = p.match(num) if m: return True else : return False def get_customer_selection(): while True : selection = raw_input ( 'Please enter the goods number you want to buy:' ) if __is_valid_num(selection): if __is_a_valid_selection( int (selection)): return int (selection) else : print '[warn] Please enter a valid selection number' else : print '[warn] Please enter a valid number!\n' def __is_a_valid_selection(selection): if 1 < = selection< = get_total_amount_of_products(): return True else : return False def get_products_list(): return { 'Flower' : 50 , 'Perfume' : 300 , 'Shoes' : 600 , 'Clothing' : 800 , 'Alcohol' : 300 , 'Makeup' : 800 , 'Bike' : 1500 , 'Car' : 200000 , 'Apartment' : 5000000 } def get_total_amount_of_products(): return len (get_products_list()) def mapping_type_code_for_products(): return [ 'Flower' , 'Perfume' , 'Shoes' , 'Clothing' , 'Alcohol' , 'Makeup' , 'Bike' , 'Car' , 'Apartment' ] def get_product_price(type_code): return get_products_list()[get_product_name(type_code)] def get_product_name(type_code): return mapping_type_code_for_products()[type_code - 1 ] def get_lowest_price_of_products(): price_list = [] for k,v in get_products_list().items(): price_list.append(v) return min (price_list) def get_highest_price_of_produces(): price_list = [] for k,v in get_products_list().items(): price_list.append(v) return max (price_list) def still_can_buy_something(left_money): if left_money<get_lowest_price_of_products(): return False else : return True def still_want_to_buy_something(): while True : answer = raw_input ( 'Do you still want to buy something?(y/n):' ) result = is_a_valid_answer(answer) if result = = 'yes' : return True if result = = 'no' : return False print '[warn] Please enter [yes/no] or [y/n]!\n' def is_a_valid_answer(answer): yes_pattern = re. compile (r '^[Yy][Ee][Ss]$|^[Yy]$' ) no_pattern = re. compile (r '^[Nn][Oo]$|^[Nn]$' ) if yes_pattern.match(answer): return 'yes' if no_pattern.match(answer): return 'no' return False def show_shopping_list(): counter = 1 for i in mapping_type_code_for_products(): print '''''(%d) %s: %s RMB''' % (counter,i + ' ' * ( 10 - len (i)), str (get_products_list()[i])) counter + = 1 def is_affordable(left_money,product_price): if left_money> = product_price: return True else : return False def time_needed_to_work_for_buying_products(salary,price): result = float (price) / salary return get_formatting_time( int (math.ceil(result))) def get_formatting_time(months): if months< 12 : return ( '%d months' % months) years = months / 12 months = months % 12 return ( '%d years,%d months' % (years,months)) #主程序从这里开始 if __name__ = = '__main__' : salary = get_customer_salary() #获取月工资 total_money = salary shopping_cart = [] #初始化购物车 while True : show_shopping_list() #打印购物列表 #判断剩余资金是否能够购买列表中的最低商品 if still_can_buy_something(total_money): selection = get_customer_selection() #获取用户需要购买的商品编号 product_price = get_product_price(selection) #获取商品的价格 product_name = get_product_name(selection) #获取商品的名称 if total_money> = product_price: total_money - = product_price #打印购买成功信息 print 'Congratulations!You bought a %s successfully!\n' % product_name shopping_cart.append(product_name) #将商品加入购物车 print 'You still have %d RMB left\n' % total_money #打印剩余资金 #判断是否还想购买其他商品 if not still_want_to_buy_something(): print 'Thank you for coming!' break else : #输出还需要工作多久才能购买 format_time = time_needed_to_work_for_buying_products(salary,product_price - total_money) print 'Sorry,you can not afford this product!\n' print "You have to work '%s' to get it!\n" % format_time #判断是否还想购买其他商品 if not still_want_to_buy_something(): break else : print 'Your balance is not enough and can not continue to buy anything.' break #打印购物车列表 print 'Now,your balance is %d,and\nYou have buy %s' % (total_money,shopping_cart) |
运行效果:
希望本文所述对大家Python程序设计有所帮助。
原文链接:http://blog.csdn.net/sxingming/article/details/52334488