欢迎光临
我们一直在努力

《超简单:用 Python 让 Excel 飞起来》读书笔记:2.4.1 算术运算符和字符串运算符

avatar

🔥
个人主页:
杨利杰YJlio

❄️
个人专栏:
《Sysinternals实战教程》
《Windows PowerShell 实战》
《WINDOWS教程》
《IOS教程》

《微信助手》
《锤子助手》
《Python》
《Kali Linux》

《那些年未解决的Windows疑难杂症》
🌟
让复杂的事情更简单,让重复的工作自动化

请添加图片描述

在这里插入图片描述


《超简单:用 Python 让 Excel 飞起来》读书笔记:2.4.1 算术运算符和字符串运算符

  • 1. 2.4.1 算术运算符和字符串运算符
  • 2. 数字运算:+、-、*、/、//、%、**
    • 2.1 加法 +
    • 2.2 减法 –
    • 2.3 乘法 *
    • 2.4 除法 /
    • 2.5 整除 //
    • 2.6 取余 %
    • 2.7 幂运算 **
  • 3. 字符串运算:拼接 +、重复 *
    • 3.1 字符串拼接 +
    • 3.2 字符串重复 *
  • 4. 最容易踩坑:+ 在数字和字符串里含义不同
  • 5. 贴近 Excel 的小案例:汇总金额 + 打印提示
  • 6. 再补一个实用场景:每处理 100 行打印一次进度
  • 7. 常见问题和踩坑提醒
    • 7.1 为什么 10 / 2 的结果是 5.0?
    • 7.2 为什么 "100" + "200" 不是 300?
    • 7.3 为什么 "处理行数:" + 10 会报错?
    • 7.4 金额计算前要不要看类型?
  • 8. 总结提升

1号标题图

1. 2.4.1 算术运算符和字符串运算符

  这一篇继续整理《超简单:用 Python 让 Excel 飞起来》的基础语法部分。前面学了变量、数据类型、列表和字典之后,Python 代码已经能“存数据”了。但真正让脚本开始处理数据、生成结果、输出提示的,是运算符。

  这篇笔记我不想把它写成一张机械的符号表。因为在真实办公自动化里,运算符不是考试题,而是脚本的基本动作。比如金额要汇总,平均值要计算,文件名要拼接,日志要输出,这些都离不开运算符。

  在 Python + Excel 办公自动化里,我最常用的运算符大致分成两类:第一类是 数字运算,用来做金额汇总、数量累加、平均值、差值和比例;第二类是 字符串运算,用来拼接文件名、拼接路径、生成日志和输出提示信息。

  这张图展示的是本文的整体主题:算术运算符负责数字计算,字符串运算符负责文本组合,两者最终都会服务于 Excel 自动化场景。

请添加图片描述

  从图中可以看出,运算符并不是只存在于数学题里。它会出现在“金额汇总”“平均值计算”“文件名拼接”“日志提示”这些非常具体的办公自动化动作中。所以这一节的重点不是记符号,而是知道每个符号在脚本里解决什么问题。

#mermaid-svg-yOiBZDIsjF1BAHJ3{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .error-icon{fill:#552222;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .marker.cross{stroke:#333333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 p{margin:0;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster-label text{fill:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster-label span{color:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster-label span p{background-color:transparent;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .label text,#mermaid-svg-yOiBZDIsjF1BAHJ3 span{fill:#333;color:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .node rect,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node circle,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node ellipse,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node polygon,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .rough-node .label text,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node .label text,#mermaid-svg-yOiBZDIsjF1BAHJ3 .image-shape .label,#mermaid-svg-yOiBZDIsjF1BAHJ3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .rough-node .label,#mermaid-svg-yOiBZDIsjF1BAHJ3 .node .label,#mermaid-svg-yOiBZDIsjF1BAHJ3 .image-shape .label,#mermaid-svg-yOiBZDIsjF1BAHJ3 .icon-shape .label{text-align:center;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .node.clickable{cursor:pointer;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .arrowheadPath{fill:#333333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-yOiBZDIsjF1BAHJ3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yOiBZDIsjF1BAHJ3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster text{fill:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .cluster span{color:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-yOiBZDIsjF1BAHJ3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .icon-shape,#mermaid-svg-yOiBZDIsjF1BAHJ3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .icon-shape p,#mermaid-svg-yOiBZDIsjF1BAHJ3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .icon-shape .label rect,#mermaid-svg-yOiBZDIsjF1BAHJ3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-yOiBZDIsjF1BAHJ3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-yOiBZDIsjF1BAHJ3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-yOiBZDIsjF1BAHJ3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

