1. 程式人生 > >三級菜單、購物車程序(自寫,待優化)

三級菜單、購物車程序(自寫,待優化)

pan 余額 設立 ike dig 查詢 lag pass 菜單

一、三級菜單程序:

要求:

1. 可依次進入各子菜單

2.可從任意一層往回退到上一層

3. 可從任意一層退出程序

各級菜單詳情見代碼:

menu = {
    北京:{
        海澱:{
            五道口:{
                soho:{},
                網易:{},
                google:{}
            },
            中關村:{
                愛奇藝:{},
                汽車之家:{},
                
youku:{}, }, 上地:{ 百度:{}, }, }, 昌平:{ 沙河:{ 老男孩:{}, 北航:{}, }, 天通苑:{}, 回龍觀:{}, }, 朝陽:{}, 東城:{}, }, 上海
:{ 閔行:{ "人民廣場":{ 炸雞店:{} } }, 閘北:{ 火車戰:{ 攜程:{} } }, 浦東:{}, }, 山東:{}, }
exit_flag
= False #標識符 while not exit_flag: #循環,能夠讓用戶持續選擇省/直轄市 print(北京,上海,山東) province_input
= input("請輸入您要查詢的省份/直轄市:") if province_input in menu: #在選擇省/直轄市的時候輸入了正確的省名 if menu[province_input] != {}: #這個省下面有市/區 while not exit_flag: #循環, 能夠讓用戶從鎮返回到區進行選擇 for i in menu[province_input]: print(i) #把直轄市下面的區都打印出來供用戶選擇 district_input = input(請輸入您要查的區:) if district_input in menu[province_input]: #選擇區的時候輸入了正確的區名 if menu[province_input][district_input] != {}: #這個區有鎮 for i in menu[province_input][district_input]: print(i) #打印區裏面的鎮供用戶選擇 town_input = input(請輸入您要查詢的鎮:) if town_input in menu[province_input][district_input]: #選擇鎮的時候輸入了正確的鎮名 if menu[province_input][district_input][town_input] != {}: #這個鎮有公司 print(該地區的公司有:) for i in menu[province_input][district_input][town_input]: print(i) #打印該鎮的公司名 break #返回省/直轄市那一層讓用戶繼續輸入 else: #鎮下面沒有公司 print(該鎮沒有大公司) break #返回省/直轄市那一層讓用戶繼續輸入 elif town_input == b: continue #在選擇鎮名的時候輸入了“b”,返回上一層選擇區 elif town_input == q: exit_flag = True #選擇鎮的時候輸“q”退出 else: #區下面沒有鎮 print(該區沒有大公司) break #返回省/直轄市那一層讓用戶繼續輸入 elif district_input == b: break #選擇區的時候輸入了“b”,返回上一層的選擇省/直轄市 elif district_input == q: exit_flag = True #選擇區的時候輸“q”退出 else: print(該省沒有大公司) #省/直轄市下面沒有區 elif province_input ==b: continue # 選擇省/直轄市的時候輸“b”返回上一層 elif province_input == q: exit_flag = True #選擇省/直轄市的時候輸“q”退出

二、購物車程序:

要求:

1. 啟動程序後,輸入用戶名密碼後,讓用戶輸入工資,然後打印商品列表

2. 允許用戶根據商品編號購買商品

3. 用戶選擇商品後,檢測余額是否足夠,夠就直接扣款,不夠就提醒

4. 可隨時退出,退出時,打印已購買商品和余額

# 系統儲存的用戶名密碼信息:
user_info = { Mike:abc123, Alice:456 ,Neo:789}

goods = [{name: 電腦, price: 1999}, {name: 鼠標, price: 10}, {name: 遊艇, price: 20},
         {name: 美女, price: 998}]

exit_flag = False   #設立標識符
while not exit_flag:  # 循環,用戶名密碼錯誤之後能夠讓用戶再次輸入
 
    name_input = input(請輸入用戶名:)
    password_input = input(請輸入密碼:)

    ‘‘‘
    判斷用戶名、密碼是否正確
    用戶名、密碼正確則登錄
    ‘‘‘
    if password_input == user_info.get(name_input):
        print(登錄成功!)

        # 登錄成功後讓用戶輸入工資:
        salary_input = int(input(請輸入您的工資:))

        # 輸入工資後打印商品列表
        print(---------商品列表---------)
        for k, i in enumerate(goods):
            print(%s.  %s  price:%s % (k, i[name], i[price]))

        # 定義一個購物車為空列表
        cart = []

        ‘‘‘
       用戶輸入有2種情況:
       1.用戶輸入數字:如果輸入的數字是商品編碼,則把相應的商品添加到購物車; 如果輸入的數字不是商品編碼,則提示“商品編碼錯誤”信息;
       2.輸入字母“q”則退出。
        ‘‘‘

        while not exit_flag:  # 循環,讓用戶可以持續添加商品編碼
            product_choice = input(請輸入您要購買的商品編號:)

            # 第1中情況:用戶輸入的是數字
            if product_choice.isdigit():
                choice = int(product_choice)

                # 輸入數字在商品編碼範圍之內
                if choice >= 0 and choice < len(goods):

                    ‘‘‘
                  輸入正確的商品編碼後,去判斷工資余額是否足夠買這個商品,
                  余額足夠就把所選的商品添加到購物車cart列表中,並從余額中扣除相應的價格,打印“商品已添加到購物車”和所剩余額信息。 
                  ‘‘‘

                    if salary_input >= goods[choice][price]:
                        cart.append(goods[choice])
                        print(商品:%s 已被添加到購物車 % (goods[choice][name]))
                        salary_input -= goods[choice][price]

                    # 余額不足以購買所選購的商品
                    else:
                        print(余額不足!)

                # 輸入數字不在商品編碼之內,打印“商品編碼錯誤”信息
                else:
                    print(商品不存在 )

            # 用戶輸入的是字母“q”
            elif product_choice == q:
                exit_flag = True
                if len(cart) > 0:  # 購物車不為空時打印商品清單
                    print(---------您已購買的商品清單---------)
                    # 循環打印購物車列表cart中的信息
                    for index, i in enumerate(cart):
                        print(%s.  %s  price:%s % (index, i[name], i[price]))  
                print(賬戶余額, salary_input)  # 打印余額信息。    

    # 用戶名、密碼錯誤,打印“用戶名密碼錯誤”並重新輸入
    else:
        print(用戶名或密碼錯誤,請重新輸入)

三級菜單、購物車程序(自寫,待優化)