专业编程基础技术教程

网站首页 > 基础教程 正文

文科生自学Python/VBA-循环判断成绩等级

ccvgpt 2024-08-18 14:33:05 基础教程 8 ℃

--人生不是赛场,梦想不容退场,学习编程成就更好的自己--

Python语言简洁生动处理问题简单粗暴,网上盛传一句话就是:人生苦短,快用Python,特别适合小白入门IT世界,用几十行代码就能够做一个完整的爬虫脚本,开发效率杠杠的!短时间内即可解决工作和学习中碰到的棘手问题。(本人外语专业毕业,机缘巧合爱上编程,自学道路曲曲折折,痛并快乐!)在这里总结一下自学Python遇到的难点和重点,分享码过的代码和要点总结,希望能够给初学者一点启示和鼓励,同时愿意结交更多大神交流有助提升自己的水平。

文科生自学Python/VBA-循环判断成绩等级

今天分享一个基础和常见的实例,如何对某一EXCEL文件中的成绩数据进行评价判断和标记,简单来讲90分及以上为Perfect!,60分及以上为Good!,60以下为Bad!,截图如下:

另外,对于完全不了解编程的朋友来说想要轻松入门Python并灵活应用还是有一定难度的,实际上大家可以把EXCEL作为敲门砖,毕竟众多企业平时工作中要经常使用到EXCEL处理数据,个人感觉EXCEL世界有三大利器,分别是函数,透视表和VBA,VBA做二次开发效率非常高,可迅速做好模板并封装发布,轻松解决本地化较为头疼的难题,减轻机械重复劳动,提高办公自动化水平,今天也会在后半段讲一下如何用VBA来解决上面提及的问题,下面先来看看用Python如何处理吧:

Python方法(主要运用pandas库和一维自定义函数)

步骤1-读取指定文件并查看成绩数据

步骤2-编写自定义函数并用apply来生成评级结果字段

步骤3-把生成的数据结果另存结束

文本代码如下:

import pandas as pd
import time
import os
def Set_Work_Path(x):
    try:
        os.chdir(x)
        route = os.getcwd()
        print(route)
        return route
    except Exception:
        print("No Result")
work_path = r"E:\DATA\25JUL21"
Set_Work_Path(work_path)
#read data with pandas
data = pd.read_excel("成绩汇总-25JUL21.xlsm",header=0,sheet_name="DATA-Python",index_col=None)
print(data)

#define a function to rate with scores
def Get_Rating(x):
    if x >= 90:
        return "Perfect!"
    elif x >= 60:
        return "Good!"
    else:
        return "Bad"
data["Rating"]=data["Score"].apply(Get_Rating)
print(data)

#Saving it into an Excel file
writer = pd.ExcelWriter("成绩处理结果.xlsx")
data.to_excel(writer, sheet_name="DATA", index=False)
writer.save()
show = "Time: %s Seconds" % time.perf_counter()+", Well Done!"
print(show)
print("Running is OVER!!")

VBA方法(既可以使用循环判断也可以编写自定义函数)

VBA-直接在指定数据里进行循环判断,如下:

文本代码如下:

Sub ScoreRating()
Application.ScreenUpdating = True
Sheets("DATA-VBA").Select
Dim i As Long, lr As Long
lr = ActiveSheet.UsedRange.Rows.Count
For i = 2 To lr Step 1
If Range("D" & i) >= 90 Then
    Range("E" & i) = "Perfect!"
ElseIf Range("D" & i) >= 60 Then
    Range("E" & i) = "Good!"
Else:
    Range("E" & i) = "Bad!"
End If
Next i
Application.ScreenUpdating = False
End Sub

VBA-编写自定义函数并调用,如下:

文本代码如下:

Function FRT(x)
Application.ScreenUpdating = True4
If x >= 90 Then
    FRT = "Perfect!"
ElseIf x >= 60 Then
    FRT = "Good!"
Else:
    FRT = "Bad!"
End If
Application.ScreenUpdating = False
End Function

END

我为人人,人人为我!!欢迎大家关注,点赞和转发!!!

Tags:

最近发表
标签列表