1、判断用户是否有金额,没有要求用户输入;

2、显示商品列表,用户可以根据需求输入:商品编号、显示购物车、显示余额、结算等;

3、(1):输入free,显示用户剩余金额;

   (2):输入list,显示购物车列表;

   (3):输入all,进行结算;

结算:1、会判断用户购物车是否有商品,没有则退出;

 2、购物车有商品会提示用户是否购买:

Y或y:购买商品,显示花费和剩余;

N或n:退出,清空购物车,显示余额并退出。

其它输入:退出,清空购物车,显示余额并退出。

   (4):输入商品编号:

1、判断用户余额是否可以购买次商品,不能购买给出提示;

2、用户可以购买商品,要求用户输入购买数量,如果购买数量超过用户余额,给你不能购买提示。

3、用户余额可以购买对应商品,把商品加入购物车,并显示商品列表。

4、用户只有在输入all的时候,才能去购物车结算商品。


流程图如下:

wKiom1Y4XOHAYGu9AAMrfISwAss455.jpg


代码如下:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

__author__ = 'weibinf'

#定义空的购物列表:

cart = []

#查询用户余额

import os

def money():

    filename = r'C:\Users\Administrator\Desktop\money.txt'

    if os.path.exists(filename):

        m = open('C:\Users\Administrator\Desktop\money.txt','r')

        mon = m.readline()

        m.close()

        mon = int(mon)

        return mon

    else:

        exitt = False

        while not exitt:

            aa = raw_input("\033[31m请输入你的工资: \033[0m").strip()

            if aa.isdigit():

                mon = int(aa)

                exitt = True

            else:

                print "请输入正确的数字。。"

        return mon

#保存用户输入的余额

def free_money(x):

    a = open('C:\Users\Administrator\Desktop\money.txt','w')

    a.write('%s'%x)

    a.close()

#定义余额变量

wage = money()

wage1 = wage #定义总余额

shoping_money3 = 0 #定义用户总共消费

#定义商品列表:

shop = [

    ["iphone6s",5288],

    ["iphone6s plus",6088],

    ["mac book",8888],

    ["apple",5],

    ["乐视1S",1099]

]

#循环显示购物信息:

while True:

    #打印出商品列表和价格:

    for index,p in enumerate(shop):

        print index,p[0],p[1]

    #获取用户输入:

    shoping = raw_input("\033[31m请输入商品编号,结算请输入all,显示购物车请输入:list,显示余额请输入:free : \033[0m").strip()

    #判断用户输入是否合法

    if shoping.isdigit():

        shoping = int(shoping)

        shoping_money = shop[shoping][1]

        if shoping_money < wage: #判断用户是否可以购买

            while True:

                num = raw_input("请输入购买数量: ").strip()

                if not num.isdigit():

                    print "\033[31m请正确输入商品数量。。\033[0m"

                else:

                    num = int(num)

                    if num == 0:

                        break

                    else:

                        shoping_money2 = shoping_money * num #判断商品数量的价钱

                        if shoping_money2 < wage:   #判断用户是否可以购买

                            cart.append(shop[shoping][0])  #把商品名称添加到购物车

                            cart.append(num)    #把商品数量添加到购物车

                            print "\033[31m您的商品已经加入购物车 %s 数量:%s \033[0m"%(shop[shoping][0],num)

                            wage = wage - shoping_money2   #算出用户剩余金额

                            shoping_money3 +=shoping_money2   #算出用户总消费金额

                            break

                        else:

                            print "\033[31m你的工资买不起%s个%s \033[0m"%(num,shop[shoping][0])

                            break

        elif shoping_money > wage: #商品不能购买的提示

            print "\033[31m你的工资还买不起此商品: %s\033[0m" %shop[shoping][0]

        else:   #商品不能购买的提示

            print "\033[31m你的工资太少了,还是去努力赚钱吧。。\033[0m"

            break

    elif shoping == "list":  #显示购物列表

        print "\033[31m----------shopping list----------\033[0m"

        num = 0

        aa = len(cart)

        bb = aa / 2

        for x in range(bb):

            print cart[num],"\033[31m数量:\033[0m",cart[num+1]

            num+=2

        print "\033[31m---------------------------------\033[0m"

    elif shoping == "free":   #显示剩余金额

        if not len(cart):

            print "\033[31m你还没有购物,剩余:%s\033[0m" %wage

        else:

            print "\033[31m你一共花费:%s,剩余:%s\033[0m"%(shoping_money3,wage)

    elif shoping == "all": #用户结算

        if not len(cart): #判断购物车是否为空

            print "\033[31m你的购物车为空,不需要结算。。\033[0m"

            free_money(wage)

            break

        else: #购物车不为空,显示购物列表和购买商品数量

            print "\033[31m----------shopping list----------\033[0m"

            num = 0

            aa = len(cart)

            bb = aa / 2

            for x in range(bb):

                print cart[num],"\033[31m数量:\033[0m",cart[num+1]

                num+=2

            print "\033[31m---------------------------------\033[0m"

            gm = raw_input("\033[31m是否确认购买:Y or N  \033[0m ").strip()   #判断用户是否购买商品

            if gm == "N" or gm == "n":   #用户不购买

                print "你没有购买任何商品,剩余:\033[31m%s\033[0m"%wage1

                free_money(wage1)

                break

            elif gm == "y" or gm == "Y":   #用户购买

                print "你一共花费\033[31m%s\033[0m还剩下\033[31m%s\033[0m"%(shoping_money3,wage)

                free_money(wage)

                break

            else:  #错误输入,默认用户不购买

                print "你输入的不正确,没有购买任何商品,剩余:\033[31m%s\033[0m"%wage1

                free_money(wage1)

                break