python 列表 循環(huán) 實(shí)現(xiàn)簡(jiǎn)易的電子商城

電子商城功能

  • 用戶登錄注冊(cè)
  • 頁(yè)面之間的跳轉(zhuǎn)
  • 用戶購(gòu)買商品的輸入判斷
  • 數(shù)據(jù)的修改已更新
  • 休閑小游戲的整合

用戶登錄注冊(cè)

列表的初始化與賦值

users=[['admin','admin'],['tom','123456']]
g1=[1000,'可口可樂(lè)(罐裝)',2.5,100]
g2=[1001,'可口可樂(lè)(瓶裝)',3.0,100]
g3=[1002,'可口可樂(lè)(小瓶裝)',2.5,100]
g4=[1003,'可口可樂(lè)(大瓶裝)',6.0,100]
goods=[g1,g2,g3,g4]
score=10

用戶登錄

根據(jù)python逐行解釋的特性設(shè)計(jì)邏輯,從而跳出多個(gè)循環(huán)
遍歷用戶列表匹配用戶信息虽界,進(jìn)行身份認(rèn)證

        os.system('cls')
        while 1.1:
            name = input("請(qǐng)輸入您的用戶名:")
            password = input('請(qǐng)輸入您的密碼:')
            for username in users:
                if username[0] == name and username[1] == password:
                    input ("用戶登錄成功肖揣,按任意鍵進(jìn)入首頁(yè)")
                    time.sleep(1)
                    break
            else:
                input("用戶名或密碼錯(cuò)誤实昨!按任意鍵繼續(xù)全闷!")
                os.system('cls')
                continue
            break

用戶注冊(cè)

在循環(huán)中可以通過(guò)變量的控制吱涉,從而實(shí)現(xiàn)多個(gè)循環(huán)的跳出

#用戶注冊(cè)
        break_flag = False
        while break_flag == False:
            name = input('請(qǐng)輸入您的用戶名:')
            #判斷用戶名是否存在
            for username in users:
                if username[0] == name:
                    input("你的用戶名已存在狼犯,請(qǐng)重新輸入")
                    break
            #在for循環(huán)中添加else,使得在遍歷完成后等夠跳出兩層循環(huán)
            else:
                break_flag = True
        password = input('請(qǐng)輸入您的密碼:')
        #把注冊(cè)的用戶加入到用戶列表中
        register = [name, password]
        users.append(register)
        input("注冊(cè)成功窃植,按任意鍵返回帝蒿!")

超市頁(yè)面

首先進(jìn)行輸入判斷

str.isdigit() #判斷輸入是否為數(shù)字

取出列表中的索引與值,以便下面操作二維列表的時(shí)候使用巷怜,同時(shí)明確選擇的商品完整信息

i, rows in enumerate(goods)#輸出索引和值

之后進(jìn)行庫(kù)存判斷葛超,明確商品可以購(gòu)買

#判斷輸入的是否為整數(shù)
                if Input.isdigit():
                    #遍歷商品列表,得到商品信息
                    for i, rows in enumerate(goods):#輸出索引和值
                        back = False
                        #判斷輸入商品編號(hào)是否存在
                        if int(Input) == rows[0]:
                            Input = rows[0]
                            # 判斷商品是否還有庫(kù)存
                            if rows[3] > 0:
                                while 1:
                                    buy = input("請(qǐng)輸入你要購(gòu)買的數(shù)目:")
                                    if buy.isdecimal():  # 判斷輸入是否為整數(shù),判斷完成后在進(jìn)行int操作,防止出錯(cuò) PS:可以使用try except
                                        buy = int(buy)
                                        #判斷輸入合法
                                        if buy > rows[3]:
                                            input("購(gòu)買數(shù)目過(guò)大延塑,按任意鍵返回")
                                            continue
                                        else:
                                            break
                                    else:
                                        input('輸入有誤绣张,按任意鍵返回!')
                                        continue

付賬信息明確
運(yùn)用try...except... 進(jìn)行異常處理是實(shí)現(xiàn)金額輸入標(biāo)準(zhǔn)化

#輸入金額判斷
money = input('請(qǐng)輸入金額:')
try:  # 判斷輸入金額是否為數(shù)字页畦,可能存在零錢胖替,使用try 收集異常,做到判斷
    money = float(money)  # 轉(zhuǎn)換為float預(yù)防用戶輸入為浮點(diǎn)數(shù)
        if money > 0:
            break
        else:
            input('輸入有誤豫缨,按任意鍵返回')
            continue
