淺談自學Python之路(購物車程序練習)

購物車程序練習

今天咱們來作一個購物車的程序聯繫,首先要理清思路html

  1. 購物車程序須要用到什麼知識點
  2. 須要用到哪些循環
  3. 程序編寫過程當中考慮值的類型,是int型仍是字符串
  4. 若是值爲字符串該怎麼轉成int型
  5. 用戶如何選擇到商品並把其加入購物車內(根據索引值)
  6. 明白購物車流程:先輸入本身的rmb—列出商品的名稱和價格(用列表實現)—輸入用戶選擇的商品(根據索引值)—判斷你的rmb是否足以支付商品的價格—若是是則加入購物車—若是不然提示餘額不足—你能夠無限制的購買商品(前提是錢足夠)—若是不想購買能夠輸入值結束循環—輸出購買的商品及餘額

那麼以上就是這個程序的思路,因爲我也是第一次寫這個程序,因此若是思路上有什麼錯誤的地方,還請你們諒解,在最後我會放上源碼供你們參考,那麼如今就開始一塊兒寫代碼叭!!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 = []#空列表,存放購買的商品
  • 而後是輸入你的rmb
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("輸入錯誤")
View Code

 

  • 在這個無限循環中首先要將商品列表展示在咱們面前
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("輸入錯誤")
View Code

 

 

歡迎你們多多交流

  • QQ:616581760
  • weibo:https://weibo.com/3010316791/profile?rightmod=1&wvr=6&mod=personinfo
  • zcool:http://www.zcool.com.cn/u/16265217
  • huke:https://huke88.com/teacher/17655.html
相關文章
相關標籤/搜索