广告
返回顶部
首页 > 资讯 > 后端开发 > Python >用Python实现等级划分
  • 525
分享到

用Python实现等级划分

2024-04-02 19:04:59 525人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录等级划分新建等级销售表文件夹确定等级数量拆分数据并保存工作簿 总结 我们要开始学习如何做等级划分啦。要实现这一功能,还得学习 5 个新的知识点,分别是os.path.e

我们要开始学习如何做等级划分啦。要实现这一功能,还得学习 5 个新的知识点,分别是os.path.exists()os.mkdir()、算术运算符 //%cn2an.an2cn()

在这一个功能中,我们需要将【销售总表.xlsx】按照销售排名拆分成【等级x销售表.xlsx】,并放置在【等级销售表】文件夹中,其中以120人为一个等级。

根据项目概述中对等级划分功能的描述,可以总结成以下 3 个小步骤,他们分别是:

1)新建一个【等级销售表】文件夹,用于存放生成的【等级x销售表.xlsx】;
2)将【销售总表.xlsx】按照“销售排名”列进行拆分,每 120 人为一个等级,确定等级数量;
3)根据等级数量新建相应数量的工作簿,从等级一开始往后排,写入各个等级的人员销售与排名数据,并保存为【等级x销售表.xlsx】,x 为对应的等级。

等级划分

新建等级销售表文件夹

划分等级之后,不可避免地会出现多个新的工作簿,如果仍和【销售总表.xlsx】以及【销售数据】文件夹存放在同一目录下,会导致查找文件不便。

为了更好地归纳文件,在拆分之前可以先建立一个文件夹用于存放新的工作簿,这里就需要用到os.path.exists()os.mkdir()这两个新知识点。

exists 是“存在”的意思,os.path.exists() 顾名思义是用于判断路径是否存在,括号内写的是文件/文件夹的路径,若路径存在,返回 True,若不存在,则返回 False。

import os
 
# 当前目录下存在test文件夹
print(os.path.exists('./test/'))
 
# 当前目录下不存在test_new文件夹
print(os.path.exists('./test_new/'))

因为【test】文件夹存在,所以会打印 True,而【test_new】文件夹不存在,会打印False。

这个时候如果想要新建一个文件夹,就得用到os.mkdir()

dir 是“目录/路径”的意思,故 os.mkdir() 是用于创建目录/路径,os.path.exists()os.mkdir()这两个知识点经常结合着使用。

仍然以上面的情景为例,如果【test_new】文件夹不存在,则新建【test_new】文件夹,代码可以这么写:

import os
 
# 判断是否存在文件夹
path = './test_new/'
if not os.path.exists(path):
    # 新建文件夹
    os.mkdir(path)

 我们可以看到【static3】文件夹中多了一个【test_new】文件夹。

回到项目本身,如果我们要创建“等级销售表”文件夹,代码应该怎么写呢?

import os
 
path = './等级销售表/'
 
# 判断是否存在文件夹'./等级销售表/',若不存在,则新建'./等级销售表/'
if  not os.path.exists(path):
 
    os.mkdir(path)

确定等级数量

根据康明的需求,每 120 人会划分为一个等级。所以第一步我们要先确定总人数有多少,换个角度思考,其实就是要知道我们前面一直在用的列表 total_rows 有多长。

关于列表的长度,我们可以用len(list)求得。

确定了总人数,接下来还需要结合运算的结果确定具体需要拆分成几个等级,因此在运算的时候需要用到算术运算符 // 和 % 。

// 用于返回除除法式子的商,可以理解为取整除。

% 则用于返回除法式子的余数,即取模

来串代码看看

