1.题目要求
基础部分
# 三乐购物系统
# • 使用系统需要登录验证,进入系统后,输入购物预算信息
# • 用户可以任意查看商品信息和已购买信息
# • 用户根据商品编号购买商品,购买时,检测余额是否够,够就直接扣款,不够就提醒
# • 可随时退出(输入exit),退出后,打印已购买商品和余额
# • 要求:用尽可能友好的方式输出(作业需要提交代码及执行结果截图)
优化部分
# 三创购物系统优化
# • 前置模块:excel操作模块xlsxwriter
# • 添加文档注释(document string)
# • 扩展:将用户名密码余额存文件,下次进系统可直接用
# • 商品存到exce
2.开始解题
基础部分:
# 先定义基础变量
dict = {'F00001': {'name':'苹果', 'price':1.2},'F00002': {'name':'香蕉', 'price':5.5}, }
buy = []
#dict为商品信息
#buy用来作购买的列表,因为每次购买商品都需要在末尾加1个单位,我最初想法是用字典的value来
#存储信型,这我翻了翻之前写的笔记,看到了列表,列表的底层原理就是数组+链表,列表有个增加
#函数lst.append(obj),在列表末尾增加一个元素,这不和题目要求一模一样吗!果断顺着这个思路
#开始写代码,一路顺风顺水写完。写代码选择思路是很重要的,高中时一位著名老师说过的话:
#“繁琐问题,必有猥琐解法”
# • 使用系统需要登录验证,进入系统后,输入购物预算信息
user = input("请输入用户: ")
# 定义inter来接收输入,我定义的用户是'root',密码是'123456'
if user == 'root':
password = input("请输入密码: ")
# 先判断用户名user输入是否为为'root',不是就重新输入用户名,是的话就输入密码
if password == '123456':
#密码输入正确,进入系统
money = int(input("请输入预算: "))
# 进入系统后,我定义变量整型money来接收预算
else:
print("用户错误!请重新输入用户!")
# • 用户可以任意查看商品信息和已购买信息
# • 用户根据商品编号购买商品,购买时,检测余额是否够,够就直接扣款,不够就提醒
# • 可随时退出(输入exit),退出后,打印已购买商品和余额
while True:
inter = input("请开始你的表演: ")
#执行操作1.查看商品信息和已购买信息 2.购买商品 3.退出
if inter in dict.keys():
print(dict.get(inter,0))
#查看商品信息
if inter == 'buyed':
print(f"已购买: {buy}")
#查看已经购买
if 'money' in inter:
print("余额是%.1f"%money)
if inter != 'F00001':
if 'F00001' in inter:
#我定义F00001为查看商品信息,只需要输入含有但不等于F00001的字符串为购买,例如buyF00001
if money >= dict.get('F00001',0).get('price',0):
money -= dict.get('F00001',0).get('price',0)
buy.append(dict.get('F00001',0))
else:
print("余额不足")
if inter != 'F00002':
if 'F00002' in inter:
#我定义F00001为查看商品信息,只需要输入含有但不等于F00002的字符串为购买,例如buyF00002
if money >= dict.get('F00002',0).get('price',0):
money -= dict.get('F00002',0).get('price',0)
buy.append(dict.get('F00002',0))
else:
print("余额不足")
if inter == 'exit':
break
#如果输入为exit退出内层循环
print(f"购买的商品为{buy}")
#打印购买的物品
print("余额剩余%.1f"%money)
#打印余额
break
#退出外层循环,在这里没展示
基础部分完整版代码:
dict = {'F00001': {'name':'苹果', 'price':1.2},'F00002': {'name':'香蕉', 'price':5.5}, }
buy = []
while True:
user = input("请输入用户: ")
if user == 'root':
password = input("请输入密码: ")
if password == '123456':
#账户验证,当用户输入错误时,重新输入用户
money = int(input("请输入预算: "))
while True:
inter = input("请开始你的表演: ")
#执行操作1.查看商品信息和已购买信息 2.购买商品 3.退出
if inter in dict.keys():
print(dict.get(inter,0))
#查看商品信息
if inter == 'buyed':
print(f"已购买: {buy}")
#查看已经购买
if 'money' in inter:
print("余额是%.1f"%money)
if inter != 'F00001':
if 'F00001' in inter:
if money >= dict.get('F00001',0).get('price',0):
money -= dict.get('F00001',0).get('price',0)
buy.append(dict.get('F00001',0))
else:
print("余额不足")
if inter != 'F00002':
if 'F00002' in inter:
if money >= dict.get('F00002',0).get('price',0):
money -= dict.get('F00002',0).get('price',0)
buy.append(dict.get('F00002',0))
else:
print("余额不足")
if inter == 'exit':
break
print(f"购买的商品为{buy}")
#打印购买的物品
print("余额剩余%.1f"%money)
#打印余额
break
else:
print("用户错误!请重新输入用户!")
进阶版
优化部分
# 三创购物系统优化
# • 前置模块:excel操作模块xlsxwriter
#在导入去,需要先安装xlsxwriter包才可使用
import xlsxwriter
workbook = xlsxwriter.Workbook('excel.xlsx')
#创建一个workbook
worksheet = workbook.add_worksheet('sheet1')
#添加一个sheet
headings = ['user','password']
worksheet.write_row('A1',headings)
#使用函数将headings写入第一行
# • 扩展:将用户名密码余额存文件,下次进系统可直接用
#xlrd模块可以读取excel表中的数据
# 三乐购物系统
# • 使用系统需要登录验证,进入系统后,输入购物预算信息
# • 用户可以任意查看商品信息和已购买信息
# • 用户根据商品编号购买商品,购买时,检测余额是否够,够就直接扣款,不够就提醒
# • 可随时退出(输入exit),退出后,打印已购买商品和余额
# • 要求:用尽可能友好的方式输出(作业需要提交代码及执行结果截图)
# 三创购物系统优化
# • 前置模块:excel操作模块xlsxwriter
# • 添加文档注释(document string)
# • 扩展:将用户名密码余额存文件,下次进系统可直接用
# • 商品存到excel
import xlsxwriter
import xlrd
workbook = xlsxwriter.Workbook('excel.xlsx')
worksheet = workbook.add_worksheet('sheet1')
headings = ['user','password']
worksheet.write_row('A1',headings)
# workbook.close()
data = xlrd.open_workbook('excel.xlsx')
table = data.sheet_by_name('sheet1')
flag = 0
while True:
buy = []
dict = {'F00001': {'name':'苹果', 'price':1.2},'F00002': {'name':'香蕉', 'price':5.5}, }
if table.nrows > 1:
flag = 1
#因为录进去的数据都是正确的,如果excel有路局录入,则行数会大于一,直接消费。
if flag == 0:
user = input("请输入用户: ")
if user == 'root':
password = input("请输入密码: ")
if password == '123456':
#账户验证,当用户输入错误时,重新输入用户
workbook = xlsxwriter.Workbook('excel.xlsx')
worksheet = workbook.add_worksheet('sheet1')
worksheet.write_string(1,0,user)
worksheet.write_string(1,1,password)
headings = ['user','password']
worksheet.write_row('A1',headings)
workbook.close()
flag = 1
else:
print("用户错误!请重新输入用户!")
elif flag == 1:
money = int(input("请输入预算: "))
while True:
inter = input("请开始你的表演: ")
#执行操作1.查看商品信息和已购买信息 2.购买商品 3.退出
if inter in dict.keys():
print(dict.get(inter,0))
#查看商品信息
if inter == 'buyed':
print(f"已购买: {buy}")
#查看已经购买
if 'money' in inter:
print("余额是%.1f"%money)
if inter != 'F00001':
if 'F00001' in inter:
if money >= dict.get('F00001',0).get('price',0):
money -= dict.get('F00001',0).get('price',0)
buy.append(dict.get('F00001',0))
else:
print("余额不足")
if inter != 'F00002':
if 'F00002' in inter:
if money >= dict.get('F00002',0).get('price',0):
money -= dict.get('F00002',0).get('price',0)
buy.append(dict.get('F00002',0))
else:
print("余额不足")
if inter == 'exit':
break
print(f"购买的商品为{buy}")
#打印购买的物品
print("余额剩余%.1f"%money)
#打印余额
break
# • 商品存到excel
尚未完成,如何将列表存入excel中……