Python實現(xiàn)的購物車功能示例
本文實例講述了Python實現(xiàn)的購物車功能。分享給大家供大家參考,具體如下:
這里嘗試用python實現(xiàn)簡單的購物車程序。。。
基本要求:
用戶輸入工資,然后打印購物菜單
用戶可以不斷的購買商品,直到余額不夠為止
退出時打印用戶已購買的商品和剩余金額。。。
代碼:
#!/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)
運行效果:

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python數(shù)學(xué)運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
jupyter安裝失敗的解決,問題出在rust環(huán)境和32位python
文章講述了如何解決在安裝Jupyter Notebook時遇到的問題,包括安裝Rust和選擇合適的Python版本(64位)來避免兼容性問題2025-02-02
python dict.get()和dict[''key'']的區(qū)別詳解
下面小編就為大家?guī)硪黄猵ython dict.get()和dict['key']的區(qū)別詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06
Python中enumerate()函數(shù)編寫更Pythonic的循環(huán)
本篇文章主要大家通過實例講述了Python中enumerate()函數(shù)編寫更Pythonic的循環(huán)的知識點,有興趣的朋友參考學(xué)習(xí)下。2018-03-03
pygame 精靈的行走及二段跳的實現(xiàn)方法(必看篇)
下面小編就為大家?guī)硪黄猵ygame 精靈的行走及二段跳的實現(xiàn)方法(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
使用Python與BigQuery進(jìn)行交互的代碼詳解
在大數(shù)據(jù)分析的領(lǐng)域中,Google BigQuery 是一個被廣泛使用的云端數(shù)據(jù)倉庫解決方案,它由 Google Cloud 提供,并且專為處理大規(guī)模數(shù)據(jù)集、進(jìn)行快速的數(shù)據(jù)分析和復(fù)雜的查詢而設(shè)計,本文給大家講解了如何使用Python與BigQuery進(jìn)行交互,需要的朋友可以參考下2025-04-04
基于python實現(xiàn)計算兩組數(shù)據(jù)P值
這篇文章主要介紹了基于python實現(xiàn)計算兩組數(shù)據(jù)P值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
Pandas數(shù)據(jù)操作分析基本常用的15個代碼片段
這篇文章主要介紹了Pandas數(shù)據(jù)操作分析基本常用的15個代碼片段,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Pycharm中安裝Pygal并使用Pygal模擬擲骰子(推薦)
這篇文章主要介紹了Pycharm中安裝Pygal并使用Pygal模擬擲骰子,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04

