Python自學(xué)之路:購(gòu)物車程序

作業(yè)要求:
1塑猖、啟動(dòng)程序后谈跛,輸入用戶名密碼登錄
2、顯示用戶余額
3蜡励、打印商品列表
4、允許用戶根據(jù)編號(hào)購(gòu)買商品(臥槽凉倚,沒(méi)有看到嫂沉,下次更新)
5、用戶選擇商品后趟章,檢測(cè)余額是否足夠
6慎王、扣除宏侍,不夠就提醒余額不足
7、扣除谅河,夠就扣款,更新余額信息

Python Code

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2017/8/7 9:45
# @Author  : Shope
# @QQ       :215522879
# @My Blog : http://blog.sina.com.cn/u/2047118510
# @File    : shoping.py
# @Software: PyCharm

# user=list()
# fruit={}
# k=1
# v=1
# i=0
# flag=True
# count=0
# choice,list1=[],[]
# sum1,sum2,sum3=0,0,0
# m,l1=0,0
# with open('message.txt','r') as f:
#     # frist=f.readline()
#     # print(frist[1][0:])
#     for line in f:
#         # frist=f.readline()
#         # print(frist)
#         user.append(line.strip().split())
# print(user)

def fruit_def():
    k = 1
    v = 1
    global fruit
    fruit={}
    # 輸出所有商品信息:
    with open('shop.txt', 'r') as f:
        for line in f:
            k, v = line.strip().split()
            fruit[k] = v
    #print(fruit)
     print("商品信息:")
    for k1 in fruit:
        print("%s:%s¥" % (k1, fruit[k1]))

#print(fruit['BitterOrange'])
def choice_def():
    choice, list1 = [], []
    sum1, sum2, sum3 = 0, 0, 0
    m, l1 = 0, 0
    # 購(gòu)買選擇
    while True:
        goods = raw_input("請(qǐng)輸入選擇商品(N/n退出):")
        if goods == 'n' or goods == 'N':
            # print("歡迎下次使用!")
            break
        else:
            for k1 in fruit:
                if goods == k1:
                    break
            else:
                print("商品不存在锨天!請(qǐng)重新選擇")
                continue
        amount = input("請(qǐng)輸入購(gòu)買商品數(shù)量:")
        # 判斷購(gòu)物車是否為空剃毒,為空的話將購(gòu)買商品加入購(gòu)物車
        if len(choice) == 0:
            list1 = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
        else:
            # 檢測(cè)如果商品存在,輸入的參數(shù)替換之前的參數(shù)
            for m in range(len(choice)):
                print(choice[m][0])
                if goods == choice[m][0]:
                    #print(222)#調(diào)試使用赘阀,看是否循環(huán)到這里
                    #print m
                    choice[m][0:] = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
                    # 否則的就將新的商品錄入list1列表
                else:
                    list1 = [goods, int(fruit[goods]), amount, amount * int(fruit[goods])]
        # 判斷商品是否存在,存在就跳過(guò)幅慌,不存在就添加到購(gòu)物車
        for m1 in range(len(choice)):
            if goods == choice[m1][0]:
                break
        else:
            choice.append(list1)
        print("已選商品信息:%s轰豆,價(jià)格:%s,數(shù)量:%s酸休,總價(jià):%s" % (goods, int(fruit[goods]), amount, amount * int(fruit[goods])))
    print("你已選擇%s種商品" % len(choice))

    # 結(jié)算
    if len(choice) > 0:
        print("[商品,單價(jià)斑司,數(shù)量,總價(jià)]")
        for l in choice:
            print(l)
            sum1 = sum1 + l[2]
            sum2 = sum2 + l[2] * l[1]
        print("總量:%s,總價(jià):%s" % (sum1, sum2))
        sum3 = int(bal) - sum2
       # print(sum3)
        exit1 = raw_input("輸入Y\y確認(rèn)交易互站,輸入其他取消交易:")
        if exit1 == 'y' or exit1 == 'Y':
            if sum3 > 0:
                print("你要有可用余額%s" % sum3)
                # 更新用戶余額信息
                with open("message.txt", "r+") as f:
                    line1 = f.readlines()
                # 將原來(lái)的文件讀取出來(lái)僵缺,寫(xiě)入line1里面
                with open("message.txt", "w+") as f:
                    # 將line1里面的每一行分別賦值給line,for循環(huán)
                    for line in line1:
                        if line.find(user) >= 0:
                            # 如果循環(huán)到當(dāng)前用戶谤饭,執(zhí)行余額替換懊纳,更改余額信息
                            s = line.replace(str(bal), str(sum3))
                            f.writelines(s)
                            continue
                            # continue跳出循環(huán)亡容,繼續(xù)將其余的line寫(xiě)入message.txt文件
                        f.writelines(line)

            else:
                print("金額不足!C俊!=拍摇M┐拧!")

    else:
        print("歡迎下次使用我擂!")

