目录
一、分析
二、代码
一、分析
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
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
如有错误,请多指正!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)