Python 运算符

算术运算符

字符串运算符

金额汇总

平均值计算

批次 / 余数判断

文件名拼接

日志提示

分隔线输出

Excel 自动化脚本


2号标题图

2. 数字运算:+、-、*、/、//、%、**

  数字运算是最容易入门的一部分,因为它和我们平时理解的加减乘除很接近。但在 Python 里,除了常见的 +、-、*、/ 之外,还要重点掌握 //、%、**。

  这张图展示的是常见算术运算符及其在办公自动化中的典型用途,比如金额汇总、差值计算、单价乘数量、平均值、批次计算和奇偶判断。

请添加图片描述

  从图中能看出,算术运算符并不是孤立符号。比如 + 可以做金额累加,/ 可以做平均值,// 可以做批次计算,% 可以做余数判断。如果你准备写 Excel 自动化脚本,算术运算符是处理报表数据的基础能力。

2.1 加法 +

  加法最常见的用途是金额汇总、数量累加、计数器累加。

a = 10
b = 3

print(a + b) # 13

  放到 Excel 自动化里,比如我们有一个金额列表:

money_list = [1200, 3500, 2200]

total = 0
for money in money_list:
total = total + money

print(total)

  这里的 total = total + money 就是典型的累加逻辑。后面写报表汇总时,这种写法会反复出现。

  实际写脚本时,也可以把它简写成下面这样:

total += money

  total += money 和 total = total + money 的含义一致,都是把当前金额累加到总金额里。 新手阶段先理解完整写法,再使用简写,会更稳。

2.2 减法 –

  减法常用于计算差值、剩余量、增长或下降金额。

plan = 10000
actual = 8500

diff = plan – actual
print(diff)

  在业务报表里,这类计算很常见。比如预算和实际支出的差额、库存期初和期末的变化、目标和完成量的差距,都可以用减法处理。

  如果后续要把差值写回 Excel,就可以把 diff 作为一个新字段,生成“差额”“未完成金额”“剩余数量”等列。

2.3 乘法 *

  乘法最常见的办公场景是“单价 × 数量”。

price = 25
count = 8

amount = price * count
print(amount)

  在 Excel 自动化里,如果你读取了“单价”和“数量”两列,就可以通过乘法生成“金额”列。

price = 25
count = 8
amount = price * count

print("金额:", amount)

  这类计算非常适合放进循环里,逐行读取单价和数量,再逐行计算金额。

2.4 除法 /

  除法通常用于平均值、比例、占比计算。

a = 10
b = 3

print(a / b)
print(type(a / b))

  输出结果是:

3.3333333333333335
<class 'float'>

  注意:Python 中的 / 通常返回浮点数。 即使结果能整除,返回结果也可能是 float。

print(10 / 2) # 5.0

  这一点在报表生成时要特别注意。如果你后续要把结果写回 Excel,并且希望它显示为整数,就需要单独处理格式或类型。

2.5 整除 //

  整除 // 会取商的整数部分。

a = 10
b = 3

