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 ...
随机推荐
- _I、_O、_IO的含义
转自:http://blog.csdn.net/daa20/article/details/42339695 __I. __O .__IO是什么意思? 这是ST库里面的宏定义,定义如下: #defin ...
- node后台启动
node启动后会占用当前shell 后台启动方式: 1.用forever进行管理 npm install -g forever forever start index.js 2.使用nohub命令 ...
- Verilog MIPS32 CPU(一)-- PC寄存器
Verilog MIPS32 CPU(一)-- PC寄存器 Verilog MIPS32 CPU(二)-- Regfiles Verilog MIPS32 CPU(三)-- ALU Verilog M ...
- 《html5 从入门到精通》读书笔记(一)
今天看了<html5 从入门到精通>这本书,感觉阅读下来很舒心,不像阅读其他书籍很揪心.html增加的知识点,我觉得非常有价值,看完几章记录了一些内容,不但能巩固,也为下次遗忘知识点做好准 ...
- HBase介绍 (1)---数据模型
http://blog.csdn.net/heyutao007/article/details/5766896 BigTable是什么?Google的Paper对其作了充分的说明.字面上看就是一张大表 ...
- [Asp.net Mvc]为js,css静态文件添加版本号
方式一: 思路 string version = ViewBag.Version; @Scripts.RenderFormat("<script type=\"text/ja ...
- 《Think in Java》17~18
chapter 17 容器深入研究 填充容器 package cn.test; import java.util.ArrayList; import java.util.Collections; im ...
- javascript对比两个数组,打印出差异值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 牛客挑战赛30D 小A的昆特牌(组合数学)
题面 传送门 题解 很容易写出一个暴力 \[\sum_{i=l}^r {i+n-1\choose n-1}{s-i+m\choose m}\] 即枚举选了多少个步兵,然后用插板法算出方案数 我们对这个 ...
- centos6安装mysql5.7
RPM包安装与卸载mysql 建议:装完mysql后立刻创建一个密码,不然下次登录的时候会有问题.原因是mysql 5.7会自动创建一个临时密码,过期失效,可以到grep "password ...