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 ...
随机推荐
- Spring 事务不回滚
为了打印清楚日志,很多方法我都加tyr catch,在catch中打印日志.但是这边情况来了,当这个方法异常时候 日志是打印了,但是加的事务却没有回滚. 例: 类似这样的方法不会回滚 (一个方 ...
- Android Studio NDK环境配置
本文参考:Android Studio NDK环境配置及JNI使用方法:http://blog.csdn.net/tongseng/article/details/53005123 并添加自己的实践: ...
- 编写高质量代码改善C#程序的157个建议——建议84:使用PLINQ
建议84:使用PLINQ LINQ最基本的功能就是对集合进行遍历查询,并在此基础上对元素进行操作.仔细推敲会发现,并行编程简直就是专门为这一类应用准备的.因此,微软专门为LINQ拓展了一个类Paral ...
- 编写高质量代码改善C#程序的157个建议——建议71:区分异步和多线程应用场景
建议71:区分异步和多线程应用场景 初学者有时候会将异步和多线程混为一谈.如果对它们之间的区别不是很清楚,很容易写出下面这样的代码: private void buttonGetPage_Click( ...
- CSS中的三种基本的定位机制(普通流、定位、浮动)
一.普通流 普通流中元素框的位置由元素在XHTML中的位置决定.块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin计算得到.行内元素在一行中水平布置. 普通流就是html文档中的元素如块 ...
- pig(数据流语言和编译器)学习https://www.w3cschool.cn/apache_pig/apache_pig_execution.html
当我们配置了hadoop集群执行的时候 可以通过命令ls进行查看 存储语法 STORE Relation_name INTO ' required_directory_path ' [USING fu ...
- gulp-usemin 插件使用
关于什么是gulp,它和grunt有什么区别等问题,这里不做任何介绍.本文主要介绍如何使用gulp-usemin这款插件,同时也会简单介绍本文中用到的一些插件. 什么是gulp-usemin 用来将H ...
- sampling method
sampling method 背景 在贝叶斯框架下,利用后验分布对参数进行估计,也即 其中 (1)是参数的先验分布. (2)是似然分布,数据集的生成联合概率 (3)是参数的后验分布. 通常分布很复杂 ...
- ajax 跨域访问的解决方案
ajax 跨域访问的解决方案 一.什么是跨域: 1.什么样的请求属于跨域: 域名,端口有任何一个不相同都属于跨域: 二.跨域的常用几种解决方案: 1.jsonp: 2.iframe: 3.webcon ...
- “全栈2019”Java第二十六章:流程控制语句中循环语句do-while
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...