老男孩python學習之作業一購物小程序


想學編程由來已久

始終沒有個結果,痛心不已

如今再次撿起來,望不負期望,不負歲月

......一萬字的廢話......

先介紹一下我的自學課程吧

“路飛學城”的《python開發21天必備》

屌絲一個嘛,所以找了免費的課程

課程雖然免費,做的出奇好,佩服,尤其是課間雞湯,屌的一筆

特別期望可以報個付費的玩玩,那一定樂趣無窮啊

決定學習python,也是因為它和人工智能沾上了,而且入門簡單

所以,不要怕

 

就這,感覺很簡單嘛,呵呵大

 

  1. 要用到列表的創建,循環,打印列表索引和,為列表添加指定元素
  2. Input()函數的使用,與用戶的交互,判斷輸入的內容是數字,字符串或者其他
  3. 變量的賦值和計算
  4. 操作符的使用,也可以使用格式化操作符
  5. 循環條件語句,while if  for break結束語句

是不是很簡單?

做一下吧!?要不再加一個需求,那樣才有趣

  • 用戶可以選擇將購物車里的商品按照已購買列表編碼刪除任意一個商品
  • 用戶可以一直刪除,用戶不想刪除了,可以選擇繼續購物,退出時,打印購物車商

品列表

賴皮,這分明是兩個要求嗎?

就這樣,我從晚上八點玩到凌晨兩點,沒搞定,呵呵噠,然后十點起床,十一點半,搞定!

   一共用了差不多半天,可能是中間睡了一覺,靈感就來了,大腦真神奇,你要給他時

間,他會給你答案,這中間就是不斷地嘗試,錯誤,尋找錯誤,在嘗試,錯誤,不斷地尋

找,不斷地修改。我想說的就是,在你到達成功的路上不要放棄,相信你自己,可以做到的。

 

  1. 變量的修改,刪除指定元素
  2. 多層循環嵌套(困難在這,難為死小白了,但是靈感來了,就覺得很簡單,特別好寫)

下面,來看看這個困難到底是什么吧?建議:如果你還沒有練習過,在讀完這句話之后,先去

嘗試自己解決,在十個小時后還不能解決。在來看下面的方案,這樣對你才是最大的幫助!

>>確

>>定

>>要

>>看

>>了

>>嗎

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>確

>>定

>>要

>>看

>>了

>>嗎

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>確

>>定

>>要

>>看

>>了

>>嗎

>>?

>>que

>>ding

>>yao

>>kan

>>le

>>ma

>>?

>>are

>>you

>>sure

>>?

>>

>>

>>

 

最終解決方案每一層while 循環設立一個flag,在需要結束的同層循環下去設定flag的反值

看了,是不是很簡單,能想出來,能實現還是很快樂的。不知道有沒有更好的方法,肯定有,但是實力有限了。

 

1.交互,輸入工資(有輸入)    
1.1.工資輸入正確
    2.查看商品列表
    2.1.交互,選擇商品列表編號(有輸入)
        3.添加商品到購物車
        3.1.不要了,退出購物(輸入Q退出)
            4.交互,選擇結賬退出/刪除商品(有輸入)
                5.結賬退出(輸入s退出)
                5.1刪除商品(輸入d)
                    6.交互,選擇刪除購物車商品(有輸入)
                        7.1.刪除選中的商品
                        7.2.不刪了,退出(輸入Q)
                            8.交互,選擇是結賬還是繼續購買商品(有輸入)
                                9.進入選擇商品循環2.1
                                9.1.結賬退出(輸入s退出)
                    6.1.購物車空了,請先購買
                        7.進入選擇商品循環2.1
                    6.2.輸入錯誤,請重新輸入
            4.1輸入錯誤
    2.2.商品價格大於工資,重新輸入    
    2.3.輸入編碼不對,如:不在列表中
1.2.工資輸入錯誤,如:不是數字

下面分享出來,我在錯誤中的學習。有些特別幼稚,有些是新知識,希望可以幫助到你

在錯誤中學習:

  1. 好多次錯將 == 當做 = 使用,浪費了很多時間;
  2. 標志位只有兩種形態,Ture Flase 。錯誤的將標志位flag=1.這樣其實等同於flag=TureFlaseTurebool類型,而數字1int類型,浪費了很多時間        
  3. 不知道為什么沒有按照自己的想法運行,最好能夠把相關代碼Debug一下,不要覺得很麻煩,其實這樣比你自己一遍遍運行,看代碼方便的多,可以省下很多眼力,體力和時間
  4. shift+Tab  取消縮進(百度到的)
  5. 循環應該是一個可以完成的閉環,剛開始創建了4個並列的循環,想當然的以為可以通過jump(跳躍)解決問題,然而並不能。

 

 

