本文实例讲述了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