# -*- coding: utf-8 -*-
"""
              ┏┓      ┏┓
            ┏┛┻━━━┛┻┓
            ┃      ☃      ┃
            ┃  ┳┛  ┗┳  ┃
            ┃      ┻      ┃
            ┗━┓      ┏━┛
                ┃      ┗━━━┓
                ┃  神兽保佑    ┣┓
                ┃ 永无BUG!   ┏┛
                ┗┓┓┏━┳┓┏┛
                  ┃┫┫  ┃┫┫
                  ┗┻┛  ┗┻┛
"""
#功能选择1.注册2.登入3.购物车4.充值5.支付
#商品列表需要是以下形式的列表['序号:商品名称:价格']
#许先创建一个login.txt文件
#可以往shop_list列表中添加商品
shop_list=['1:电脑:5000','2:手机:3000','3:衣服:1000','4:鞋子:500','5:零食:100','6:玩具:50','7:水果:50']
import os
def login():
    '''用户名和密码的注册'''
    username=input('请输入用户名>>>:').strip()
    userpwd=input('请输入密码>>>:').strip()
    with open(r'login.txt','a+t',encoding='utf-8')as f:
        for line in f:
            res=line.strip('\n').split(':')
            if res[0]==username:
                print('用户名已注册过')
                break
        else:
            f.write('%s:%s\n'%(username,userpwd))
            print('注册成功')
    f.close()
    return username
def enter():
    '''用户的登入认证'''
    username = input('请输入用户名>>>:').strip()
    userpwd = input('请输入密码>>>:').strip()
    with open(r'login.txt', 'r+', encoding='utf-8')as f:
        for line in f:
            res=line.strip('\n').split(':')
            if res[0]==username and res[1]==userpwd:
                print('登入成功')
                break
        else:
            print('用户名还没注册')
    f.close()
    return username

def shop():
    '''选择商品和数量,加入新列表中'''
    commodity_list=[]
    while True:
        print('0:退出')
        for commodity in shop_list:
            print(commodity)
        input_number = input('请选择商品号码>>>:').strip()
        if int(input_number) not in range(0, len(shop_list)+1):
            print('选择错误')
        ':
            break
        else:
            shop_count = input('请选择商品数量>>>:').strip()
            print()
            for commodity in shop_list:
                commodity_number,commodity_name,commodity_price=commodity.split(':')
                if input_number==commodity_number:
                    commodity_list.append('%s:数量:%s'%(commodity_name,shop_count))
            print(commodity_list)
    return commodity_list

def price(commodity_list):
    '''计算购物商品总价'''
    total_price=0
    for commodity in shop_list:
        for buy in commodity_list:
            commodity_number, commodity_name, commodity_price = commodity.split(':')
            buy_name,buy_none,buy_count=buy.split(':')
            if commodity_name==buy_name:
                total_price+=int(buy_count)*int(commodity_price)
    print(commodity_list)
    print('商品总价:%s'%total_price)
    return total_price

def recharge(username_enter):
    '''给账户充值'''
    if username_enter==False:
        print('你还没有登入')
    else:
        money=input('请输入你要充值的金额>>>:').strip()
        with open(r'login.txt','r',encoding='utf-8')as f_1,\
            open(r'.login.temp.txt','w',encoding='utf-8')as f_2:
            for line in f_1:
                res=line.strip('\n').split(':')
                if res[0]==username_enter:
                    f_2.write('%s:%s:%s\n'%(res[0],res[1],money))
                    print('充值成功,你充值的金额是%s' % money)
                else:
                    f_2.write('%s\n'%line.strip('\n'))
        os.remove('login.txt')
        os.rename('.login.temp.txt','login.txt')
        f_1.close()
        f_2.close()
        return money

def pay(total_price,username_enter):
    '''支付功能,把充值的钱减去选购商品总价,最后显示余额'''
    remaining_sum=0
    if username_enter==False:
        print('你还没有登入')
    else:
        with open(r'login.txt','r',encoding='utf-8')as f_1,\
            open(r'.login.temp.txt','w',encoding='utf-8')as f_2:
            for line in f_1:
                res=line.strip('\n').split(':')
                if res[0]==username_enter and len(res)<3:
                    print('你的账户还没充值')
                if res[0]==username_enter and len(res)==3:
                    remaining_sum=int(res[2])-int(total_price)#remaining_sum拿到余额
                    f_2.write('%s:%s:%s\n'%(res[0],res[1],remaining_sum))
                    print('付款成功,还剩余额:%s' % remaining_sum)
                else:
                    f_2.write('%s'%line)
        os.remove('login.txt')
        os.rename('.login.temp.txt', 'login.txt')
        f_1.close()
        f_2.close()
        return remaining_sum

