Python購物車程序(無需任何模塊,邏輯判斷腦洞大開)

程序需求:
1. 啟動程序后,讓用戶輸入工資,然后打印商品列表
2. 允許用戶根據(jù)商品編號購買商品
3. 用戶選擇商品后,檢測余額是否夠,夠就直接扣款,不夠就提醒
4. 可隨時退出,退出時,打印已購買商品和余額

一、入門版

#!/usr/bin/env python
#Auther:Lewis
#Email:devopslewis@outlook.com
product_list = [
    ('Mac Book Pro',13888),
    ('Iphone7 PLUS',7000),
    ('Mac Book Air',6388),
    ('IWATCH',4000)
]
shopping_list = []
print("歡迎來到Python購物程序")
while True:
    salary = input("請輸入您的工資:")
    if salary.isdigit()>0:
        salary = int(salary)
        break
    else:
        print("工資必須是整數(shù)并且大于0")
        continue
while True:
    print('編號 產(chǎn)品名稱\t\t價格')
    for e,i in enumerate(product_list):
        print(e,'\t',i[0],'\t',i[1],'元')
    choose = input("請輸入您想要購買產(chǎn)品編號(按Q或者q退出):")
    if choose.strip().isdigit():
        choose = int(choose)

        if choose <= len(product_list) and choose >= 0:
            sp = product_list[choose]
            if sp[1] > salary:
                print("您的余額不足,請重新輸入工資,在虛擬世界獲得滿足。")
            else:
                shopping_list.append(product_list[choose])
                salary -= sp[1]
                print("您購買了",sp[0])
                print('您的余額還剩%d'% salary)
        else:
            print("沒有這個編號,請重新輸入")


    elif choose.strip() == 'Q' or 'q':
        a=1
        if shopping_list:
            for i in shopping_list:
                print(a,'.您購買了:商品名稱:',i[0],'商品價格:',i[1])
                a+=1
            print("您剩余工資為:%d" % salary)
            print('您已退出!')
            exit()
        else:
            print("您沒有購買任何東西!已經(jīng)退出購物車")
            exit()
    else:
        print("請輸入正確的選項")

二、進階版

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
'''
需求:
    1. 啟動程序后,讓用戶輸入工資,然后打印商品列表
    2. 允許用戶根據(jù)商品編號購買商品
    3. 用戶選擇商品后,檢測余額是否夠,夠就直接扣款,不夠就提醒 
    4. 可隨時退出,退出時,打印已購買商品和余額

'''


product = {'1' : ['物品A',826],
           '2' : ['物品B',658],
           '3' : ['物品C',456],
           '4' : ['物品D',210]}

#列出商品列表函數(shù)
def product_list():    
    print("\n商品列表:")
    print("編號     物品    價格")
    for k,v in sorted(product.items()):
        f = 0
        for i in v:
            if (not f):
                p_name = i
                f = 1
        print("%2s %8s %8s" % (k,p_name,i))

#選擇購買函數(shù)
def buy(salary):
    num = input("\n請輸入欲購買的產(chǎn)品編號:(按q退出)")
    flag = 0 #flag為1表示編號有效,為0表示編號無效
    while 1:
        if (not num.isdigit() and (num == 'Q' or num == 'q')):#判斷輸入的是商品編號還是退出符
            return num
        else:
            for k,v in product.items():#判斷輸入的編號是否在列表內
                if (k == num):
                    flag = 1
                    for x in v:
                        price = x #記錄下編號對應的價格
                    break
            if (not flag):
                num = input("編號輸入有誤,請重輸(按q退出):")
                flag = 0
            if (flag): #判斷余額是否充足               
                if (price > int(salary)):
                    num = input("您的余額不足!請重輸(按q退出):")
                    flag = 0
                else:
                    break
    return num

#添加購物車函數(shù)
def add(salary):
    buy_list = []
    buy_dict = {}
    while int(salary) > 0:
        num = buy(salary)
        if (not num.isdigit() and (num == 'Q' or num == 'q')):#判斷輸入的是商品編號還是退出符
            print("已成功退出!")
            print("\n您此次購買的產(chǎn)品列表為:")
            for k,v in buy_dict.items():
                print("%2s %8s" % (k, v)) #輸出購買清單
            print("\n您的余額為:%s" % salary) #輸出余額
            break
        else:
            buy_list.append(num) #往購買清單中添加商品
            n = 0
            for i in buy_list:
                f = 0
                for k,v in product.items():
                    if (i == k):
                        for x in v:
                            if (not f):
                                p_name = x
                                f = 1
                        n = n + 1
                        buy_dict.setdefault(n, p_name)                       
            salary = int(salary) - x
            print("\n您的余額為: %s" % salary)
    return buy_dict
        
#主函數(shù)開始
salary = input("請輸入您的工資:")
while 1:
    if ((not salary.isdigit()) or (int(salary) <= 0)):#判斷工資是否是數(shù)字并且大于0
        salary = input("輸入工資有誤,請重輸:")
    else:
        break
    
product_list()
add(salary)

<b>簡單的小程序,閑暇時的練習題

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 需求 用戶登陸,第一次登陸,要求輸入工資,商品信息從文件里讀取,購買商品,扣除余額,退出之后,下一次登陸仍然記住余...
    houyizhong閱讀 573評論 0 0
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口閱讀 16,131評論 0 16
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評論 25 709
  • 喝醉了酒我就想睡覺, 夢中的景象常常比晏席上熱鬧。 請客送禮其實就是做夢, 人情冷暖演繹著夢幻的奇妙。 握手言歡感...
    曹煥甫閱讀 368評論 2 1
  • 尹月這次語文考試考了81.5,她自己很不滿意。 我一看,有一道錯,是一道選擇題,一只大雁直往下掉的“直”,問是什么...
    堅果姐姐閱讀 575評論 10 2

友情鏈接更多精彩內容