except ValueError:#異常信息 傳入無(wú)效的參數(shù)
    print('輸入有誤独令,按任意鍵返回!')
    continue

商品購(gòu)買流程

#商品購(gòu)買
#判斷金額是否滿足條件
if money > rows[2] * buy:
    print('找您%.2f元錢' % (money - rows[2] * buy))
    print('感謝您的購(gòu)買好芭,歡迎下次再來(lái)燃箭!')
    # 修改庫(kù)存
    goods[i][3] = goods[i][3] - buy
    input('按任意鍵返回')
    back = True
    break
elif money < rows[2] * buy:
    while 5:
        #金額不足再次輸入
        money1 = input("您支付的金額不足,請(qǐng)?jiān)俅胃顿~:")
        try:
            money1 = float(money1)
            money = money + money1
            break
        except ValueError:
            input('您的輸入有誤舍败,按任意鍵重新輸入招狸!')
            continue
else:
    print('感謝您的購(gòu)買,歡迎下次再來(lái)邻薯!')
    #商品庫(kù)存修改
    goods[i][3] = goods[i][3] - buy
    input('按任意鍵返回')
    back = True
    break
    time.sleep(2)

小游戲整合

老虎棒子雞

# 老虎棒子雞游戲界面
os.system('cls')
print("\t\t歡迎進(jìn)入PY1807電子商城休閑區(qū)")
print("#" * 70)
print("\t歡迎進(jìn)入老虎棒子雞小游戲規(guī)則頁(yè)面")
print('\t你有10秒的時(shí)間觀看規(guī)則裙戏,十秒后自動(dòng)進(jìn)入游戲')
print("\t游戲的規(guī)則是老虎吃雞,棒子打老虎厕诡,蟲子克棒子累榜,雞吃蟲子")
print("\t當(dāng)然老虎與蟲子->平局,棒子與雞->平局")
print("\t系統(tǒng)會(huì)自動(dòng)出招")
print("\t玩家根據(jù)提示灵嫌,輸入自己的招式[0 老虎壹罚,1 棒子,2 雞寿羞,3 蟲子]")
print("\t系統(tǒng)會(huì)根據(jù)運(yùn)算得出結(jié)果猖凛,根據(jù)結(jié)果給予獎(jiǎng)勵(lì)")
print("#" * 70)
time.sleep(5)
os.system('cls')

# 積分判斷
if score > 0:
    print('加載游戲中,請(qǐng)稍后...')
    time.sleep(1)
    while 1:
        print("\n系統(tǒng)正在絞盡腦汁的出招中...")
        time.sleep(1)
        print("\n準(zhǔn)備接受正義的制裁吧绪穆!到你了辨泳,凡人")
        time.sleep(1)
        # 系統(tǒng)獲得隨機(jī)數(shù)
        game1_computer = random.randint(0, 3)
        # 玩家出招
        game1_player = input("\n請(qǐng)謹(jǐn)慎選擇您的招數(shù)(0 老虎虱岂,1 棒子,2 雞漠吻,3 蟲子):")
        game1_player = int(game1_player)
        # 判斷輸贏
        print("\n電腦正在賣力的處理中量瓜,請(qǐng)稍等...\n")
        time.sleep(2)
        if (game1_player == 0 and game1_computer == 2) \
                or (game1_player == 1 and game1_computer == 0) \
                or (game1_player == 2 and game1_computer == 3) \
                or (game1_player == 3 and game1_computer == 1):
            print("\nCongratulations, 玩家獲勝!獲得2積分\n")
            score += 2
            time.sleep(1)

            # 確認(rèn)用戶是否退出
            num = input("\n是否退出游戲(Y):")
            if num == 'y' or num == 'Y':
                os.system('cls')
                break
        elif (game1_player == 0 and game1_computer == 3) \
                or (game1_player == 1 and game1_computer == 2) \
                or (game1_player == 2 and game1_computer == 1) \
                or (game1_player == 3 and game1_computer == 0) \
                or (game1_player == game1_computer):
            print("\n哇哦途乃,平局!看來(lái)還需要一局了")
            time.sleep(2)
            os.system("cls")
        else:
            print("\nSORRY,你輸了!扣除1點(diǎn)積分\n")
            score = score - 1
            time.sleep(1)
            # 確認(rèn)用戶是否退出
            num = input("\n是否退出游戲(Y):")
            if num == 'y' or num == 'Y':
                os.system('cls')
                break
