这是本人在学习python过程中写的小程序,记录下来。
代码如下:
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() # 关闭文件
# print '初始化pkl文件成功'
# 反序列化pkl文件,转换为Python的可操作数据对象
pkfile_read = open('data.pkl', 'rb') # 以只读方式打开文件
money = pickle.load(pkfile_read)
goods = pickle.load(pkfile_read)
pkfile_read.close() # 关闭文件
# print '账户金额:', money['money']
login_user = '' # 登录用户
shopping_budget = '' # 购物预算资金
def login():
# 登录验证
global login_user
username = ['admin', 'junxi', 'tangyan'] # 账户表
password = {'junxi': 'junxi2017', 'admin': 'admin2017', 'tangyan': 'tangyan2017'} # 密码字典
err_num = 0
while True:
# 内容盒子
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 '输入账户或密码连续错误三次,请稍后再试'
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() # 进入购物预算判定
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
# 购物预算
def shop_budget():
global shopping_budget
shopping_budget = int(raw_input('请问您带了多少钱? >'))
# 把购物预算金额写入pkl文件
pkfile_write = open('data.pkl', 'wb') # 以可写方式打开文件
money['money'] = shopping_budget
pickle.dump(money, pkfile_write)
print '购物预算金额:', shopping_budget
pkfile_write.close()
if shopping_budget < 10:
print 'Sorry,您的购物预算太低,无法在此消费,请携带充足金钱再来!'
sys.exit(0)
else:
store_info() # 资金符合要求,进入商品详情页
# 商品详情页
def store_info():
while True:
try:
if money['money'] < 10: # 判断余额
print '您的余额已不足,请离开,欢迎下次光临。'
break
elif money['money'] >= 10 and money['money'] < 20:
print '您的余额已不足20元,您还可以嚼个口香糖'
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)退出
请选择您想要购买的商品(输入数字即可)
---------------------------------------------
您的可用余额为:%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的数量:' % (choice_list[choice_input][0]))) # 商品数量
print ' 加入购物车成功,总价:%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) # 花费金额
current_money = money['money'] - cost_money # 账户余额 - 花费余额 = 当前余额
money['money'] = current_money
pickle.dump(money, pkfile_write) # 更新金钱余额
pickle.dump(goods, pkfile_write) # 更新已买物品栏
pkfile_write.close()
print ' 付款成功,商品已购买'
print ' 当前余额:', 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输入错误,请重新输入\033[0m'
def main():
login()
if __name__ == '__main__':
main()
运行:
python
+___________________________________________________________+
| |
| 尊敬的客户,欢迎您来到仙灵购物 |
| |
+___________________________________________________________+
请输入用户名:admin
请输入密码:admin2017
登录成功,welcome
请问您带了多少钱? >100000
购物预算金额: 100000
admin,您好,欢迎来到仙灵大商城,您可选择的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未来人类笔记本 28888元
(3)绿箭口香糖 10元
(4)大天朝浮夸香烟 688元
(5)海南爽口椰子果 588元
(6)疯狂烤翅 20元
(7)巨无霸汉堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
请选择您想要购买的商品(输入数字即可)
---------------------------------------------
您的可用余额为:100000元
---------------------------------------------
input>2
您选择购买未来人类笔记本
请输入购买未来人类笔记本的数量:2
加入购物车成功,总价:57776
你的资金充足,请付款
请输入1付款,0取消 >1
付款成功,商品已购买
当前余额: 42224
恭喜您,买了这么多好东西: [["未来人类笔记本", 2]]
admin,您好,欢迎来到仙灵大商城,您可选择的商品信息如下,
(0)咖啡 50元
(1)iphone7 plus 8888元
(2)未来人类笔记本 28888元
(3)绿箭口香糖 10元
(4)大天朝浮夸香烟 688元
(5)海南爽口椰子果 588元
(6)疯狂烤翅 20元
(7)巨无霸汉堡 25元
(8)女神陪游泳卡片 6666元
(9)退出
请选择您想要购买的商品(输入数字即可)
---------------------------------------------
您的可用余额为:42224元
---------------------------------------------
input>8
您选择购买女神陪游泳卡片
请输入购买女神陪游泳卡片的数量:5
加入购物车成功,总价:33330
你的资金充足,请付款
请输入1付款,0取消 >1
付款成功,商品已购买
当前余额: 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)退出
请选择您想要购买的商品(输入数字即可)
---------------------------------------------
您的可用余额为:8894元
---------------------------------------------
input>1
您选择购买iphone7 plus
请输入购买iphone7 plus的数量:1
加入购物车成功,总价:8888
你的资金充足,请付款
请输入1付款,0取消 >1
付款成功,商品已购买
当前余额: 6
恭喜您,买了这么多好东西: [["未来人类笔记本", 2], ["女神陪游泳卡片", 5], ["iphone7 plus", 1]]
您的余额已不足,请离开,欢迎下次光临。