#login用戶登錄:
def main():
    global user
    user = list()
    i = 0
    flag = True
    global bal
    bal=0
    with open('message.txt', 'r') as f:
        while flag == True and i < 3:
            name = raw_input("請(qǐng)輸入用戶:")
            psd = raw_input("請(qǐng)輸入密碼:")
            for line in f:
                user, passwd, bal = line.strip().split()
                #bal1=int(bal)
                if name == user and psd == passwd:
                    print("歡迎使用某某某超市系統(tǒng)!看峻!")
                    print("%s賬戶余額%s¥\n" % (user, bal))
                    flag = False
                    fruit_def()
                    choice_def()
                    break
            if flag == True:
                i += 1
                print("重新輸入用戶衙吩!")
            else:
                break
        if i < 1:
            pass
        else:
            print("失敗次數(shù)過(guò)多,請(qǐng)下次再來(lái)坤塞!")

if __name__ == '__main__':
    main()

message.txt文件用來(lái)記錄用戶信息

用戶、密碼尺锚、余額

shope 123456 287
alex  654321 6451
eric  111111 10571
S 1 9907

執(zhí)行情況:

C:\Python27\python.exe F:/python/oldboy12/day2/shoping_homewk.py
請(qǐng)輸入用戶:shope
請(qǐng)輸入密碼:123456
歡迎使用某某某超市系統(tǒng)!伏嗜!
shope賬戶余額827¥

 商品信息:
