【实战】python 小型商品销售统计系统

目录

一、分析

二、代码


一、分析

1、首先定义一个空列表,防止在循环定义列表,导致列表重置

list = []

 2、因为要进行循环输入商品信息,所以要用while Ture进行循环,用break终止循环

while True:
    break

3、进行输入商品信息,防止输入为空值,所以要进行一次循环判断:

name = input('请输入商品名称:')
    while name == '':
        name = input('禁止为空,请重新输入:')

4、当完整的输入一次商品信息时,要将其赋值到字典

dict = {'商品名称': name, '价格': price, '销量': quantity, '成本': cost}

5、 如果输入多次字典,需要将其添加到列表中,用到append()方法

list.append(dict)

6、 当终止循环的时候,需要进行判断,返回break,终止循环

a = input('是否继续(1:是;2:否)')
if a == str(2):
    break

7、 按照销售额和成本进行排序:

        1.如果列表长度为1,直接输出

if len(list) == 1:
     print('按照销售额排序:', list)
     print('按照利润排序:', list)

        2.如果列表长度不为1,进行排序,用到sort()方法

else:
     list.sort(key=lambda x: (int(x['价格']) * int(x['销量'])), reverse=True)
     print('按照销售额排序:', list)
     list.sort(key=lambda x: (int(x['成本']) * int(x['销量'])), reverse=True)
     print('按照成本排序:', list)
例:list.sort(key=lambda x: (x['成本'], x['销量']))# 先按照成本排序,再按照销量排序

lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列表中的一个元素,在这里,表示一个字典,x只是临时起的一个名字,你可以使用任意的名字;x['成本']表示字典里的成本的value;所以这句命令的意思就是按照列表中第一个元素排序 

上面代码是按照乘积进行排序,字典的value是str类型,所以需要进行转换,才能进行乘积

reverse = True #降序排序

二、代码

list = []
while True:
    name = input('请输入商品名称:')
    while name == '':
        name = input('禁止为空,请重新输入:')
    price = input('请输入商品价格:')
    while price == '':
        price = input('禁止为空,请重新输入:')
    quantity = input('请输入商品销量:')
    while quantity == '':
        quantity = input('禁止为空,请重新输入:')
    cost = input('请输入商品成本:')
    while cost == '':
        cost = input('禁止为空,请重新输入:')
    dict = {'商品名称': name, '价格': price, '销量': quantity, '成本': cost}
    list.append(dict)
    a = input('是否继续(1:是;2:否)')
    if a == str(2):
        if len(list) == 1:
            print('按照销售额排序:', list)
            print('按照利润排序:', list)
        else:
            list.sort(key=lambda x: (int(x['价格']) * int(x['销量'])), reverse=True)
            # sort(key=lambda x: (x['成本'], x['销量']))# 先按照成本排序,再按照销量排序
            # reverse = True #降序排序
            print('按照销售额排序:', list)
            list.sort(key=lambda x: (int(x['成本']) * int(x['销量'])), reverse=True)
            print('按照成本排序:', list)
        break

如有错误,请多指正!