今天咱們來作一個購物車的程序聯繫,首先要理清思路html
那麼以上就是這個程序的思路,因爲我也是第一次寫這個程序,因此若是思路上有什麼錯誤的地方,還請你們諒解,在最後我會放上源碼供你們參考,那麼如今就開始一塊兒寫代碼叭!!python
1 product_list = [ 2 ('iphone',5000), 3 ('coffee',31), 4 ('bicyle',888), 5 ('iwatch',2666), 6 ('Mac Pro',12000), 7 ('book',88) 8 ]
1 shopping_list = []#空列表,存放購買的商品
1 salary = input("請輸入你的工資:") 2 if salary.isdigit():# isdigit() 方法檢測字符串是否只由數字組成,是則返回True,不然返回False 3 salary = int(salary)
這裏用到了isdigit()方法,在這裏稍做解釋:git
描述app
Python isdigit() 方法檢測字符串是否只由數字組成。框架
語法iphone
isdigit()方法語法:ide
str.isdigit()
參數函數
無學習
返回值網站
若是字符串只包含數字則返回 True 不然返回 False。
實例
如下實例展現了isdigit()方法的實例:
1 #!/usr/bin/python 2 3 str = "123456"; # Only digit in this string 4 print str.isdigit(); 5 6 str = "this is string example....wow!!!"; 7 print str.isdigit();
輸出結果爲:
True
False
也就是說,若是你的字符串輸入的是數字,那麼返回的是True,正如我寫的代碼,用if來判斷,若是個人rmb是數字,那麼成立,能夠繼續循環,這裏你們應該都能理解,固然,若是不是,代碼爲:
1 else: 2 print("輸入錯誤")
固然,我總體的代碼是一個大的框架,先要判斷我輸入的rmb是否爲數字,若是是,那麼將其轉爲int類型,若是不是則輸出:「輸入錯誤」而後再將其餘代碼寫入個人這個大的框架中,寫程序要有一個大的框架,在腦子裏先定了型,這樣寫起來比較調理
這個循環用到了 while True: 這樣我就能夠無限的去購買我心儀的物品,在其中添加一些其餘的代碼來豐富程序
先放一下其中的代碼:
1 while True: 2 for index,i in enumerate(product_list):#index做爲下標索引 3 print(index,i) 4 #enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。 5 user_choice = input("請輸入你要購買的商品:") 6 if user_choice.isdigit(): 7 user_choice = int(user_choice) 8 if user_choice < len(product_list) and user_choice >= 0: 9 product_choice = product_list[user_choice] 10 if product_choice[1] < salary:#買得起 11 shopping_list.append(product_choice)#買得起,就放入購物車 12 salary -= product_choice[1] 13 print("Add %s into your shopping_list,your balance is \033[31;1m%s\033[0m"%(product_choice,salary)) 14 else: 15 print("\033[41;1m你的餘額只剩%s啦,還買個叼啊!\033[0m"%salary) 16 print("---------shopping list-----------") 17 for s_index, s in enumerate(shopping_list): 18 print(s_index, s) 19 print("---------shopping list-----------") 20 print("你的餘額爲:\033[31;1m%s\033[0m" % salary) 21 else: 22 print("沒有這個商品") 23 elif user_choice == "q": 24 print("---------shopping list-----------") 25 for s_index,s in enumerate(shopping_list): 26 print(s_index,s) 27 print("---------shopping list-----------") 28 print("你的餘額爲:\033[31;1m%s\033[0m"%salary) 29 exit() 30 else: 31 print("輸入錯誤")
1 for index,i in enumerate(product_list):#index做爲下標索引 2 print(index,i)
這裏用到了enumerate方法,在這裏稍做解釋:
描述
enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。
for 循環使用 enumerate
就是將列表中的值前方加上了數據下標,上面的代碼輸出結果爲:
0 ('iphone', 5000) 1 ('coffee', 31) 2 ('bicyle', 888) 3 ('iwatch', 2666) 4 ('Mac Pro', 12000) 5 ('book', 88)
針對程序中所用到的一些對於像我同樣的初學者來講,能夠參考 http://www.runoob.com/python/python-tutorial.html 這個網站裏的一些知識點來進行學習
1 user_choice = input("請輸入你要購買的商品:") 2 if user_choice.isdigit(): 3 user_choice = int(user_choice)
這三行很好理解,與輸入rmb那塊的代碼段相似,第二第三行一樣是將判斷是不是數字,若是是,轉成int型,不然 else: print("沒有這個商品") ,這個很好理解,運用循環的時候,有 if 就有else,這是一個
固有的流程,咱們寫程序時,頭腦中要有思路,善始善終
1 if user_choice < len(product_list) and user_choice >= 0: 2 product_choice = product_list[user_choice] 3 if product_choice[1] < salary:#買得起 4 shopping_list.append(product_choice)#買得起,就放入購物車 5 salary -= product_choice[1] 6 print("Add %s into your shopping_list,your balance is \033[31;1m%s\033[0m"%(product_choice,salary)) 7 else: 8 print("\033[41;1m你的餘額只剩%s啦,還買個叼啊!\033[0m"%salary) 9 else: 10 print("沒有這個商品")
這段代碼比較長,但也相對簡單,我來解釋一下
1 if user_choice < len(product_list) and user_choice >= 0: 2 product_choice = product_list[user_choice]
首先是要判斷,用戶所選擇的數字,是否小於商品的編號,而且大於等於0,在前面我也將每一個商品所對應的索引值打印了下來,利用這個來判斷咱們是否選擇了商品;接着定義了 product_choice 這個就是咱們選擇加入購物車的商品,它的值等於 product_list[user_choice] ,這段的意思是:用戶輸入要購買商品的編號,這個數字傳給 product_list[user_choice] ,就將商品選擇到了,舉個栗子,譬如用戶選擇 user_choice 爲 1 ,那麼咱們的 product_list[user_choice] 就變成了 product_list[1] ,這也就是咱們將第二個商品選擇到了,而後將這個值賦予給了 product_choice ,這就是這段代碼所表達的含義,可能表達的比較囉嗦,大神輕噴
1 else: 2 print("沒有這個商品")
那麼若是這個值在範圍之外,那麼就輸出 「沒有這個商品」
1 if product_choice[1] < salary:#買得起 2 shopping_list.append(product_choice)#買得起,就放入購物車 3 salary -= product_choice[1] 4 print("Add %s into your shopping_list,your balance is \033[31;1m%s\033[0m"%(product_choice,salary)) 5 else: 6 print("\033[41;1m你的餘額只剩%s啦,還買個叼啊!\033[0m"%salary)
而後就要判斷我是否買得起這件商品,首先要明白一個知識,個人商品列表中的 [(),()]第一個值是物品名稱第二個值是價格,對應到計算機中就是 0 , 1 這兩個索引 ,那麼就進入咱們的判斷:
1 if product_choice[1] < salary:#買得起 2 shopping_list.append(product_choice)#買得起,就放入購物車 3 salary -= product_choice[1]
product_choice[1] 這個表明的是我所選商品的第二個值,即價格,若是小於個人rmb,說明買得起,那麼用到了列表中的 append()方法:
描述
append() 方法用於在列表末尾添加新的對象。
語法
append()方法語法:
1 list.append(obj)
用這個方法,將咱們所選商品加入到咱們的購物車列表當中,此時,咱們的購物車列表就有了第一個商品(以前購物車列表定義的是空列表)
1 salary -= product_choice[1]
而後,rmb須要減去咱們購買的價格
1 print("Add %s into your shopping_list,your balance is \033[31;1m%s\033[0m"%(product_choice,salary))
而後輸出:咱們已經將商品加入到了購物車內,你的餘額爲xx
1 \033[31;1m%s\033[0m
這個是控制高亮顯示的代碼,須要死記硬背,沒有捷徑,多寫代碼天然就記住了
1 else: 2 print("\033[41;1m你的餘額只剩%s啦,還買個叼啊!\033[0m"%salary)
若是商品價格大於rmb那麼就輸出餘額不足
1 print("---------shopping list-----------") 2 for s_index, s in enumerate(shopping_list): 3 print(s_index, s) 4 print("---------shopping list-----------") 5 print("你的餘額爲:\033[31;1m%s\033[0m" % salary)
餘額不足以後呢,我須要輸出你購物車內的商品,而後將購物車商品輸出,而後再跳回繼續選擇商品;這個很好理解,我用 for 循環將購物車商品輸出 ,以上幾段代碼是控制購買商品的代碼,相對來講比較核心,須要仔細品味
1 elif user_choice == "q": 2 print("---------shopping list-----------") 3 for s_index,s in enumerate(shopping_list): 4 print(s_index,s) 5 print("---------shopping list-----------") 6 print("你的餘額爲:\033[31;1m%s\033[0m"%salary) 7 exit()
這個代碼段是創建在 用戶選擇 if user_choice.isdigit(): 這個基礎上的, 也就是 user_choice = input("請輸入你要購買的商品:") 我輸入了商品前的編號, 而後進入購買商品的循環, 若是咱們以爲夠了,不想再買了,選擇 「 q 」 而後就能夠打印購買商品,各回各家各找各媽了~!
#!/usr/bin/env.python # -*- coding: utf-8 -*- """ ------------------------------------------------- File Name: shopping Description : Author : lym date: 2018/2/24 ------------------------------------------------- Change Activity: 2018/2/24: ------------------------------------------------- """ __author__ = 'lym' #定義一個商品列表,裏面寫入商品的值和價格 product_list = [ ('iphone',5000), ('coffee',31), ('bicyle',888), ('iwatch',2666), ('Mac Pro',12000), ('book',88) ] shopping_list = []#空列表,存放購買的商品 salary = input("請輸入你的工資:") if salary.isdigit():# isdigit() 方法檢測字符串是否只由數字組成,是則返回True,不然返回False salary = int(salary) while True: for index,i in enumerate(product_list):#index做爲下標索引 print(index,i) #enumerate() 函數用於將一個可遍歷的數據對象(如列表、元組或字符串)組合爲一個索引序列,同時列出數據和數據下標,通常用在 for 循環當中。 user_choice = input("請輸入你要購買的商品:") if user_choice.isdigit(): user_choice = int(user_choice) if user_choice < len(product_list) and user_choice >= 0: product_choice = product_list[user_choice] if product_choice[1] < salary:#買得起 shopping_list.append(product_choice)#買得起,就放入購物車 salary -= product_choice[1] print("Add %s into your shopping_list,your balance is \033[31;1m%s\033[0m"%(product_choice,salary)) else: print("\033[41;1m你的餘額只剩%s啦,還買個叼啊!\033[0m"%salary) print("---------shopping list-----------") for s_index, s in enumerate(shopping_list): print(s_index, s) print("---------shopping list-----------") print("你的餘額爲:\033[31;1m%s\033[0m" % salary) else: print("沒有這個商品") elif user_choice == "q": print("---------shopping list-----------") for s_index,s in enumerate(shopping_list): print(s_index,s) print("---------shopping list-----------") print("你的餘額爲:\033[31;1m%s\033[0m"%salary) exit() else: print("輸入錯誤") else: print("輸入錯誤")