電子商城功能
- 用戶登錄注冊(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