Python - 购物车代码 (账户登陆,用户个人清单存取,重要信息高亮显示)
- 需要掌握open函数。
- 清单存取时,需要注意编码问题,直接在读取和存储时加上encoding = 'utf - 8' 可以解决gbk - unicode转化时出现的乱码问题。
# _*_coding:utf-8_*_
import os FILE_PATH = 'save.txt' # Database
div = {
'user1': {'password': '123'},
'user2': {'password': '123'},
'user3': {'password': '123'},
}
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
] # 读取用户购买信息 save_cart->exist [username as keys]
save_cart = {}
if os.path.exists(FILE_PATH):
with open(FILE_PATH, mode="r", encoding='utf-8') as f:
for line in f.readlines():
save_cart.update(eval(line.strip())) # login loop name->exist
while True:
name = input("登录用户名:").strip()
if name == 'q':
exit('Bye.')
if name not in div:
print("用户名错误")
if name in div:
password = input("请输入密码:").strip()
if password == div[name]['password']:
print("欢迎回来,%s!" % name)
break
else:
print("密码错误") # money->exist lst->exist
a = save_cart.get(name)
if a is not None:
money = a.get('m')
lst = a.get('ls')
print('-------已购买-------')
print('您的余额为¥', money)
for index, p in enumerate(lst):
print('%s. %s %s' % (index, p[0], p[1]))
else:
money = int(input('Please input your salary:'))
lst = [] #shopping loop
while True:
print("--------商品列表---------")
for index, p in enumerate(goods):
print("%s. %s %s" % (index, p.get('name'), p.get('price')))
choice = input("输入想买的商品编号:")
if choice.isdigit():
choice = int(choice)
if choice >= 0 and choice < len(goods):
if money > goods[choice].get('price'):
money -= goods[choice].get('price')
lst.append([goods[choice]['name'], goods[choice]['price']])
print("Added product \033[31;1m%s,¥%s\033[0m into shopping cart." % (
goods[choice].get('name'), goods[choice].get('price')))
else:
print("余额不足。")
else:
print("商品不存在")
elif choice == 'q':
if len(lst) > 0:
print("-------你已购买以下商品-------")
for index, p in enumerate(lst):
print("%s. %s ¥%s" % (index, p[0], p[1]))
print("你的余额为:\033[31;1m%s\033[0m" % money)
break
elif choice == 'd':
if len(lst) > 0:
print("-------你已购买以下商品-------")
for index, p in enumerate(lst):
print("%s. %s ¥%s" % (index, p[0], p[1]))
print("你的余额为:\033[31;1m%s\033[0m" % money) # save 2 file
with open(FILE_PATH, mode='w', encoding='utf-8') as f:
save_cart.update({name: {'m': money, 'ls': lst}})
# {'user1': {'m': 0, 'ls': []}}
f.write(str(save_cart))
Python - 购物车代码 (账户登陆,用户个人清单存取,重要信息高亮显示)的更多相关文章
- (Python基础)简单购物车代码
以下是最简单,最基础的购物车代码,一起学习,一起参考.product_list = [ ('Iphone',5800), ('Mac Pro',15800), ('car',580000), ('co ...
- python基础代码(猜年龄、从最内层跳出多层循环、简单的购物车程序)
1.猜年龄 , 可以让用户最多猜三次! age = 55 i=0 while i<3: user_guess = int (input ("input your guess:" ...
- 另一套备用的代码,通过service调用和登陆用户交互
结合这两个东东,应该差不多可以搞定我需要的事情啦. 因为更改不了service代码,所以希望从service调用的代码里,争脱出来,和本地登陆用户进行交互启动. #include <window ...
- Python tkinter 实现简单登陆注册 基于B/S三层体系结构,实现用户身份验证
Python tkinter 实现简单登陆注册 最终效果 开始界面 注册 登陆 源码 login.py # encoding=utf-8 from tkinter import * from ...
- MYSQL设置远程账户登陆总结,mysql修改、找回密码、增加新用户,MySQL数据库的23个注意事项
1.5 设置及修改Mysql root用户密码1 设置密码方法mysqladmin -u root password '123456'mysqladmin -u root -p'123456' pas ...
- Python实现网站模拟登陆
一.实验简介 1.1 基本介绍 本实验中我们将通过分析登陆流程并使用 Python 实现模拟登陆到一个实验提供的网站,在实验过程中将学习并实践 Python 的网络编程,Python 实现模拟登陆的方 ...
- python 购物车小程序
python 购物车小程序 功能要求:1.启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. ...
- Python阶段复习 - part 4 - 用户登录程序
简易版: #!/usr/bin/env python # _*_ coding:UTF-8 _*_ # __auth__:Dahlhin import sys userinfo = r'userinf ...
- Python IDLE 代码高亮主题
Python IDLE 代码高亮主题 使用方法: 打开C盘我的 C:\Documents and Settings\你的用户名.idlerc文件夹 里面会有一个 config-highlight.cf ...
随机推荐
- Linux CentOS 7 安装confluence 5.8.10
一..需要下载的安装包如下 1.atlassian-confluence-5.8.10-x64.bin #confluence安装包 2.confluence5.x-crack.zip #conflu ...
- 用layer-list做一个卡片背景
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android=" ...
- DELPHI XE5-8 弹出列表框供选择
点击章节练习: var tmplm:Tlistboxitem; begin dm.FDQTMP.SQL.Clear; dm.FDQTMP.SQL.Add('select GSESSON from TS ...
- Java == 和 equals 比较
在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str2 = new String(&qu ...
- [javascript]switchTab:仿腾讯首页Tab栏切换js插件
腾讯首页的每个新闻栏目都是一个tab选项卡切换,属于延迟动作的:鼠标hover上去之后200毫秒才会切换,防止了因为浏览滑动导致的页面上选项卡的频繁切换.仿照这样的效果,自己写了一个js插件,实现了低 ...
- GridView中合并单元格
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...
- ASP 缓存处理及URL 重写
1 缓存 1.1.1 <%--通过设置VaryByParam =" VaryByParam ="none" %> 1.1.2 <%--带参数缓存,只要包 ...
- BZOJ 2535:NOI 2010 航空管制
[NOI2010]航空管制 题面请点上面. 首先第一问,我第一想法是把它放到一个小根堆中,然而这是不行的. 正确的思路是,把图反过来建,然后放到一个大根堆里去. 至于原因,感性理解一下,正着贪是有后效 ...
- 【leetcode 133. 克隆图】解题报告
方法一:dfs(递归) map<Node*,Node*> dict; Node* clone(Node* node) { if (!node) return node; if (dict. ...
- INSERT IGNORE 与INSERT INTO的区别,以及replace的用法
INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据. 这样就可以保 ...