使用python操作文件实现购物车程序

题目要求如下:

实现思路

始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息。在程序开始的时候读进来,程序结束的时候写回文件里去。在登录注册的部分,我添加3次登录失败锁定的小功能,以前不会这样实现,现在一并做进去了。

在程序运行的过程中,随时键入q程序就退出,如果是进入到购买阶段,则会打印相应信息。

测试生成器代码

import json

data = {
'zsheng': {
'pwd': 'z123',
'lock': 0,
'balance': 0,
'login_times': 0,
'goods': []
},
'xsheng': {
'pwd': 'x123',
'lock': 0,
'balance': 0,
'login_times': 0,
'goods': []
},
'csheng': {
'pwd': 'c123',
'lock': 0,
'balance': 0,
'login_times': 0,
'goods': []
},
'vsheng': {
'pwd': 'v123',
'lock': 0,
'balance': 0,
'login_times': 0,
'goods': []
}
} f = open('data.json', mode='w', encoding='utf-8')
data2 = json.dumps(data)
f.write(data2)
f.close

完整实现代码

import json
f = open('data.json', mode='r+', encoding='utf-8')
my_data = json.loads(f.read()) # 登录验证模块 登录失败程序结束,登录成功则返回用户名
def login():
while 1:
username = input('Please input your username: ')
if username == 'q':
exit()
if username not in my_data:
print('Wrong username!')
continue
if username in my_data:
if my_data[username]['lock'] == 1:
print('Your account is locked! Refuse to login!')
exit()
count = 0
while 1:
count += 1
if count > 3:
my_data[username]['lock'] = 1
f.seek(0)
f.write(json.dumps(my_data))
print('Your account is locked!')
exit()
print('This is your %d time try!' % count)
password = input('Please input your password: ')
if my_data[username]['pwd'] == password:
print('Welcome to login %s' % username)
return username
elif password == 'q':
exit()
else:
print('Wrong password, retry!')
continue # 查询记录模块,可打印已购商品和余额信息
def print_cart(username):
if my_data[username]['goods']:
print('你的购物车物品如下:')
for i in range(len(my_data[username]['goods'])):
print(i, my_data[username]['goods'][i]['name'], my_data[username]['goods'][i]['price'])
else:
print('你的购物车里没有商品。')
print('您还剩余\033[1;31;40m%s\033[0m元!' % my_data[username]['balance']) # 购买商品模块
def shopping(username):
while 1:
print('本店在售的商品如下:')
for i in range(len(goods)):
print(i, goods[i]['name'], goods[i]['price'])
no = input('please input goods number that you want to buy:')
if no == 'q':
print_cart(username)
# 程序退出时把数据写入文件中
f.seek(0)
f.write(json.dumps(my_data))
f.close()
print('欢迎下次光临!')
exit()
elif no.isdigit():
no = int(no)
if not 0 <= no < len(goods):
print('programme wrong!')
exit()
if my_data[username]['balance'] - goods[no]['price'] > 0:
my_data[username]['balance'] -= goods[no]['price']
my_data[username]['goods'].append(goods[no])
print('物品\033[1;31;40m%s\033[0m已经添加到购物车!' % (goods[no]['name']))
print('您还剩余\033[1;31;40m%s\033[0m元!' % my_data[username]['balance'])
else:
print('钱不够啦!')
print('您还剩余\033[1;31;40m%s\033[0m元!' % my_data[username]['balance'])
print('您要买的物品价值\033[1;31;40m%s\033[0m元!' % (goods[no]['price']))
print('如需结束购买,请按q')
else:
print('programme wrong!')
exit() goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "油条", "price": 20},
{"name": "女票", "price": 998},
{"name": "机械键盘", "price": 388},
{"name": "降噪耳机", "price": 1234},
{"name": "地狱火X6", "price": 7999},
{"name": "Luffycity_python_course", "price": 99}
] username = login()
my_data[username]['login_times'] += 1
print('这是你第 %d 次登录' % my_data[username]['login_times']) if my_data[username]['login_times'] > 1:
print('你上一次的消费记录如下:')
print_cart(username)
shopping(username)
else:
budget = input("please input your salary: ")
if budget.isdigit():
budget = int(budget)
else:
print('sorry you have no money!')
exit()
my_data[username]['balance'] = budget
print('start shopping, enter q to quit')
shopping(username)
f.close()

