這是本人在學(xué)習(xí)python過程中寫的小程序,記錄下來凡资。
代碼如下:
hon
# _*_ coding:utf-8 _*_
__author__ = 'junxi'
import pickle
import json
import sys
# 初始序列化pkl文件谬运,用來存儲余額和已購商品
money = {
'money': 0, # 初始金錢
}
goods = [] # 初始已買物品欄,商品為空梆暖。
pkfile_write = open('data.pkl', 'wb') # 以寫的方式打開文件
pickle.dump(money, pkfile_write)
pickle.dump(goods, pkfile_write)
pkfile_write.close() # 關(guān)閉文件
# print '初始化pkl文件成功'
# 反序列化pkl文件伞访,轉(zhuǎn)換為Python的可操作數(shù)據(jù)對象
pkfile_read = open('data.pkl', 'rb') # 以只讀方式打開文件
money = pickle.load(pkfile_read)
goods = pickle.load(pkfile_read)
pkfile_read.close() # 關(guān)閉文件
# print '賬戶金額:', money['money']
login_user = '' # 登錄用戶
shopping_budget = '' # 購物預(yù)算資金
def login():
# 登錄驗(yàn)證
global login_user
username = ['admin', 'junxi', 'tangyan'] # 賬戶表
password = {'junxi': 'junxi2017', 'admin': 'admin2017', 'tangyan': 'tangyan2017'} # 密碼字典
err_num = 0
while True:
# 內(nèi)容盒子
welcomes = ' 尊敬的客戶式廷,歡迎您來到仙靈購物'
screen_width = 80
text_width = len(welcomes)
box_width = text_width + 6
left_margin = (screen_width - box_width) // 2
print
print '' * left_margin + '+' + '_' * (box_width - 2) + '+'
print '' * left_margin + '| ' + ' ' * text_width + ' |'
print '' * left_margin + '| ' + welcomes + ' |'
print '' * left_margin + '| ' + ' ' * text_width + ' |'
print '' * left_margin + '+' + '_' * (box_width - 2) + '+'
print
if err_num == 3:
print '輸入賬戶或密碼連續(xù)錯(cuò)誤三次芭挽,請稍后再試'
break
user_input = raw_input('請輸入用戶名:')
pass_input = raw_input('請輸入密碼:')
login_user = user_input
if user_input in username and pass_input == password[user_input]:
print '登錄成功,welcome'
# break
shop_budget() # 進(jìn)入購物預(yù)算判定
elif user_input not in username:
print '賬戶不存在蠕趁,請重新輸入'
err_num += 1
elif pass_input != password[user_input]:
print '密碼不正確辛馆,請重新輸入'
err_num += 1
else:
print '用戶名或密碼不正確,請重新輸入'
err_num += 1
# 購物預(yù)算
def shop_budget():
global shopping_budget
shopping_budget = int(raw_input('請問您帶了多少錢腊状? >'))
# 把購物預(yù)算金額寫入pkl文件
pkfile_write = open('data.pkl', 'wb') # 以可寫方式打開文件
money['money'] = shopping_budget
pickle.dump(money, pkfile_write)
print '購物預(yù)算金額:', shopping_budget
pkfile_write.close()
if shopping_budget < 10:
print 'Sorry苔可,您的購物預(yù)算太低,無法在此消費(fèi)映屋,請攜帶充足金錢再來同蜻!'
sys.exit(0)
else:
store_info() # 資金符合要求,進(jìn)入商品詳情頁
# 商品詳情頁
def store_info():
while True:
try:
if money['money'] < 10: # 判斷余額
print '您的余額已不足瘫析,請離開,歡迎下次光臨颁股。'
break
elif money['money'] >= 10 and money['money'] < 20:
print '您的余額已不足20元,您還可以嚼個(gè)口香糖'
else:
pass
choice_list = [('咖啡', 50), ('iphone7 plus', 8888), ('未來人類筆記本', 28888), ('綠箭口香糖', 10), ('大天朝浮夸香煙', 688), ('海南爽口椰子果', 588),
('瘋狂烤翅', 20), ('巨無霸漢堡', 25), ('女神陪游泳卡片', 6666)]
# print json.dumps(choice_list, encoding='UTF-8', ensure_ascii=False) # 解決中文亂碼問題
prompt = '''%s诉儒,您好亏掀,歡迎來到仙靈大商城,您可選擇的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未來人類筆記本 28888元
(3)綠箭口香糖 10元
(4)大天朝浮夸香煙 688元
(5)海南爽口椰子果 588元
(6)瘋狂烤翅 20元
(7)巨無霸漢堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
請選擇您想要購買的商品(輸入數(shù)字即可)
---------------------------------------------
您的可用余額為:%s元
---------------------------------------------
input>''' % (login_user, money['money']) # 登錄賬戶温算, 余額
choice_input = int(raw_input(prompt)) # 用戶輸入的商品ID
if choice_input == 9:
print '已退出商城注竿,歡迎下次光臨'
break
print ' 您選擇購買%s' % (choice_list[choice_input][0]) # 購買的商品
shopping_num = int(raw_input(' 請輸入購買%s的數(shù)量:' % (choice_list[choice_input][0]))) # 商品數(shù)量
print ' 加入購物車成功魂贬,總價(jià):%s' % (choice_list[choice_input][1] * shopping_num)
if (choice_list[choice_input][1] * shopping_num) <= money['money']:
print ' 你的資金充足,請付款'
payment = int(raw_input(' 請輸入1付款宣谈,0取消 >'))
if payment == 1:
# 付款扣錢
pkfile_write = open('data.pkl', 'wb') # 以可寫方式打開文件
buy_goods = (choice_list[choice_input][0], shopping_num)
goods.append(buy_goods)
cost_money = (choice_list[choice_input][1] * shopping_num) # 花費(fèi)金額
current_money = money['money'] - cost_money # 賬戶余額 - 花費(fèi)余額 = 當(dāng)前余額
money['money'] = current_money
pickle.dump(money, pkfile_write) # 更新金錢余額
pickle.dump(goods, pkfile_write) # 更新已買物品欄
pkfile_write.close()
print ' 付款成功键科,商品已購買'
print ' 當(dāng)前余額:', current_money
else:
print ' 訂單已取消,請重新選擇商品嗦嗡。'
else:
print '商品購買失敗饭玲,您的余額不足'
if len(goods) > 0:
print '恭喜您,買了這么多好東西:', json.dumps(goods, encoding='UTF-8', ensure_ascii=False)
except:
print '\033[1;31;0m輸入錯(cuò)誤咱枉,請重新輸入\033[0m'
def main():
login()
if __name__ == '__main__':
main()
運(yùn)行:
+___________________________________________________________+
| |
| 尊敬的客戶蚕断,歡迎您來到仙靈購物 |
| |
+___________________________________________________________+
請輸入用戶名:admin
請輸入密碼:admin2017
登錄成功,welcome
請問您帶了多少錢亿乳? >100000
購物預(yù)算金額: 100000
admin径筏,您好滋恬,歡迎來到仙靈大商城抱究,您可選擇的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未來人類筆記本 28888元
(3)綠箭口香糖 10元
(4)大天朝浮夸香煙 688元
(5)海南爽口椰子果 588元
(6)瘋狂烤翅 20元
(7)巨無霸漢堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
請選擇您想要購買的商品(輸入數(shù)字即可)
---------------------------------------------
您的可用余額為:100000元
---------------------------------------------
input>2
您選擇購買未來人類筆記本
請輸入購買未來人類筆記本的數(shù)量:2
加入購物車成功,總價(jià):57776
你的資金充足勋拟,請付款
請輸入1付款妈候,0取消 >1
付款成功,商品已購買
當(dāng)前余額: 42224
恭喜您苦银,買了這么多好東西: [["未來人類筆記本", 2]]
admin幔虏,您好纺念,歡迎來到仙靈大商城所计,您可選擇的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未來人類筆記本 28888元
(3)綠箭口香糖 10元
(4)大天朝浮夸香煙 688元
(5)海南爽口椰子果 588元
(6)瘋狂烤翅 20元
(7)巨無霸漢堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
請選擇您想要購買的商品(輸入數(shù)字即可)
---------------------------------------------
您的可用余額為:42224元
---------------------------------------------
input>8
您選擇購買女神陪游泳卡片
請輸入購買女神陪游泳卡片的數(shù)量:5
加入購物車成功主胧,總價(jià):33330
你的資金充足习勤,請付款
請輸入1付款,0取消 >1
付款成功夷都,商品已購買
當(dāng)前余額: 8894
恭喜您予颤,買了這么多好東西: [["未來人類筆記本", 2], ["女神陪游泳卡片", 5]]
admin,您好蛤虐,歡迎來到仙靈大商城,您可選擇的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未來人類筆記本 28888元
(3)綠箭口香糖 10元
(4)大天朝浮夸香煙 688元
(5)海南爽口椰子果 588元
(6)瘋狂烤翅 20元
(7)巨無霸漢堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
請選擇您想要購買的商品(輸入數(shù)字即可)
---------------------------------------------
您的可用余額為:8894元
---------------------------------------------
input>1
您選擇購買iphone7 plus
請輸入購買iphone7 plus的數(shù)量:1
加入購物車成功刑顺,總價(jià):8888
你的資金充足,請付款
請輸入1付款狼讨,0取消 >1
付款成功柒竞,商品已購買
當(dāng)前余額: 6
恭喜您,買了這么多好東西: [["未來人類筆記本", 2], ["女神陪游泳卡片", 5], ["iphone7 plus", 1]]
您的余額已不足鲫骗,請離開踩晶,歡迎下次光臨。