print('商:', 10 // 3)
print('余数:', 10 % 3)

10 除以 3,得到的商是 3,余数是 1,刚好与代码结果相符。

下面我们取 total_rows 中的前 10 项数据为例进行拆分,每 4 项分为一个等级,

cut = 4
 
# 取出在汇总排序功能中最后得到的total_rows的一小部分数据
total_rows = [['陈洁', '销售七组', 10393, 815, 2993, 971, 1833, 889, 1128, 8629, 1], ['刘波', '销售七组', 10133, 1496, 2667, 774, 1924, 315, 1142, 8318, 2], ['陈涛', '销售六组', 10140, 1481, 2267, 568, 1989, 1236, 741, 8282, 3], ['张华', '销售二组', 10212, 1395, 2908, 490, 1485, 1149, 837, 8264, 4], ['陈伟', 
'销售八组', 10427, 1289, 2828, 502, 1279, 1354, 972, 8224, 5], ['李冬梅', '销售六组', 10195, 326, 2946, 886, 1963, 1309, 657, 8087, 6], ['杨秀兰', '销售五组', 10371, 509, 2715, 992, 1394, 1301, 1174, 8085, 7], ['杨林', '销售四组', 10063, 862, 2766, 799, 1611, 964, 1077, 8079, 8], ['李波', '销售一组', 10044, 1380, 2995, 886, 946, 1468, 327, 8002, 9], ['李雪梅', '销售二组', 10078, 1099, 2448, 760, 1574, 1215, 889, 7985, 10]]
 
# 计算等级数量,先整除,得到至少需要拆分的等级数量nums
nums = len(total_rows) // cut
 
# 如果余数不为0,则等级数量nums+1,得到最终需要的等级数量
if len(total_rows) % cut != 0:
    nums += 1
print(nums)

在上面的代码中,第 8 行是先整除计算出等级数量,第 11 到13 行,则是用于判断计算数量等级的时候是否能整除,即余数是否为 0 。如果余数不为 0 ,则等级数量加 1 ,即可得到最终需要的数量等级。

拆分数据并保存工作簿

明确了等级数量,下面开始新建工作簿,写入表头信息,遍历 total_rows 列表,但有一个新的问题,如何实现每 120 人就拆分成一个等级呢?

其实不难,就是做切片,

# 拆分为3个等级
nums = 3
# 每4项为一个等级
cut = 4
# 定义列表
list_info = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 通过遍历拆分成了3个列表
for i in range(nums):
    # 限定了每个列表最多有cut项
    print(list_info[i*cut:(i+1)*cut])

这里第 10 行之所以乘以 cut,是因为我们想以每 4 项切分为一个等级,保证了每一次切片得到的列表最多是 4 项,list_info[i * cut: (i + 1) * cut]分别取到了list_info[0:4]list_info[4:8]list_info[8:12],因为 list_info 只有 10 项,最多到list_info[9],因此list_info[8:12]实际上就只是取到 list_info 列表的最后两项,得到最后一个等级列表。

回到项目中,我们做一个练习,依旧取前面用的 total_rows 列表的前 10 项,每 4 项拆分为一个等级并写进新工作表,

from openpyxl import Workbook
# 每4项拆分为一个等级
cut = 4
# 总共拆成3个等级
nums = 3
 
# 取出在汇总排序功能中最后得到的total_rows的一小部分数据
total_rows = [['陈洁', '销售七组', 10393, 815, 2993, 971, 1833, 889, 1128, 8629, 1], ['刘波', '销售七组', 10133, 1496, 2667, 774, 1924, 315, 1142, 8318, 2], ['陈涛', '销售六组', 10140, 1481, 2267, 568, 1989, 1236, 741, 8282, 3], ['张华', '销售二组', 10212, 1395, 2908, 490, 1485, 1149, 837, 8264, 4], ['陈伟', 
'销售八组', 10427, 1289, 2828, 502, 1279, 1354, 972, 8224, 5], ['李冬梅', '销售六组', 10195, 326, 2946, 886, 1963, 1309, 657, 8087, 6], ['杨秀兰', '销售五组', 10371, 509, 2715, 992, 1394, 1301, 1174, 8085, 7], ['杨林', '销售四组', 10063, 862, 2766, 799, 1611, 964, 1077, 8079, 8], ['李波', '销售一组', 10044, 1380, 2995, 886, 946, 1468, 327, 8002, 9], ['李雪梅', '销售二组', 10078, 1099, 2448, 760, 1574, 1215, 889, 7985, 10]]
 
# 按等级数量,拆分等级表
for num in range(nums):
    # 新建工作表
    new_wb = Workbook()
    new_sheet = new_wb.active
 
    # 写入表头
    new_sheet.append(['姓名', '销售小组', '工号', '牛奶/瓶', '矿泉水/瓶', '果蔬汁/瓶', '汽水/瓶', '茶饮料/瓶', '咖啡/瓶', '总计/瓶', '销售排名'])
 
    # 写入数据
    for row in total_rows[num*cut:(num+1)*cut]:
        new_sheet.append(row)
    # 保存等级表
    new_wb.save('等级{}销售表.xlsx'.fORMat(num + 1))

 因为我们每次都提取出来 4 个人的销售数据,每个人的销售数据是一个单独的列表,所以按上面示例第 21 行代码切片得到的实际结果如下所示:

[['陈洁', '销售七组', 10393, 815, 2993, 971, 1833, 889, 1128, 8629, 1], ['刘波', '销售七组', 10133, 1496, 2667, 774, 1924, 315, 1142, 8318, 2], ['陈涛', '销售六组', 10140, 1481, 2267, 568, 1989, 1236, 741, 8282, 3], ['张华', '销售二组', 10212, 1395, 2908, 490, 1485, 1149, 837, 8264, 4]]
 
[['陈伟', '销售八组', 10427, 1289, 2828, 502, 1279, 1354, 972, 8224, 5], ['李冬梅', '销售六组', 10195, 326, 2946, 886, 1963, 1309, 657, 8087, 6], ['杨秀兰', '销售五组', 10371, 509, 2715, 992, 1394, 1301, 1174, 8085, 7], ['杨林', '销售四组', 10063, 862, 2766, 799, 1611, 964, 1077, 8079, 8]]
 
[['李波', '销售一组', 10044, 1380, 2995, 886, 946, 1468, 327, 8002, 9], ['李雪梅', '销售二组', 10078, 1099, 2448, 760, 1574, 1215, 889, 7985, 10]]

嵌套的列表并不适合写进新工作表,第 20-22 行增加遍历是为了获取到每个人单独的销售数据也就是单独的小列表,然后再写进新工作表。

最后用 num+1 是因为我们要从等级1开始往后排,而不是从等级 0 开始。

重新看一下,康明在保存为【等级x销售表.xlsx】的时候,x 用的是中文数字,而不是我们项目中的阿拉伯数字。因此引出我们要学习的一个最后一个新知识点——cn2an.an2cn(),这个用法是很容易的。

在电脑本地运行的时候需要提前安装 cn2an 模块。我们使用pip在cmd/终端中进行安装。

# windows系统:
pip install cn2an
# Mac系统:
pip3 install cn2an
import cn2an
 
num1 = 101
num2 = '三百六十九'
 
# 将num1转成中文数字
num1_new = cn2an.an2cn(num1)
# 讲num2转成阿拉伯数字
num2_new = cn2an.cn2an(num2)
 
print(num1_new)
print(num2_new)

可以看到 101 转换成了“一百零一”,”三百六十九”转换成了 369。因此在项目中要想把【等级x销售表.xlsx】中的x换成中文数字,其实就是把保存文件夹代码中的 num+1 先用 cn2an.an2cn() 做转换。

 总结

以上,就是功能二的相关知识点,让我们来用思维导图来总结一下吧。

到此这篇关于用python实现等级划分的文章就介绍到这了,更多相关Python等级划分内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 用Python实现等级划分

本文链接: https://www.lsjlt.com/news/139361.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 用Python实现等级划分
    目录等级划分新建等级销售表文件夹确定等级数量拆分数据并保存工作簿 总结 我们要开始学习如何做等级划分啦。要实现这一功能,还得学习 5 个新的知识点,分别是os.path.e...
    99+
    2022-11-13
  • 怎么在mysql中利用case划分成绩等级
    这篇文章给大家介绍怎么在mysql中利用case划分成绩等级,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。CASE的简单函数使用简便,但无法应对较为复杂的场景,这就需要用到条件表达式了,其语法结构如下:CASEWHEN...
    99+
    2023-06-14
  • 阿里云服务器推广等级划分及详细介绍
    阿里云服务器是阿里集团推出的一款高性能、高可靠、低成本的云计算产品。本文主要介绍阿里云服务器推广等级的划分及其详细介绍,帮助用户更好地理解和选择适合自己需求的阿里云服务器。 一、阿里云服务器推广等级划分阿里云服务器的推广等级主要分为以下几种...
    99+
    2023-11-10
    阿里 详细介绍 等级
  • css如何实现等比例分割父级容器
    这篇文章主要为大家展示了css如何实现等比例分割父级容器,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“css如何实现等比例分割父级容器”这篇文章吧。父级容器的宽度一定,要实现子元素等比例完美均分父...
    99+
    2023-06-08
  • 阿里云服务器等级划分了解服务器性能的必备指南
    阿里云服务器等级划分是了解服务器性能的重要参考。本文将深入探讨阿里云服务器的等级划分,并提供相应的性能指标和使用建议。 阿里云服务器等级划分是根据服务器性能、网络带宽和存储容量等特性,将阿里云服务器划分为不同的等级。这些等级可以根据用户的实...
    99+
    2023-11-03
    服务器 阿里 等级
  • python决策树预测学生成绩等级实现详情
    目录1.数据准备1.1 引入头文件1.2 把student_1.csv数据拖入代码的同一文件夹下,同时读取文件中的数据1.3 特征选取2.数据处理2.1 对G1、G2、G3处理2.2...
    99+
    2022-11-10
  • python分析实现微信钉钉等软件多开分身
    目前很多软件都限制单实例,大多数软件都是用Mutex来实现的 而这个东西咱们可以用handle去干掉它,并且不影响使用。 钉钉也是一样的步骤 不过Mutex的名字不一样 我测试的钉钉...
    99+
    2022-11-13
  • C++实现LeetCode(86.划分链表)
    [LeetCode] 86.Partition List 划分链表 Given a linked list and a value x, partition it such...
    99+
    2022-11-12
  • 怎么用Python实现等差数列
    今天小编给大家分享一下怎么用Python实现等差数列的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Python实现等差数列d...
    99+
    2023-07-04
  • Python实现线性规划求解
    线性规划标准形式:MATLAB-------------线性规划求解主要分  两个部分,目标函数(max,min)和约束条件(s.t.),求解时一般要化为MATLAB标准形式:求解用到的模块(scipy 和  numpy...
    99+
    2023-06-02
  • Python利用pynput实现划词复制功能
    目录前言实现代码知识点补充1.pynput是什么2.使用步骤前言 本文参考了以下代码 Windows系统环境下Python脚本实现全局“划词复制”功能 fro...
    99+
    2022-11-10
  • AmazeUI如何实现等分网格
    这篇文章给大家分享的是有关AmazeUI如何实现等分网格的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。AmazeUI 等分网格的实现示例,具体如下:<!doctype html><ht...
    99+
    2023-06-09
  • 用Python实现的等差数列方式
    目录Python实现等差数列python等差数列生成器使用itertools模块生成等差数列总结Python实现等差数列 def arithemtic_sequence_based...
    99+
    2022-12-16
    Python等差数列 等差数列 Python实现等差数列
  • Python+PuLP怎么实现线性规划
    今天小编给大家分享一下Python+PuLP怎么实现线性规划的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.PuLP 库的...
    99+
    2023-06-30
  • Python中怎么实现线性规划
    这篇文章给大家介绍Python中怎么实现线性规划,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 运筹学运筹学是一种科学的决策方法,它通常是在需要分配稀缺资源的条件下,寻求系统的优秀设计。科学的决策方法需要使用...
    99+
    2023-06-16
  • python中如何实现线性规划
    python中如何实现线性规划,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。说明图解法,用几何绘图的方法,求出最优解。中学就讲过这种方法,在经济学研究中非常常用...
    99+
    2023-06-20
  • PHP怎么实现划分字母区间
    本篇内容介绍了“PHP怎么实现划分字母区间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字符串S由小写字母组成。我们要把这个字符串划分为尽可...
    99+
    2023-06-20
  • python怎么实现微信钉钉等软件多开分身
    今天小编给大家分享一下python怎么实现微信钉钉等软件多开分身的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。目前很多软件都...
    99+
    2023-06-29
  • C语言如何实现成绩等级判别
    目录如何实现成绩等级判别看实例源代码演示用C语言解决成绩评定问题首先先看“笨方法”下面是较为简单的switch语句如何实现成绩等级判别 看实例 C语言实现按照...
    99+
    2022-11-13
    C语言成绩等级 成绩等级判别 判别成绩等级
  • 利用Python判断你的密码难度等级
    前言 密码是个很私密的东西它一直关联着一系列的机密事物,二战中密码起了很大的作用。在我们生活中尤其是现在我们手机上存在着许多的app是我们生活不可或缺的,在登陆账号时我们是少不了输入...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作