您现在的位置:首页 >> 资讯 >> 工程钻机

明星python零基础自学Python自

2025-02-18 来源:大蕉资讯

题目要求为了知道消费者季节性消费习惯,阿珍想要统计一月份卖得最好的明星产品,可是一个一个商品统计实在是很麻烦,这该怎么办呢?

聪明的阿珍想要的好办法,可以通过Python读取“2019年1月销售订单.xlsx”工作薄,获取“销售订单数据”工作表,计算得出工作表内每个商品当月的销售额

接着从所有商品销售额中,找到当月销售额最高的商品,最后输出销售额最高商品品和销售额。

例如:明星产品是:XXX,一月总共销售出XXX元

思路:1、 导入openpyxl模块

2、使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb

记得添加data_only=True参数打开工作簿,获取公式计算后的值

3、通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet,再定义一个空字典用来存储商品和其对应的销售额

4、遍历订单数据每一行,取出第3列的商品名并赋值给productName,判断获取到的productName是"商品名"时使用continue跳过本行

5、获取订单总价I列的索引,根据索引获取本行订单总价并赋值给变量price,判断当商品名还不在结果字典sellData中时给这个商品在sellData中设置初始值为0,将本行总价加到结果字典sellData对应商品名的销售额中

6、定义一个初始值为0的变量maxSold, 表示销售的最大值,定义一个空字符串变量maxName, 表示最大值的商品名

7、遍历结果字典sellData的键,也就是商品名,取出商品名对应的销售额赋值给变量productSold,判断当前商品销售额大于记录的最大销售额maxSold时将maxSold替换成新的最大销售额将maxName替换成新的最大销售额对应的商品名

8、按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元

提示:字典(dict)

为了方便统计,在这里我们使用一个字典(dict)来存储每个商品的销售总额。

存储的结构如下图所示,商品名作为键,销售额作为值来进行存储。

解析:Step.1导入openpyxl模块

# TODO 导入openpyxl模块

import openpyxl

Step.2使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb

记得添加data_only=True参数打开工作簿,获取公式计算后的值

# TODO 使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb

# TODO 记得添加data_only=True参数打开工作簿,获取公式计算后的值

wb = openpyxl.load_workbook("2019年1月销售订单.xlsx",data_only=True)

Step.3通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet,再定义一个空字典用来存储商品和其对应的销售额

# TODO 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheet

orderSheet = wb["销售订单数据"]

# TODO 定义一个空字典用来存储商品和其对应的销售额

sellData = {}

Step.4遍历订单数据每一行,取出第3列的商品名并赋值给productName,判断获取到的productName是"商品名"时使用continue跳过本行

# TODO 遍历订单数据每一行

for rowData in orderSheet.rows:

# TODO 取出第3列的商品名并赋值给productName

productName = rowData[2].value

# TODO 判断获取到的productName是"商品名"时

if productName == "商品名":

# TODO 使用continue跳过本行

continue

Step.5获取订单总价I列的索引,根据索引获取本行订单总价并赋值给变量price,判断当商品名还不在结果字典sellData中时给这个商品在sellData中设置初始值为0,将本行总价加到结果字典sellData对应商品名的销售额中

# TODO 获取订单总价I列的索引

priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1

# TODO 根据索引获取本行订单总价并赋值给变量price

price = rowData[priceIndex].value

# TODO 判断当商品名还不在结果字典sellData中时

if productName not in sellData.keys():

# TODO 给这个商品在sellData中设置初始值为0

sellData[productName] = 0

# TODO 将本行总价加到结果字典sellData对应商品名的销售额中

sellData[productName] = sellData[productName] + price

Step.6定义一个初始值为0的变量maxSold, 表示销售的最大值,定义一个空字符串变量maxName, 表示最大值的商品名

# TODO 定义一个初始值为0的变量maxSold, 表示销售的最大值

maxSold = 0

# TODO 定义一个空字符串变量maxName, 表示最大值的商品名

maxName = ""

Step.7遍历结果字典sellData的键,也就是商品名,取出商品名对应的销售额赋值给变量productSold,判断当前商品销售额大于记录的最大销售额maxSold时将maxSold替换成新的最大销售额将maxName替换成新的最大销售额对应的商品名

# TODO 遍历结果字典sellData的键,也就是商品名

for productName in sellData.keys():

# TODO 取出商品名对应的销售额赋值给变量productSold

productSold = sellData[productName]

# TODO 判断当前商品销售额大于记录的最大销售额maxSold时

if productSold > maxSold:

# TODO 将maxSold替换成新的最大销售额

maxSold = productSold

# TODO 将maxName替换成新的最大销售额对应的商品名

maxName = productName

Step.8按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元

# TODO 按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元

print(f"明星产品是:{maxName},一月总共销售出{maxSold}元")

完整代码:# TODO 导入openpyxl模块import openpyxl# TODO 使用openpyxl.load_workbook()函数读取"2019年1月销售订单.xlsx"工作簿并赋值给变量wb # TODO 记得添加data_only=True参数打开工作簿,获取公式计算后的值wb = openpyxl.load_workbook("2019年1月销售订单.xlsx",data_only=True)# TODO 通过工作簿对象wb获取名为“销售订单数据”的工作表对象,并赋值给变量orderSheetorderSheet = wb["销售订单数据"]# TODO 定义一个空字典用来存储商品和其对应的销售额sellData = {}# TODO 遍历订单数据每一行for rowData in orderSheet.rows:    # TODO 取出第3列的商品名并赋值给productName    productName = rowData[2].value        # TODO 判断获取到的productName是"商品名"时    if productName == "商品名":        # TODO 使用continue跳过本行        continue        # TODO 获取订单总价I列的索引    priceIndex = openpyxl.utils.cell.column_index_from_string("I") - 1    # TODO 根据索引获取本行订单总价并赋值给变量price    price = rowData[priceIndex].value        # TODO 判断当商品名还不在结果字典sellData中时    if productName not in sellData.keys():        # TODO 给这个商品在sellData中设置初始值为0        sellData[productName] = 0        # TODO 将本行总价加到结果字典sellData对应商品名的销售额中    sellData[productName] = sellData[productName] + price# TODO 定义一个初始值为0的变量maxSold, 表示销售的最大值maxSold = 0    # TODO 定义一个空字符串变量maxName, 表示最大值的商品名maxName = ""# TODO 遍历结果字典sellData的键,也就是商品名for productName in sellData.keys():    # TODO 取出商品名对应的销售额赋值给变量productSold    productSold = sellData[productName]        # TODO 判断当前商品销售额大于记录的最大销售额maxSold时    if productSold > maxSold:        # TODO 将maxSold替换成新的最大销售额        maxSold = productSold        # TODO 将maxName替换成新的最大销售额对应的商品名        maxName = productName# TODO 按格式输出结果: 明星产品是:{商品名},一月总共销售出{最大销售额}元print(f"明星产品是:{maxName},一月总共销售出{maxSold}元")

关注点赞收藏不迷路,私信共享学习资料,共同学习,共同进步。

医药卫生期刊官网

模型世界

海峡科技与产业

家庭生活指南期刊官网