十四、Python小作业--创建购物商场

1.题目要求

基础部分

    #  三乐购物系统
    # • 使用系统需要登录验证,进入系统后,输入购物预算信息
    # • 用户可以任意查看商品信息和已购买信息
    # • 用户根据商品编号购买商品,购买时,检测余额是否够,够就直接扣款,不够就提醒
    # • 可随时退出(输入exit),退出后,打印已购买商品和余额
    # • 要求:用尽可能友好的方式输出(作业需要提交代码及执行结果截图)

商品用字典来存储
        {'F00001': {'name':'苹果', 'price':1.2},
        'F00002': {'name':'香蕉', 'price':5.5}, }

优化部分
    #  三创购物系统优化
    # • 前置模块: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中……

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值