else:  # 積分不足
    print("積分不足扔傅,退出游戲")
    time.sleep(2)
    break

猜數(shù)字游戲

# 猜數(shù)字游戲
os.system('cls')
print("\t\t歡迎%s進(jìn)入PY1807電子商城休閑區(qū)" % (name))
print("#" * 70)
print("\t歡迎進(jìn)入猜數(shù)字小游戲規(guī)則頁(yè)面")
print('\t你有10秒的時(shí)間觀看規(guī)則耍共,十秒后自動(dòng)進(jìn)入游戲')
print("\t游戲的規(guī)則是系統(tǒng)會(huì)從0-100之間隨機(jī)選擇一個(gè)數(shù)")
print("\t玩家猜測(cè)系統(tǒng)出的數(shù)")
print("\t若玩家猜測(cè)的數(shù)比系統(tǒng)的大,系統(tǒng)會(huì)提示偏大")
print("\t若玩家猜測(cè)的數(shù)比系統(tǒng)的小猎塞,系統(tǒng)會(huì)提示偏小")
print("\t玩家猜錯(cuò)一次扣一分试读,才對(duì)獲得6積分的獎(jiǎng)勵(lì)")
print("#" * 70)
time.sleep(5)
os.system('cls')
print('系統(tǒng)正在選擇時(shí)...')
time.sleep(2)
os.system('cls')
print('系統(tǒng)以選擇完畢!\ⅰ钩骇!')
game2_computer = random.randint(0, 100)
time.sleep(1)
while 1:
    # 積分判斷
    if score > 0:
        game2_player = int(input("請(qǐng)輸入您猜測(cè)的值(扣除1積分):"))
        time.sleep(1)
        # 判斷結(jié)果
        if game2_player < game2_computer:
            print('您猜測(cè)的數(shù)字偏小,請(qǐng)重新輸入铝量!\n')
            time.sleep(1)
            score = score - 1
            print("當(dāng)前積分為%d" % (score))
            time.sleep(1)
            continue
        elif game2_player > game2_computer:
            print("您猜測(cè)的數(shù)字偏大倘屹,請(qǐng)重新輸入!\n")
            time.sleep(1)
            score = score - 1
            print("當(dāng)前積分為%d" % (score))
            time.sleep(1)
            continue
        else:
            print('恭喜您成功了慢叨,獲得6積分')
            time.sleep(1)
            score = score + 6
            print("當(dāng)前積分為%d" % (score))
            time.sleep(1)
            print('游戲結(jié)束纽匙,返回游戲頁(yè)面')
            time.sleep(1)
            print('系統(tǒng)正在重新加載中...')
            time.sleep(1)
            break
    else:
        print('積分不足,退出游戲拍谐!')
        break

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烛缔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轩拨,更是在濱河造成了極大的恐慌践瓷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件亡蓉,死亡現(xiàn)場(chǎng)離奇詭異晕翠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)寸宵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門崖面,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人梯影,你說(shuō)我怎么就攤上這事巫员。” “怎么了甲棍?”我有些...
    開(kāi)封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵简识,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng)七扰,這世上最難降的妖魔是什么奢赂? 我笑而不...
    開(kāi)封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮颈走,結(jié)果婚禮上膳灶,老公的妹妹穿的比我還像新娘。我一直安慰自己立由,他們只是感情好轧钓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锐膜,像睡著了一般毕箍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上道盏,一...
    開(kāi)封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天而柑,我揣著相機(jī)與錄音,去河邊找鬼荷逞。 笑死媒咳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的颅围。 我是一名探鬼主播伟葫,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼院促!你這毒婦竟也來(lái)了筏养?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤常拓,失蹤者是張志新(化名)和其女友劉穎渐溶,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體弄抬,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茎辐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掂恕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拖陆。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖懊亡,靈堂內(nèi)的尸體忽然破棺而出依啰,到底是詐尸還是另有隱情,我是刑警寧澤店枣,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布速警,位于F島的核電站叹誉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏闷旧。R本人自食惡果不足惜长豁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望忙灼。 院中可真熱鬧匠襟,春花似錦、人聲如沸缀棍。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)爬范。三九已至,卻和暖如春弱匪,著一層夾襖步出監(jiān)牢的瞬間青瀑,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工萧诫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留斥难,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓帘饶,卻偏偏與公主長(zhǎng)得像哑诊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子及刻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

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