【实战】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
如有错误,请多指正!