print(a // b) # 3

  这个符号在“批次计算”里很常见。比如每批处理 100 行数据,现在有 350 行,需要判断能完整分几批:

total_rows = 350
batch_size = 100

full_batches = total_rows // batch_size
print(full_batches)

  结果是 3,表示可以完整分成 3 批,剩余部分要配合取余判断。

2.6 取余 %

  取余 % 返回除法后的余数。

a = 10
b = 3

print(a % b) # 1

  我在写自动化脚本时,% 常用于两个场景:一是判断奇偶,二是每处理 N 条数据时触发一次动作。

n = 8
print(n % 2 == 0)

  比如每处理 100 行打印一次进度:

for i in range(1, 501):
if i % 100 == 0:
print("已处理", i, "行")

  取余不是数学课里的冷门符号,它在批量脚本里很实用。 只要你想控制“每隔多少次执行一次动作”,就可以想到 %。

2.7 幂运算 **

  ** 表示次方。

print(2 ** 3) # 8
print(10 ** 2) # 100

  办公自动化里它不是最高频的运算符,但在增长率、指数类计算、评分公式中也可能遇到。比如某些业务模型里会涉及权重计算、指数增长或评分放大,这时 ** 就能派上用场。


3号标题图

3. 字符串运算:拼接 +、重复 *

  除了数字可以运算,字符串也可以运算。只不过字符串里的 + 和 * 含义不是数学加法和乘法,而是拼接和重复。

  这张图展示的是字符串运算的两个重点:+ 用来拼接字符串,* 用来重复字符串。它们在文件名拼接、路径组合、日志提示和分隔线输出中非常常见。

请添加图片描述

  从图中可以看出,字符串运算解决的不是数字计算问题,而是文本组织问题。写办公自动化脚本时,生成文件名、提示信息、日志分隔线,基本都会用到字符串运算。

3.1 字符串拼接 +

  字符串拼接就是把多个字符串连在一起。

name = "张三"
dept = "IT"

msg = "姓名:" + name + ",部门:" + dept
print(msg)

  输出结果:

姓名:张三,部门:IT

  在实际脚本里,我们经常用它拼接文件名:

year = "2026"
file_name = "年度报表_" + year + ".xlsx"

print(file_name)

  输出结果:

年度报表_2026.xlsx

  注意:字符串拼接时,两边必须都是字符串。 如果其中一个是数字,需要先使用 str() 转成字符串。

year = 2026
file_name = "年度报表_" + str(year) + ".xlsx"

print(file_name)

  不过在真实项目里,如果拼接内容比较多,我更推荐后续学习 f-string。它比一堆 + 更清楚。

year = 2026
file_name = f"年度报表_{year}.xlsx"

print(file_name)

  本节先理解字符串拼接的本质即可:不是所有 + 都是数学加法,放在字符串里就是文本连接。

3.2 字符串重复 *

  字符串重复就是把同一段字符串重复多次。

line = "-" * 30
print(line)

  输出结果:

——————————

  我写脚本日志时,经常这样用:

print("=" * 50)
print("开始处理 Excel 文件")
print("=" * 50)

  这种写法虽然简单,但对脚本输出很有帮助。尤其是你批量处理几十个文件时,清晰的日志分隔线可以让排错更快。

  推荐把字符串重复运算用在日志分隔、阶段提示、控制台输出里,不要小看它,它能明显提升脚本输出的可读性。


4号标题图

4. 最容易踩坑:+ 在数字和字符串里含义不同

  这一节最需要警惕的点,就是 + 在数字和字符串里的含义完全不同。

  数字里的 + 是加法:

print(100 + 200)

  结果是:

300

  字符串里的 + 是拼接:

print("100" + "200")

  结果是:

100200

  这张图展示的是数字运算和字符串运算中最典型的易错点:同样是 +,数字会相加,字符串会拼接;拼接数字前要先 str();/ 和 // 的结果也不同。

请添加图片描述

  从图中可以看出,类型不对,结果就不对。 在 Excel 自动化里尤其危险,因为单元格里看着像数字,Python 读出来却可能是字符串。如果你没有检查类型,最后得到的可能不是求和结果,而是字符串拼接结果。

  因此,只要遇到结果怪怪的,我第一反应不是改公式,而是先看类型。

value1 = "100"
value2 = "200"

print(type(value1))
print(type(value2))
print(value1 + value2)

  如果确实要做数字计算,就先转换类型:

value1 = "100"
value2 = "200"

result = int(value1) + int(value2)
print(result)

  写自动化脚本时,先确认类型,再决定是计算还是拼接。 这比报错以后再补救要稳得多。


5号标题图

5. 贴近 Excel 的小案例:汇总金额 + 打印提示

  前面讲的是单个运算符,现在把它们组合起来看一个更贴近 Excel 自动化的小案例。假设我们已经从 Excel 里读出一组金额,现在要计算总金额、平均金额,并打印提示信息。

  这张图展示的是 Excel 自动化中的运算符组合流程:读取金额列表,累加求和,计算平均值,拼接提示信息,最后输出结果。

请添加图片描述

  从图中可以看出,一个真实脚本往往不会只用一个运算符。它会把数字运算和字符串运算结合起来:先计算,再把计算结果拼成可读的提示信息。

money_list = [1200, 3500.5, 2200]

total = 0
for money in money_list:
total = total + money

average = total / len(money_list)

print("-" * 30)
print("总金额:" + str(total))
print("平均金额:" + str(average))
print("-" * 30)

  这段代码同时用到了几个知识点:

  第一,+ 用于数字累加,计算总金额。

  第二,/ 用于计算平均值。

  第三,str() 用于把数字转成字符串,方便拼接提示信息。

  第四,* 用于重复字符串,生成日志分隔线。

  这就是办公自动化最真实的写法:计算结果只是第一步,最后还要让输出结果能被人看懂。

  如果想让平均金额显示得更规整一点,可以使用 round() 做简单四舍五入:

average = total / len(money_list)

print("平均金额:" + str(round(average, 2)))

  这里的 round(average, 2) 表示保留两位小数。对报表输出来说,这种处理比直接输出一长串小数更友好。


6号标题图

6. 再补一个实用场景:每处理 100 行打印一次进度

  在批量处理 Excel 文件时,如果数据量很大,脚本一直不输出内容,会让人很不踏实。这时候可以用 % 取余来控制进度提示。

total_rows = 500

for i in range(1, total_rows + 1):
# 这里模拟处理第 i 行数据
if i % 100 == 0:
print("已处理:" + str(i) + " 行")

  输出效果大致如下:

已处理:100 行
已处理:200 行
已处理:300 行
已处理:400 行
已处理:500 行

  这段代码里,% 用来判断“是否刚好处理到 100 的倍数”,str() 用来把数字拼接进提示文本。一个小例子里就包含了数字运算、条件判断和字符串拼接。

  这类小技巧在真实脚本里很有用,因为它能让长时间运行的批处理脚本变得可观察。

  如果是桌面运维或办公自动化脚本,我一般不建议让脚本“安静地跑完”。尤其是批量处理 Excel、批量改名、批量生成文件时,最好每隔一段时间输出一次进度。这样一旦脚本卡住,也更容易判断卡在了哪个阶段。


7号标题图

7. 常见问题和踩坑提醒

7.1 为什么 10 / 2 的结果是 5.0?

  因为 Python 里的 / 是普通除法,结果通常是浮点数。即使看起来能整除,也会返回 float。

print(10 / 2)
print(type(10 / 2))

  如果你明确想要整数部分,可以使用 //。

print(10 // 2)

  简单记法:/ 更适合做平均值和比例,// 更适合做批次、页数、分组这类整数结果。

7.2 为什么 “100” + “200” 不是 300?

  因为引号包起来以后,它们就是字符串。字符串之间使用 +,含义是拼接,不是数学加法。

print("100" + "200") # 100200

  如果要计算,需要先转成数字:

print(int("100") + int("200")) # 300

  这个坑在 Excel 自动化里很常见。尤其是从表格里读出来的数据,有时看起来是数字,实际类型却是字符串。不要只相信眼睛,要看 type()。

7.3 为什么 “处理行数:” + 10 会报错?

  因为字符串不能直接和整数拼接。

count = 10
msg = "处理行数:" + count
print(msg)

  这段代码会报错。正确写法是:

count = 10
msg = "处理行数:" + str(count)
print(msg)

  只要是字符串拼接,参与拼接的内容就必须先变成字符串。

  当然,也可以使用 f-string,可读性更好:

count = 10
msg = f"处理行数:{count}"
print(msg)

7.4 金额计算前要不要看类型?

  必须看。尤其是从 Excel 读出来的数据,不能只看单元格显示效果。

value = "1200"

print(value)
print(type(value))

  如果类型是 str,就不能直接当数字计算。

value = "1200"
money = float(value)

print(money)
print(type(money))

  推荐习惯:凡是从 Excel、CSV、文本文件里读出来的数据,参与计算前先确认类型。 这个动作很小,但能避免很多隐蔽错误。


8号标题图

8. 总结提升

  这一节看起来是在学习算术运算符和字符串运算符,但真正要建立的是“类型意识”。同一个 +,放在数字里是加法,放在字符串里是拼接;同一个 *,放在数字里是乘法,放在字符串里是重复。

  在 Python + Excel 自动化里,运算符不是孤立符号,而是脚本处理数据和生成结果的基本动作。 金额汇总、平均值、批次判断、文件命名、日志输出,背后都离不开这些基础运算。

  本文可以压缩成三条经验:

  第一,数字运算前先确认数据真的是数字。 不要看到 Excel 里像数字,就默认 Python 读出来也是数字。

  第二,字符串拼接前先把非字符串转成字符串。 尤其是文件名、日志、提示信息里混入数字时,记得使用 str(),或者直接使用 f-string。

  第三,长脚本要用日志输出增强可观察性。 "-" * 30、"=" * 50 这种简单写法,能让脚本输出更清楚。

  如果只记住运算符表,但不知道它们在 Excel 自动化里怎么组合使用,那还不算真正掌握。 真正有价值的学习,是把这些基础符号变成自己脚本里的稳定操作模板。

  对我来说,这一节最重要的收获不是多记几个符号,而是形成一个判断习惯:先看数据类型,再决定运算方式;先保证结果正确,再考虑输出美观。 这个习惯建立起来,后面写 Excel 自动化脚本会稳很多。


请添加图片描述

🔝 返回顶部

点击回到顶部

赞(0)
未经允许不得转载:171主机测评 » 《超简单:用 Python 让 Excel 飞起来》读书笔记:2.4.1 算术运算符和字符串运算符
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址