BitterOrange:22¥
Gooseberry:6¥
Cranberry:33¥
Avocado:7¥
Walnut:15¥
Papaya(Pawpaw):37¥
Melon:19¥
Loquat:41¥
Tangor:13¥
Sapodilla:43¥
Orange:5¥
Lemon:38¥
Pear:24¥
Blueberry:23¥
Chestnut:27¥
Cumquat:21¥
Honey-dew:14¥
Sugarcane:11¥
FlatPeach:40¥
Rambutan:17¥
CustardApple:8¥
LotusNut:28¥
Peanut:18¥
Olive:12¥
Raspberry:10¥
A:5¥
C:7¥
B:6¥
E:9¥
D:8¥
Foxnut:20¥
Plum:25¥
Water-chestnut:32¥
Strawberry:4¥
Mango:34¥
Blackberry:16¥
Pineapple:3¥
Betelnut:2¥
Apple:1¥
WildPeach:35¥
Bilberry:39¥
WaterCaltrop:29¥
Sorosis:44¥
KiwiFruit:36¥
Grape:42¥
Lichee:26¥
Guava:9¥
Durian:30¥
Longan:31¥
請(qǐng)輸入選擇商品(N/n退出):A
請(qǐng)輸入購(gòu)買商品數(shù)量:100
已選商品信息:A伐厌,價(jià)格:5,數(shù)量:100挣轨,總價(jià):500
請(qǐng)輸入選擇商品(N/n退出):B
請(qǐng)輸入購(gòu)買商品數(shù)量:20
已選商品信息:B,價(jià)格:6荡澎,數(shù)量:20,總價(jià):120
請(qǐng)輸入選擇商品(N/n退出):C
請(qǐng)輸入購(gòu)買商品數(shù)量:30
已選商品信息:C摩幔,價(jià)格:7,數(shù)量:30或衡,總價(jià):210
請(qǐng)輸入選擇商品(N/n退出):D
請(qǐng)輸入購(gòu)買商品數(shù)量:20
已選商品信息:D,價(jià)格:8斯辰,數(shù)量:20坡疼,總價(jià):160
請(qǐng)輸入選擇商品(N/n退出):A
請(qǐng)輸入購(gòu)買商品數(shù)量:10
已選商品信息:A彬呻,價(jià)格:5回梧,數(shù)量:10祖搓,總價(jià):50
請(qǐng)輸入選擇商品(N/n退出):N
你已選擇4種商品
[商品,單價(jià)拯欧,數(shù)量,總價(jià)]
['A', 5, 10, 50]
['B', 6, 20, 120]
['C', 7, 30, 210]
['D', 8, 20, 160]
總量:80,總價(jià):540
287
輸入Y\y確認(rèn)交易藏姐,輸入其他取消交易:Y
你要有可用余額287
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末该贾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子杨蛋,更是在濱河造成了極大的恐慌,老刑警劉巖曙寡,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寇荧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡揩抡,警方通過(guò)查閱死者的電腦和手機(jī)镀琉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)添祸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人刃泌,你說(shuō)我怎么就攤上這事⊙窍溃” “怎么了俗扇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)铜幽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)狮杨,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任橄教,我火速辦了婚禮喘漏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翩迈。我一直安慰自己,他們只是感情好负饲,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布绽族。 她就那樣靜靜地躺著姨涡,像睡著了一般吧慢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匈仗,一...
    開(kāi)封第一講書(shū)人閱讀 52,793評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音悠轩,去河邊找鬼。 笑死火架,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的纺弊。 我是一名探鬼主播,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼淆游,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隔盛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起吮炕,我...
    開(kāi)封第一講書(shū)人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤来屠,失蹤者是張志新(化名)和其女友劉穎虑椎,沒(méi)想到半個(gè)月后俱笛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體传趾,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年磕仅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了簸呈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榕订。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蜕便,死狀恐怖劫恒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丛楚,我是刑警寧澤,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布趣些,位于F島的核電站贰您,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锦亦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一坎穿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧玲昧,春花似錦篮绿、人聲如沸孵延。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)犬钢。三九已至,卻和暖如春玷犹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歹颓。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工油湖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乏德。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像寂呛,于是被迫代替她去往敵國(guó)和親怎诫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贷痪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 需求 額度 15000或自定義 實(shí)現(xiàn)購(gòu)物商城,買東西加入 購(gòu)物車肉津,調(diào)用信用卡接口結(jié)賬 可以提現(xiàn),手續(xù)費(fèi)5% 支持多...
    houyizhong閱讀 2,044評(píng)論 3 2
  • 《非銀行支付機(jī)構(gòu)網(wǎng)絡(luò)支付業(yè)務(wù)管理辦法》條款釋義 - 中國(guó)支付網(wǎng) - 中國(guó)支付行業(yè)第一門(mén)戶網(wǎng)站2016年7月1日...
    菜菜苔閱讀 7,589評(píng)論 1 44
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口閱讀 15,701評(píng)論 0 16
  • 內(nèi)心和獨(dú)處,綻放就好距糖;走出去,就不孤單悍引,要陪伴,像收攏的花苞趣斤,含頜稱是,旁側(cè)的溫度浓领,奉之意義。
    M_152閱讀 173評(píng)論 0 0
  • 1. production環(huán)境中去除console信息 去除原因: 發(fā)布到生產(chǎn)環(huán)境可能會(huì)有console函數(shù)忘...
    莫莫莫I閱讀 234評(píng)論 0 0