亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用Python實現(xiàn)等級劃分

 更新時間:2022年02月16日 09:46:35   作者:mez_Blog  
大家好,本篇文章主要講的是用Python實現(xiàn)等級劃分,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

我們要開始學習如何做等級劃分啦。要實現(xiàn)這一功能,還得學習 5 個新的知識點,分別是os.path.exists()、os.mkdir()、算術(shù)運算符 // 、%cn2an.an2cn()

在這一個功能中,我們需要將【銷售總表.xlsx】按照銷售排名拆分成【等級x銷售表.xlsx】,并放置在【等級銷售表】文件夾中,其中以120人為一個等級。

根據(jù)項目概述中對等級劃分功能的描述,可以總結(jié)成以下 3 個小步驟,他們分別是:

1)新建一個【等級銷售表】文件夾,用于存放生成的【等級x銷售表.xlsx】;
2)將【銷售總表.xlsx】按照“銷售排名”列進行拆分,每 120 人為一個等級,確定等級數(shù)量;
3)根據(jù)等級數(shù)量新建相應(yīng)數(shù)量的工作簿,從等級一開始往后排,寫入各個等級的人員銷售與排名數(shù)據(jù),并保存為【等級x銷售表.xlsx】,x 為對應(yīng)的等級。

等級劃分

新建等級銷售表文件夾

劃分等級之后,不可避免地會出現(xiàn)多個新的工作簿,如果仍和【銷售總表.xlsx】以及【銷售數(shù)據(jù)】文件夾存放在同一目錄下,會導(dǎo)致查找文件不便。

為了更好地歸納文件,在拆分之前可以先建立一個文件夾用于存放新的工作簿,這里就需要用到os.path.exists()os.mkdir()這兩個新知識點。

exists 是“存在”的意思,os.path.exists() 顧名思義是用于判斷路徑是否存在,括號內(nèi)寫的是文件/文件夾的路徑,若路徑存在,返回 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() 是用于創(chuàng)建目錄/路徑,os.path.exists()os.mkdir()這兩個知識點經(jīng)常結(jié)合著使用。

仍然以上面的情景為例,如果【test_new】文件夾不存在,則新建【test_new】文件夾,代碼可以這么寫:

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

 我們可以看到【static3】文件夾中多了一個【test_new】文件夾。

回到項目本身,如果我們要創(chuàng)建“等級銷售表”文件夾,代碼應(yīng)該怎么寫呢?

import os
 
path = './等級銷售表/'
 
# 判斷是否存在文件夾'./等級銷售表/',若不存在,則新建'./等級銷售表/'
if  not os.path.exists(path):
 
    os.mkdir(path)

確定等級數(shù)量

根據(jù)康明的需求,每 120 人會劃分為一個等級。所以第一步我們要先確定總?cè)藬?shù)有多少,換個角度思考,其實就是要知道我們前面一直在用的列表 total_rows 有多長。

關(guān)于列表的長度,我們可以用len(list)求得。

確定了總?cè)藬?shù),接下來還需要結(jié)合運算的結(jié)果確定具體需要拆分成幾個等級,因此在運算的時候需要用到算術(shù)運算符 // 和 % 。

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

% 則用于返回除法式子的余數(shù),即取模

來串代碼看看

print('商:', 10 // 3)
print('余數(shù):', 10 % 3)

10 除以 3,得到的商是 3,余數(shù)是 1,剛好與代碼結(jié)果相符。

下面我們?nèi)?total_rows 中的前 10 項數(shù)據(jù)為例進行拆分,每 4 項分為一個等級,

cut = 4
 
# 取出在匯總排序功能中最后得到的total_rows的一小部分數(shù)據(jù)
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]]
 
# 計算等級數(shù)量,先整除,得到至少需要拆分的等級數(shù)量nums
nums = len(total_rows) // cut
 
# 如果余數(shù)不為0,則等級數(shù)量nums+1,得到最終需要的等級數(shù)量
if len(total_rows) % cut != 0:
    nums += 1
print(nums)

在上面的代碼中,第 8 行是先整除計算出等級數(shù)量,第 11 到13 行,則是用于判斷計算數(shù)量等級的時候是否能整除,即余數(shù)是否為 0 。如果余數(shù)不為 0 ,則等級數(shù)量加 1 ,即可得到最終需要的數(shù)量等級。

拆分數(shù)據(jù)并保存工作簿

明確了等級數(shù)量,下面開始新建工作簿,寫入表頭信息,遍歷 total_rows 列表,但有一個新的問題,如何實現(xiàn)每 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的一小部分數(shù)據(jù)
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]]
 