username_enter=False
username_login=False
total_price=False
money=False
while True:
    print('''
    功能选择:
    0.退出
    1.注册
    2.登入
    3.购物
    4.充值
    5.支付
    ''')
    num=input('请输入序号>>>:').strip()
    ':break
    ':
        username_login=login()#拿到返回值:注册成功的用户名
    ':
        username_enter=enter()#拿到返回值:登入成功的用户名
    ':
        commodity_list=shop()#拿到返回值:选购商品列表
        total_price=price(commodity_list)#拿到返回值:选购商品的总价
    ':
        money=recharge(username_enter)#拿到返回值:拿到充值的金额
    ':
        pay(total_price,username_enter)
    else:
        print('序号选择错误')

python简单购物车改进版的更多相关文章

  1. Python 简单购物车

    product_list =[ ('huawei',3000), ('hongmiNote3',3000), ('sanxing',2600), ('ThinkPad870',15000), ('Ip ...

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

    #!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('comput ...

  3. Python实例---简单购物车Demo

    简单购物车Demo # version: python3.2.5 # author: 'FTL1012' # time: 2017/12/7 09:16 product_list = ( ['Java ...

  4. 简单购物车程序(Python)

    #简单购物车程序:money_all=0tag=Trueshop_car=[]shop_info={'apple':10,'tesla':100000,'mac':3000,'lenovo':3000 ...

  5. 用Python实现简单购物车

    作业二:简单购物车# 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,# 如果输入为空或其他非法输入则要求用户重新输入 shopping_list = [] w ...

  6. python 简单搭建非阻塞式单进程,select模式,epoll模式服务

    由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 可以看我的上篇文章 <python 简单搭建阻塞式单进程,多进程, ...

  7. python 简单搭建阻塞式单进程,多进程,多线程服务

    由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 :  --> 点击这里 我们可以通过这样子的方式去理解apache的工作原理 1 单进程TCP服 ...

  8. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  9. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

随机推荐

  1. java学习之—队列

    /** * 队列 * Create by Administrator * 2018/6/11 0011 * 下午 3:27 **/ public class Queue { private int m ...

  2. jenkins的 git多分支自动构建

    一.先做好jenkins和gitlab的webhook自动构建 二.选择哪个分支(我这是test分支) 三.选择build Triggers 四.过滤test分支 五.保存即可

  3. layui 提交表格不验证

    form.on('submit(filter_save)', function (data) { 后面查找发现是提交按钮要放在form里面

  4. faster rcnn讲解很细

    https://blog.csdn.net/bailufeiyan/article/details/50749694 https://www.cnblogs.com/dudumiaomiao/p/65 ...

  5. codeforces498C

    Array and Operations CodeForces - 498C You have written on a piece of paper an array of n positive i ...

  6. 【数学建模】day09-聚类分析

    0. 多元分析之聚类分析. 聚类分析是一种定量方法,从数据的角度,对样本或指标进行分类,进而进行更好的分析. 分为Q型聚类和R型聚类. 1. Q型聚类分析是对样本进行分类.有若干样本,我们把这些样本分 ...

  7. django CBV视图源码分析

    典型FBV视图例子 url路由系统 from django.conf.urls import url from django.contrib import admin from luffycity.v ...

  8. Python介绍及环境配置

    Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有 ...

  9. HYSBZ1036-树链剖分-点权

    树链剖分,点权,单点更改,路径查询.学树链剖分下面这个博文不错 http://blog.csdn.net/y990041769/article/details/40348013 线段树必须写的很熟练才 ...

  10. Codeforces963C Frequency of String 【字符串】【AC自动机】

    题目大意: 给一个串s和很多模式串,对每个模式串求s的一个最短的子串使得这个子串中包含至少k个该模式串. 题目分析: 均摊分析,有sqrt(n)种长度不同的模式串,所以有关的串只有msqrt(n)种. ...