使用python操作文件实现购物车程序的更多相关文章

  1. 用Python操作文件

    用Python操作文件 用word操作一个文件的流程如下: 1.找到文件,双击打开. 2.读或修改. 3.保存&关闭. 用Python操作文件也差不多: f=open(filename) # ...

  2. Python操作文件、文件夹、字符串

    Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...

  3. Python操作文件和目录

    Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...

  4. python操作文件练习,配置haproxy

    在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...

  5. Python操作文件-20181121

    Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...

  6. python操作文件案例二则

    前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...

  7. open -python操作文件

    一打开文件 二操作文件 三关闭文件 open(文件,模式,编码),打开文件----->0101010(以二进制的方式打开)------>编码(open默认utf-8编码)------> ...

  8. 浅谈自学Python之路(购物车程序练习)

    购物车程序练习 今天我们来做一个购物车的程序联系,首先要理清思路 购物车程序需要用到什么知识点 需要用到哪些循环 程序编写过程中考虑值的类型,是int型还是字符串 如果值为字符串该怎么转成int型 用 ...

  9. Python初学者第十二天 购物车程序小作业

    12day 作业题目: 购物车程序 作业需求: 数据结构: goods = [ {"name": "电脑", "price": 1999}, ...

随机推荐

  1. [android] AndroidManifest.xml - 【 manifest -> Application -> activity 】

    <activity android:allowTaskReparenting=["true" | "false"] android:alwaysRetai ...

  2. 蓝桥杯 历届试题 剪格子(dfs搜索)

    历届试题 剪格子 时间限制:1.0s   内存限制:256.0MB 问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |* || +--****--+ ||* | ** ...

  3. MySQL单列索引和组合索引的选择效率与explain分析

    一.先阐述下单列索引和组合索引的概念: 单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引. 组合索引:即一个索包含多个列. 如果我们的查询where条件只有一个,我们完全可 ...

  4. 如何用MathType编辑出积分符号

    MathType由于能够编辑出众多的数学符号而备受理工科学生与老师的喜爱.利用它,你可以在文档中随意编写出你想要的公式.对于从来没有用过公式编辑器的人来说,在文档中看到那些复杂的数学公式时总是会为之惊 ...

  5. freemarker1 一些内建函数和用法

    ${"   green mouse"?cap_first} -->   Green mouse  //字符串中的第一个单词的首字母大写 ${"ABCDF" ...

  6. VC++ GetSafeHwnd()和GetSafeHandle()

    GetSafeHwnd()和GetSafeHandle()的主要区别: 使用者不同: (1)窗体使用:GetSafeHwnd()用于获取窗体的安全句柄(即HWND),有了HWND我们就可以方便的对HW ...

  7. Hive将txt、csv等文本文件导入hive表

    1.将txt文本文件放置hdfs目录下 2.登录hive并进入到指定数据库 3.创建表 create external table if not exists fun_user_external ( ...

  8. JQuery------图片幻灯片插件

    下载地址: http://www.jq22.com/jquery-info36

  9. Python Scrapy 验证码登录处理

    一.Form表单分析 以豆瓣登录页面为例分析,豆瓣登录页是:https://accounts.douban.com/login,浏览器打开之后查看源码,查找登录的form表单HTML结构.如下: 包括 ...

  10. 阿里云CentOS6.8云服务器配置安全组规则

    前提:已经购买阿里云服务器,域名解析也完成了 需要对安全组规则进行配置,才能进行访问 1.进入阿里云首页https://www.aliyun.com/,如下图 2.进入控制台首页,如下图 3.在上图页 ...