# 按等級數(shù)量,拆分等級表
for num in range(nums):
    # 新建工作表
    new_wb = Workbook()
    new_sheet = new_wb.active
 
    # 寫入表頭
    new_sheet.append(['姓名', '銷售小組', '工號', '牛奶/瓶', '礦泉水/瓶', '果蔬汁/瓶', '汽水/瓶', '茶飲料/瓶', '咖啡/瓶', '總計/瓶', '銷售排名'])
 
    # 寫入數(shù)據(jù)
    for row in total_rows[num*cut:(num+1)*cut]:
        new_sheet.append(row)
    # 保存等級表
    new_wb.save('等級{}銷售表.xlsx'.format(num + 1))

 因為我們每次都提取出來 4 個人的銷售數(shù)據(jù),每個人的銷售數(shù)據(jù)是一個單獨的列表,所以按上面示例第 21 行代碼切片得到的實際結(jié)果如下所示:

[['陳潔', '銷售七組', 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 行增加遍歷是為了獲取到每個人單獨的銷售數(shù)據(jù)也就是單獨的小列表,然后再寫進新工作表。

最后用 num+1 是因為我們要從等級1開始往后排,而不是從等級 0 開始。

重新看一下,康明在保存為【等級x銷售表.xlsx】的時候,x 用的是中文數(shù)字,而不是我們項目中的阿拉伯數(shù)字。因此引出我們要學習的一個最后一個新知識點——cn2an.an2cn(),這個用法是很容易的。

在電腦本地運行的時候需要提前安裝 cn2an 模塊。我們使用pip在cmd/終端中進行安裝。

# Windows系統(tǒng):
pip install cn2an
# Mac系統(tǒng):
pip3 install cn2an
import cn2an
 
num1 = 101
num2 = '三百六十九'
 
# 將num1轉(zhuǎn)成中文數(shù)字
num1_new = cn2an.an2cn(num1)
# 講num2轉(zhuǎn)成阿拉伯數(shù)字
num2_new = cn2an.cn2an(num2)
 
print(num1_new)
print(num2_new)

可以看到 101 轉(zhuǎn)換成了“一百零一”,”三百六十九”轉(zhuǎn)換成了 369。因此在項目中要想把【等級x銷售表.xlsx】中的x換成中文數(shù)字,其實就是把保存文件夾代碼中的 num+1 先用 cn2an.an2cn() 做轉(zhuǎn)換。

 總結(jié)

以上,就是功能二的相關(guān)知識點,讓我們來用思維導(dǎo)圖來總結(jié)一下吧。

到此這篇關(guān)于用Python實現(xiàn)等級劃分的文章就介紹到這了,更多相關(guān)Python等級劃分內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Apache部署Django項目圖文詳解

    Apache部署Django項目圖文詳解

    這篇文章主要介紹了Apache部署Django項目圖文詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python中pyplot直方圖的繪制方式

    python中pyplot直方圖的繪制方式

    這篇文章主要介紹了python中pyplot直方圖的繪制方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Python函數(shù)裝飾器常見使用方法實例詳解

    Python函數(shù)裝飾器常見使用方法實例詳解

    這篇文章主要介紹了Python函數(shù)裝飾器常見使用方法,結(jié)合實例形式分析了Python函數(shù)裝飾器的概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-03-03
  • Python 迭代器與生成器實例詳解

    Python 迭代器與生成器實例詳解

    這篇文章主要介紹了Python 迭代器與生成器實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • python實現(xiàn)UDP協(xié)議下的文件傳輸

    python實現(xiàn)UDP協(xié)議下的文件傳輸

    這篇文章主要為大家詳細介紹了python實現(xiàn)UDP協(xié)議下的文件傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 解決安裝python庫時windows error5 報錯的問題

    解決安裝python庫時windows error5 報錯的問題

    今天小編就為大家分享一篇解決安裝python庫時windows error5 報錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python字符串常見使用操作方法介紹

    python字符串常見使用操作方法介紹

    本文介紹python字符串使用方法,Python最常見數(shù)據(jù)類型就是字符串,無論哪種編程語言,字符串無處不在,比如從用戶那里讀取字符串,并將字符串打印到屏幕顯示出來,字符串是一種數(shù)據(jù)結(jié)構(gòu),下文詳細內(nèi)容介紹需要的朋友可以參考一下
    2022-03-03
  • Python爬蟲DOTA排行榜爬取實例(分享)

    Python爬蟲DOTA排行榜爬取實例(分享)

    下面小編就為大家?guī)硪黄狿ython爬蟲DOTA排行榜爬取實例(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 基于python實現(xiàn)微信模板消息

    基于python實現(xiàn)微信模板消息

    本文通過一段代碼實例給大家介紹基于python實現(xiàn)微信模板消息的相關(guān)資料,對python模板消息感興趣的朋友一起學習吧
    2015-12-12
  • python 利用openpyxl讀取Excel表格中指定的行或列教程

    python 利用openpyxl讀取Excel表格中指定的行或列教程

    這篇文章主要介紹了python 利用openpyxl讀取Excel表格中指定的行或列教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論