寫累了,上代碼

100都累的不行,很多重復的代碼,如果可以用定義函數,整個代碼就會簡介很多,寫好了,再發上來吧

 

 

goods_list = [['中性筆',5],['小米手機',1799],['NIKE鞋',488],['襯衫',277],['',277],['',399],['電腦',7999]]
choices_list = []                                                           #定義購物車
flag_m = True
flag = True
flag_2 = True
flag_3 = True
flag_4 = True

while flag_m == True:
    your_money = input("請輸入你的工資>>")
    if your_money.isdigit():
        your_money= int(your_money)

        while flag == True:
            flag_2 = True                 #重新確定標志位,開始購物循環
            flag_3 = True
            flag_4 = True
            print('------商品列表------')                                        #打印商品列表
            for index, i in enumerate(goods_list):
                print(index, i[0], '', i[1])
            print('-------  END -------')
            choice = input('請輸入您要購買的商品編號(退出輸入q)>>')
            if choice.isdigit():                                                   #判斷用戶輸入是不是數字
                if 0 <= int(choice) < len(goods_list):                             #判斷是數字,並且數字在列表范圍內
                    if your_money >= goods_list[int(choice)][1]:                   #判斷用戶工資的錢夠不夠買選擇的商品
                        choices_list.append(goods_list[int(choice)])               #加入購物車
                        your_money =your_money- goods_list[int(choice)][1]         #扣款
                        print('您的余額:',your_money)                             #顯示余額
                        print('------購物車------')
                        for index,i in enumerate(choices_list):
                            print(index, i[0], '', i[1])
                    else:                                                         #錢不夠,提示重新選擇
                        print('您的余額不足,請重新選擇!')
                else:                                                             #數字不對,提示重新輸入
                    print('您輸入的編號不在列表中,請重新輸入。')
            elif choice == 'q':                                                  #退出購物循環
                if len(choices_list) > 0:
                    print('您的余額:',your_money)
                    print('------購物車------')
                    for index, i in enumerate(choices_list):
                        print(index, i[0], '', i[1])
                    print('-------- END --------')
                    while flag_2 == True:                #進入結賬或者刪除商品循環
                        s = input('結賬(s)/去掉幾個(d)')
                        if s == 's':
                            print('感謝惠顧,歡迎下次再來!')
                            flag = False             #終止所有循環
                            flag_2 = False
                            flag_3 = False
                            flag_4 = False
                            flag_m = False
                        elif s == 'd':                  #進入刪除商品循環
                            while flag_3 == True:
                                if len(choices_list) > 0:
                                    print('您的余額:', your_money)  # 顯示余額
                                    print('------購物車------')
                                    for index, i in enumerate(choices_list):
                                        print(index, i[0], '', i[1])
                                    del_choice = input('請輸入您不想要的商品的編號(輸入q退出)>>')
                                    if del_choice.isdigit():
                                        del_choice = int(del_choice)
                                        if 0 <= del_choice < len(choices_list):
                                            your_money = your_money + choices_list[del_choice][1]
                                            del choices_list[del_choice]
                                        else:
                                            print('您輸入的編號不在列表中,請重新輸入。')
                                    elif del_choice == 'q':                              #退出刪除商品循環
                                        if len(choices_list) > 0:
                                            print('您的余額:', your_money)
                                            print('------購物車------')
                                            for index, i in enumerate(choices_list):
                                                print(index, i[0], '', i[1])
                                            print('-------- END --------')
                                            while flag_4 == True:                       #進入結賬或者繼續購買循環
                                                s_0 = input('結賬(s)/繼續購買(b)')
                                                if s_0 == 's':
                                                    print('感謝惠顧,歡迎下次再來!')
                                                    flag = False                  #終止所有循環
                                                    flag_2 = False
                                                    flag_3 = False
                                                    flag_4 = False
                                                    flag_m = False
                                                elif s_0 == 'b':                 #終止內循環,開始第一層購買循環
                                                    flag = True
                                                    flag_2 = False
                                                    flag_3 = False
                                                    flag_4 = False
                                                    # break
                                                else:
                                                    print('輸入錯誤!')
                                    else:
                                        print('請輸入正確的商品列表編號')
                                else:
                                    print('您的購物車已經空了,請添加商品!')
                                    flag_2 = False
                                    flag_3 = False
                                    break



                        else:
                            print('輸入錯誤')
                else:
                    print('您沒有購物')
                    print('您的余額:', your_money)
                    flag_m = False
                    flag = False
            else:                                                              #其他輸入提示
                print('請輸入正確的商品列表編號')
    else:
        print("輸入錯誤!")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM