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 ...
随机推荐
- HDU 4586 Play the Dice (数学,概率,等比公式,极限)
题意:给你一个n面的骰子每个面有一个值,然后其中有不同值代表你能获得的钱,然后有m个特殊的面,当你骰到这一面的时候可以获得一个新的机会 问你能得到钱的期望. 析: 骰第一次 sum/n 骰第二 ...
- 练习题。对DOM中document的深刻理解巩固
//window.onload = modTwo; 1.点击单元格内容 弹窗promrt接收值 将接受的值提换单元格内容 2.点击单元格 出现2个按钮 加粗 字体颜色标红 ...
- Alpha冲刺 - (8/10)
队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 进一步优化代码,结合自己负责的部分修改功能 代码规范完整 ...
- Java的sun.misc.Unsafe类
阅读目录 前言 Unsafe类的作用 获取Unsafe对象 Unsafe类中的API 前言 以下sun.misc.Unsafe源码和demo基于jdk1.7: 最近在看J.U.C里的源码,很多都用到了 ...
- 设计模式6---代理模式(Proxy Pattern)
代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问. 1. 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象都实现相同的接口或者是继承相同父类. 接口:IUser ...
- CodeForces 620E New Year Tree(线段树的骚操作第二弹)
The New Year holidays are over, but Resha doesn't want to throw away the New Year tree. He invited h ...
- 在Android模拟器里安装apk
[原文]http://Android.tgbus.com/android/tutorial/201104/349532.shtml 1.运行SDK Manager,选择模拟器,并运行模拟器. 2.将需 ...
- .net 可选参数和命名参数
可选参数,可以为方法的参数设置默认值,在调用方法的时候,如果不传递参数,就是执行默认参数. class Program { , string s = "A", DateTime d ...
- ffmpeg用法小结,教你抓各大网站视频
最近受邀朋友帮忙需要抓取一段某酷电影,偶然间发现ffmpeg程序.说到此可能会有人提到you-get和youtube-dl,期间也接触了该两款程序,但是由于版权原因,该软件仅仅可以抓取前几分钟预览版, ...
- Robotlegs2的Starling扩展
有个老外写了robotleges2的starling扩展,地址是 https://github.com/brean/robotlegs2-starling-viewmap 需要注意的是要先创建一个基于 ...