Python之作业购物车

作业之购物车

购物车要求如下:

用户入口:

  1. 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
  2. 允许用户根据商品编号购买商品
  3. 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
  4. 可随时退出,退出时,打印已购买商品和余额
  5. 在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
  6. 用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
  7. 允许查询之前的消费记录

商家入口:

可以添加商品

具体代码如下:

import os, time#导入os和time模块
if not os.path.exists(‘d:\\consumer_login.txt‘):#判断用户登录的文件是否存在
    with open(‘d:\\users\\consumer_login.txt‘,‘w‘) as f_cons:#创建文件
        f_cons.write(‘‘‘{‘zhangsan‘:‘123‘,‘wangwu‘:‘a324‘,‘lisi‘:‘li123‘}‘‘‘)#写入数据
        f_cons.close()#关闭文件
def login():#声明一个登录的函数
    ‘‘‘该函数主要用于用户登录,错误三次的用户被锁定,且不能再登录,用户名和密码存在文件中,登录成功将打印欢迎语句。‘‘‘
    with open(‘d:\\users\\consumer_login.txt‘) as f_cons,        open(‘d:\\users\\locked_users.txt‘,‘a+‘) as f_lock:#打开两个文件
        name_list = []#声明一个列表用于记录输入错误用户名的次数
        consumers = eval(f_cons.read())#把文件内的数据读取到内存
        f_lock.seek(0)#(由于打开该文件的模式是a+所以需要跳转指针到开始位置)指定指针位置从0开始
        lock_list = [i.strip() for i in f_lock.readlines()]#使用列表推导式把文件内的每行信息作为新列表的每个元素
        for i in lock_list:#遍历列表
            print(‘用户(\033[31m%s\033[0m)被锁定!‘% i)
        while True:
            login_user = input(‘请输入用户名:‘).strip()
            if login_user in lock_list:#判断输入的用户是否已经存在于锁定文件当中
                print(‘用户(\033[31m%s\033[0m)已被锁定!‘% login_user)
                break
            else:
                login_pwd = input(‘请输入密码:‘).strip()
                if (login_user,login_pwd) in consumers.items():#判断输入信息作为元祖的两个元素是否存在于字典的键值对中
                    print(‘欢迎来到购物商城!‘)
                    f_cons.close()
                    f_lock.close()
                    return login_user
                else:
                    print(‘用户或者密码错误,请重新输入!‘)
                    name_list.append(login_user)#把输入错误的用户名添加到列表中
                    if name_list.count(login_user) == 3:#判断列表中本次输入的用户名是否出现三次
                        f_lock.write(login_user+‘\n‘)#把错误的用户名写入到文件中
                        print(‘用户(\033[31m%s\033[0m)已被锁定!‘% login_user)
                        break
                    continue
login_user = login()#赋值调用函数
def first_login():#声明一个函数,判断用户是否是第一次登陆
    ‘‘‘该函数用户判断用户是否是第一次登陆,如果是第一次登陆将输入金额并把金额存储到文件中,最终返回选择购物的函数‘‘‘
    with open(‘d:\\users\\users_list.txt‘,‘a+‘) as users_l,        open(‘d:\\users\\%s_record.txt‘% login_user,‘a+‘) as record:
        users_l.seek(0)#(由于打开该文件的模式是a+所以需要跳转指针到开始位置)指定指针位置从0开始
        users_name = [i.strip() for i in list(users_l.readlines())]#利用列表推导式变量文件内容并赋值给列表
        if login_user in users_name:
            print(‘欢迎您再次光临购物商城!‘)
            record.close()
            users_l.close()
            return user_choice()#返回另一个函数
        else:
            users_l.write(login_user +‘\n‘)
            print(‘欢迎您第一次登录购物商城!‘)
            while True:
                moneys = input(‘输入工资后才能开始购物,请输入您的金额:‘).strip()
                if moneys.isdigit():
                    moneys = int(moneys)
                    print(‘您当前的金额为:\033[31m%s\033[0m元人民币!‘% moneys)
                    record.write(‘用户名为\033[34m%s\033[0m的账号,第一次充值的金额为\033[31m%s\033[0m元人民币!\t日期:\033[34m%s\033[0m\n‘%(login_user,moneys,time.strftime(‘%Y-%m-%d %H:%M:%S‘)))
                    #上行代码中人民币中间有一个换号符
                    f = open(‘d:\\users\\%s_money.txt‘ % login_user,‘a+‘)#创建一个用于存储用户金额的文件
                    f.write(str(moneys)+‘\n‘)
                    f.close()
                    users_l.close()
                    record.close()
                    return user_choice()
                else:
                    print(‘输入的工资格式有误,请重新输入!‘)
                    continue
if not os.path.exists(‘d:\\users\\goods.txt‘):
    with  open(‘d:\\users\\goods.txt‘,‘w‘) as f_goods:
        f_goods.write(‘‘‘{‘book‘:13,‘pig‘:300,‘bike‘:‘990‘,‘pen‘:5,‘iphone‘:3000,‘ipad‘:1800,}‘‘‘)
        f_goods.close()
def user_choice():#声明一个函数
    ‘‘‘该函数主要用于用户选择购物和查询记录‘‘‘
    with open(‘d:\\users\\%s_record.txt‘% login_user,‘a+‘) as record,        open(‘d:\\users\\%s_money.txt‘ % login_user,‘a+‘)as f_money,        open(‘d:\\users\\goods.txt‘) as f_goods:
        while True:
            print(‘温馨提示:\nA.按a或者A选择购物!\nB.按b或者B选择查询记录!\nC.按q或者Q退出程序!‘)
            choose = input(‘请输入您的选择:‘).strip()
            if choose == ‘a‘ or choose == ‘A‘:
                good_dic = eval(f_goods.read())#把商品转换为内存里面的字典
                while True:
                    for index,i in enumerate(good_dic,1):
                        print(index,‘.\033[34m%s\033[0m \033[31m%s\033[0m‘%(i,good_dic[i]))
                    print(‘温馨提示:\n1.选择商品编号进行购买\n2.选择Q或者q退出商城‘)
                    choice = input(‘请选择您要购买的商品编号:‘).strip()
                    if choice.isdigit():
                        if int(choice) < len(good_dic.keys()):
                            gooded = list(good_dic.keys())[int(choice)-1]#获取编号对应的商品名称
                            f_money.seek(0)#(由于打开该文件的模式是a+所以需要跳转指针到开始位置)指定指针位置从0开始
                            moneys = int([i.strip() for i in list(f_money.readlines())][-1])#获取文件中的金额
                            if moneys >= int(good_dic[gooded]):
                                moneys -= int(good_dic[gooded])
                                record.write(‘您本次购买了价格为\033[31m%s\033[0m元的\033[34m%s\033[0m商品!当前总余额为\033[31m%s\033[0m元!‘%(good_dic[gooded],gooded,moneys))
                                record.write(‘\t日期:\033[34m%s\033[0m\n‘% time.strftime(‘%Y-%m-%d %H:%M:%S‘))
                                f_money.write(str(moneys)+‘\n‘)
                                print(‘购买成功!‘)
                                continue
                            else:
                                print(‘余额不足!‘)
                                continue
                        else:
                            print(‘out range!‘)
                            continue
                    elif choice == ‘q‘ or choice == ‘Q‘:
                        break
                    else:
                        print(‘Error!‘)
                        continue
            elif choose == ‘b‘ or choose == ‘B‘:
                record.seek(0)#(由于打开该文件的模式是a+所以需要跳转指针到开始位置)指定指针位置从0开始
                print(record.read())
                continue
            elif choose == ‘q‘ or choose == ‘Q‘:
                print(‘程序已退出!‘)
                break
            else:
                print(‘输入的格式有误!‘)
                continue
first_login()

注:该代码实现的功能是:用户登录,错误三次将锁定用户,正确则需要判断是否是第一次登陆,第一次登陆需要输入金额和创建金额文件,然后选择购物或者查看购物记录,下次登陆则不需要输入金额,接着上次余额进行继续使用。

时间: 2024-10-23 12:01:05

Python之作业购物车的相关文章

python练习_购物车(简版)

python练习_购物车(简版) 需求: 写一个python购物车可以输入用户初始化金额 可以打印商品,且用户输入编号,即可购买商品 购物时计算用户余额,是否可以购买物品 退出结算时打印购物小票 以下代码实现的功能与思路: 功能: (1)预算金额控制,只能输入大于0的数字 (2)商品格式化打印 (3)选择完成要买的商品后,提示用户再次确认,确认后开始计算用户余额是否大于等于商品价格,价格正确后则加入购物车 (4)输入q则进行结算,结算时将重复的商品进行合并,显示个数,并计算消费总额和余额 思路:

python第七天-作业[购物车]

作业要示: 购物车程序:启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表允许用户根据商品编号购买商品用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 可随时退出,退出时,打印已购买商品和余额在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买允许查询之前的消费记录 先上一下流程吧! 具体代码还在优化中>>> 完美 主义,伤不起

Python实战作业-day5

作业需求: 用户登录注册页面 首页.注册页面.登录页面:后端存储数据是mysql数据库 作业代码: 1 [email protected]~/reboot15/day5/homework$cat app.py 2 #!/usr/bin/env python 3 #coding:utf-8 4 ''' 5 作业需求: 6 基于mysql数据库实现用户登录模块,并实现针对于用户信息的增删改查 7 ''' 8 9 10 from flask import Flask,render_template,r

Python Day1 作业

作业二:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 FlowChart: 代码: #!usr/bin/env python # -*- coding:utf-8 -*- # Author: Wayne Zhong user = 'Wayne' pwd = '123465' f = open('status.txt') if f.read() == 'Y': for i in range(3): username = input('Input username:') pa

Python实战作业-day1

作业需求: 实现用户名密码登录验证 判断用户名密码是否正确,正确则打印欢迎信息,错误输出具体的错误原因信息 用户可以连续输入三次密码,超过三次则锁定用户 用户输入的密码位数必须超过6位 作业流程图: 作业代码: 1 #!/usr/bin/python 2 #coding:utf-8 3 4 5 import sys 6 7 count = 0 8 time = 0 9 10 11 while count < 3: 12 loginuser = raw_input("please input

python基础作业------模拟实现一个ATM + 购物商城程序

模拟实现一个ATM + 购物商城程序 作业需求: 额度 15000或自定义 实现购物商城,买东西加入 购物车,调用信用卡接口结账 可以提现,手续费5% 每月22号出账单,每月10号为还款日,过期未还,按欠款总额 万分之5 每日计息 支持多账户登录 支持账户间转账 记录每月日常消费流水 提供还款接口 ATM记录操作日志 提供管理接口,包括添加账户.用户额度,冻结账户等... 用户认证用装饰器 ## ATM信用卡购物模拟程序 ### 作者介绍: * author:高原 ### 功能介绍: 模拟实现一

python\函数作业

----------------------作业一 # 有两个列表,分别存放来老男孩报名学习linux和python课程的学生名字# linux=['钢弹','小壁虎','小虎比','alex','wupeiqi','yuanhao']# python=['dragon','钢弹','zhejiangF4','小虎比']## 问题一:得出既报名linux又报名python的学生列表# 问题二:得出只报名linux,而没有报名python的学生列表# 问题三:得出只报名python,而没有报名li

python实现简单购物车系统(练习)

#!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('computer',6000), ('girl_friend',2000), ('boy_friend',3000)] shop_lists = [] for i,v in enumerate(product_lists): #python的内置函数,在字典上是枚举,列举的意思,可以同事获得索引和值 print

python之编写购物车(第二天)

作业: 编写购物车具体实现了如下功能: 1.可购买的商品信息显示 2.显示购物车内的商品信息.数量.总金额 3.购物车内的商品数量进行增加.减少和商品的删除 4.用户余额的充值 5.用户购买完成进行结账,将最终余额回写到用户文件中.