本文为「30天吃透Python核心语法」系列第四篇,承接Day3的字符串进阶内容,全程新手友好、无晦涩术语、纯文字讲解,每个知识点都配可直接运行的代码示例,跟着练就能100%掌握Python基础运算的全部核心规则。
大家好,欢迎来到30天Python精通计划的第四天。
Day3我们一起吃透了字符串的进阶操作,学会了文本的提取、修改、格式化,搞定了日常90%的基础文本处理需求,很多同学都在评论区完成了打卡,特别棒!
这段时间我也收到了很多新手同学的留言:
- 我能给变量赋值了,可怎么用代码做复杂的数学计算?
- 别人写的代码里的+=、-=是什么意思?为什么不用a=a+1,要写这种看不懂的格式?
- 我写的计算表达式,结果总是和我想的不一样,到底是哪里出了问题?
- 总是搞不懂赋值的=和判断的==有什么区别,一写就报错。
别慌,这些问题的答案,全在今天的内容里。
算术运算符和赋值运算符,是Python所有数值计算的核心基础,也是后续我们要学的条件判断、循环语句、函数逻辑的必备前提。今天我们把每一个运算符的用法、规则、避坑点、实际场景拆解得明明白白,全程大白话,无晦涩术语,每个知识点都配可直接运行的代码示例,跟着练就能100%吃透。
学完今天的内容,你将:
✅ 掌握Python全部7个算术运算符,搞定日常所有数学计算需求
✅ 吃透基础赋值与复合赋值运算符,大幅简化代码,提升编程效率
✅ 搞懂运算符优先级规则,再也不会出现计算结果不符合预期的问题
✅ 避开新手运算操作的高频坑,解决90%的计算类报错
✅ 能独立用代码实现复杂的业务计算逻辑,为后续的条件判断、循环语句打下坚实地基
一、算术运算符:Python数值计算的核心
算术运算符,就是我们用来做数学运算的核心符号,它不止包含我们熟悉的加减乘除,还有Python专门提供的整除、取模、幂运算,一共7个,覆盖了日常所有的计算场景。下面我们逐个拆解,每个运算符都讲清核心作用、代码用法、实际使用场景和新手注意事项。
1. 加法运算符 +
加法运算符是我们最熟悉的,它有两个核心使用场景,也是Python里为数不多能同时作用于数字和字符串的运算符。
第一个场景是数字之间的加法,就是我们数学里的求和运算,整数、浮点数都可以直接相加,整数和浮点数相加,结果会自动变成浮点数。
第二个场景是字符串之间的加法,也就是我们之前学过的字符串拼接,能把两个字符串首尾相连,合并成一个新的字符串。
这里要重点提醒新手:加法运算符只能用于「同类型数据」之间,数字和字符串不能直接相加,否则会直接报错,这是新手100%会踩的坑。
代码示例:
python
# 数字加法运算
num1 = 10
num2 = 20.5
sum_num = num1 + num2
print(sum_num)
# 字符串拼接
first_name = "张"
last_name = "三"
full_name = first_name + last_name
print(full_name)
# 错误示例:数字和字符串直接相加,会报错
# print("我的年龄是:" + 20)
# 正确示例:先把数字转成字符串再相加
print("我的年龄是:" + str(20))
2. 减法运算符 -
减法运算符只能用于数字之间的运算,作用是计算两个数字的差值,不能用于字符串或其他类型的数据,新手不要尝试用字符串做减法,会直接触发类型报错。
正数、负数都可以正常做减法运算,整数和浮点数相减,结果同样会自动转为浮点数。
代码示例:
python
# 基础减法运算
price = 100
discount = 20
final_price = price - discount
print(final_price)
# 负数减法运算
num1 = -10
num2 = 5
result = num1 - num2
print(result)
# 整数与浮点数相减
age = 25
base_age = 18.0
age_diff = age - base_age
print(age_diff)
print(type(age_diff))
3. 乘法运算符 *
乘法运算符和加法一样,有两个核心使用场景,分别作用于数字和字符串。
第一个场景是数字之间的乘法,就是数学里的求积运算,整数、浮点数都可以正常相乘,整数和浮点数相乘,结果自动转为浮点数。
第二个场景是字符串和整数相乘,作用是把字符串重复指定的次数,生成一个新的字符串,这个用法是Python的特色,日常用来打印分隔线、重复文本超级方便。
代码示例:
python
# 数字乘法运算
price = 19.9
count = 5
total = price * count
print(total)
# 字符串重复复制
split_line = "-" * 50
print(split_line)
print("30天Python精通计划")
print(split_line)
4. 除法运算符 /
这里要给新手划一个重中之重的重点:Python3里的普通除法/,不管两个数字能不能整除,最终的结果一定是浮点数,哪怕是4/2这种刚好整除的运算,结果也会是2.0,而不是整数2,这和很多其他编程语言不一样,也是新手最容易懵的点。
除法运算符只能用于数字之间,不能用于字符串,同时要注意,除数绝对不能为0,否则会直接触发除零报错。
代码示例:
python
# 能整除的除法,结果依然是浮点数
num1 = 10
num2 = 2
result = num1 / num2
print(result)
print(type(result))
# 不能整除的除法
num3 = 10
num4 = 3
result2 = num3 / num4
print(result2)
# 错误示例:除数为0,会直接报错
# print(10 / 0)
5. 整除运算符 //
整除运算符也叫地板除,核心作用是取两个数字相除之后,商的整数部分,执行的是向下取整规则,也就是往数值更小的方向取整,绝对不是四舍五入,这个规则新手一定要刻在脑子里,不然很容易算错结果。
这里要特别提醒负数的整除:比如-5//2,新手很容易以为结果是-2,实际结果是-3,因为-3比-2更小,符合向下取整的规则。
整除运算符同样只能用于数字之间,除数不能为0,整数和浮点数做整除,结果会是浮点数格式的整数,比如10.0//3,结果是3.0。
代码示例:
python
# 正数整除
num1 = 10
num2 = 3
result = num1 // num2
print(result)
# 负数整除,重点理解向下取整
num3 = -5
num4 = 2
result2 = num3 // num4
print(result2)
# 浮点数整除
num5 = 10.0
num6 = 3
result3 = num5 // num6
print(result3)
print(type(result3))
6. 取模运算符 %
取模运算符的核心作用,是取两个数字相除之后的余数,很多新手刚接触会觉得没用,实际上它是后续编程里超级常用的运算符,判断奇偶、判断能否整除、取数字的最后几位、循环里的周期控制,全靠它实现。
这里给新手一个核心公式,帮你理解取模的结果:被除数 = 除数 * 商 + 余数,其中余数的符号永远和除数保持一致,比如除数是正数,余数就一定是正数,除数是负数,余数就一定是负数。
新手最常用的场景,就是判断一个数字是奇数还是偶数:如果一个数字对2取模,结果等于0,那它就是偶数,结果等于1,就是奇数,这个逻辑后续在条件判断里会高频使用。
代码示例:
python
# 基础取模运算
num1 = 10
num2 = 3
remainder = num1 % num2
print(remainder)
# 核心场景1:判断数字奇偶
num3 = 15
if num3 % 2 == 0:
print("这是偶数")
else:
print("这是奇数")
# 核心场景2:取数字的最后几位
phone = 13800138000
last_four = phone % 10000
print(last_four)
# 负数取模,余数符号和除数一致
num4 = -5
num5 = 2
remainder2 = num4 % num5
print(remainder2)
7. 幂运算符 **
幂运算符的核心作用,是计算一个数字的多少次方,用法超级简洁,比如23,就是计算2的3次方,结果是8,比Python内置的pow函数更直观、更常用。
除了计算整数次方,它还能用来做开根号运算,比如40.5,就是计算4的平方根,结果是2,8**(1/3)就是计算8的立方根,结果是2,日常计算非常方便。
代码示例:
python
# 计算平方、立方
num = 5
square = num ** 2
cube = num ** 3
print(square)
print(cube)
# 开根号运算
num2 = 16
sqrt_num = num2 ** 0.5
print(sqrt_num)
# 计算多次方
print(2 ** 10)
二、赋值运算符:给变量赋值的核心规则
赋值运算符的核心作用,就是给我们的变量「收纳盒」里装数据,Day2我们学过最基础的赋值运算符=,今天我们不仅要再次强化它的核心规则,还要学能大幅简化代码的复合赋值运算符,这也是新手进阶的必备技能。
1. 基础赋值运算符 =
这里要再次给新手纠正一个核心认知:Python里的=,绝对不是数学里的「等于」,而是「赋值」。
它的执行逻辑是:先计算=右边的所有内容,得到一个最终的结果,再把这个结果,装进左边的变量里。所以有一个铁则:=的左边必须是一个单独的变量,绝对不能是数字、表达式,否则会直接报错。
除了单个变量赋值,它还支持连续赋值,也就是一行代码给多个变量赋同一个值,也支持我们Day2学过的多变量同时赋值,一行代码给多个变量赋不同的值。
代码示例:
python
# 基础赋值
age = 20
print(age)
# 先算右边的表达式,再赋值
sum_num = 10 + 20 * 3
print(sum_num)
# 连续赋值,给多个变量赋同一个值
a = b = c = 100
print(a)
print(b)
print(c)
# 多变量同时赋值,一一对应
name, age, city = "张三", 20, "北京市"
print(name, age, city)
# 错误示例:=左边不是变量,会直接报错
# 10 = age
# a + 1 = 20
这里提前给新手避一个高频坑:很多人会把赋值的=和后续要学的相等判断==搞混,今天我们讲的=是给变量装数据,明天要讲的==是判断两个值是不是相等,二者完全不是一个东西,绝对不要写混。
2. 复合赋值运算符
复合赋值运算符,就是算术运算符和基础赋值运算符=的结合体,它的核心作用是简化代码,让赋值运算的写法更简洁、可读性更高。
Python里一共有7个复合赋值运算符,和前面的7个算术运算符一一对应,分别是+=、-=、*=、/=、//=、%=、**=,其中最常用的是前四个,新手优先掌握。
我们用最常用的+=举例子,就能瞬间搞懂复合赋值的逻辑:a += 1,完全等价于a = a + 1,也就是先把变量a原来的值加1,再把新的结果重新赋给变量a。
其他的复合赋值运算符,逻辑完全一致,都是先对变量做对应的算术运算,再把结果重新赋给变量。
这里有一个新手必须遵守的铁则:使用复合赋值运算符之前,变量必须已经被定义过,有初始值,否则会直接报变量未定义的错误,比如你直接写a += 1,但是之前从来没给a赋过值,程序一定会报错。
代码示例:
python
# 最常用的+=,累加运算
sum_num = 0
sum_num += 10
sum_num += 20
sum_num += 30
print(sum_num)
# -= 累减运算
count = 100
count -= 10
count -= 20
print(count)
# *= 累乘运算
price = 100
price *= 0.8
print(price)
# /= 累除运算
num = 100
num /= 2
num /= 5
print(num)
# 其他复合赋值运算符示例
a = 10
a //= 3
print(a)
b = 10
b %= 3
print(b)
c = 2
c **= 3
print(c)
# 错误示例:使用前未定义变量,会报错
# x += 5
很多新手会问,明明可以写a = a + 1,为什么非要写a += 1?原因很简单:第一,代码更简洁,尤其是变量名很长的时候,能少写一半的代码;第二,可读性更高,一眼就能看出来是对变量做累加操作;第三,Python底层对复合赋值有优化,执行效率更高,后续写循环累加的时候,优势会非常明显。
三、运算符优先级:再也不会算错结果
很多新手写复杂的计算表达式,结果总是和自己预期的不一样,核心原因就是没搞懂运算符的优先级。
Python里的运算符优先级,和我们数学里的规则几乎完全一致,这里用大白话给大家讲清楚核心规则,不用死记硬背,记住核心逻辑就够了:
第一,括号的优先级是最高的,不管什么内容,只要放在小括号里,就会最先计算;
第二,先算幂运算,再算乘除、整除、取模,最后算加减;
第三,算术运算符的优先级,永远高于赋值运算符,也就是先算完所有的算术运算,最后再做赋值;
第四,同一优先级的运算符,按照从左到右的顺序依次计算。
这里给新手一个终极建议:如果你不确定运算符的优先级,或者表达式比较复杂,就直接加小括号。加括号不仅能保证计算结果100%符合你的预期,还能让代码的可读性大幅提升,别人一眼就能看懂你的计算逻辑,比硬记优先级靠谱100倍。
代码示例:
python
# 不加括号,按默认优先级计算,先乘后加
result1 = 2 + 3 * 4
print(result1)
# 加括号,先算括号里的加法,再算乘法
result2 = (2 + 3) * 4
print(result2)
# 复杂表达式,用括号明确优先级,清晰不出错
price = 19.9
count = 6
full_reduction = 10
discount = 0.8
# 先算总价,再算满减,最后算折扣
final_price = (price * count - full_reduction) * discount
print(final_price)
四、新手高频踩坑避坑指南
这里整理了Day4运算符操作里,新手100%会遇到的报错和问题,提前讲清原因和解决方法,帮大家少走弯路。
1. 赋值运算符左边不是变量,报错SyntaxError: cannot assign to literal
出现这个报错,核心原因是你把赋值运算符=的左右写反了,或者把数字、表达式放在了=的左边。解决方法:严格遵守赋值规则,=的左边必须是单个的变量,不能是数字、表达式,永远是变量在左,数据/表达式在右。
2. 用减法、除法等运算符处理字符串,报错TypeError: unsupported operand type(s)
这个报错的原因,是你用了只能作用于数字的运算符处理字符串。Python里只有+和*能在特定场景下作用于字符串,-、/、//、%、**都只能用于数字类型。解决方法:如果要对字符串里的数字做运算,先把字符串用int()或float()转成数字类型,再做运算。
3. 普通除法/的结果是浮点数,导致后续判断出错
很多新手会写类似4/2 == 2的判断,虽然这个判断是成立的,但如果用type()查看类型,会发现结果是float,不是int,后续如果有严格的类型判断,就会出问题。解决方法:如果你需要的是整数结果,就用整除运算符//,或者用int()对除法结果做类型转换。
4. 整除//的负数结果不符合预期
新手很容易把//当成四舍五入,导致负数整除的结果算错,比如-5//2,很多人以为是-2,实际是-3。解决方法:记住//是向下取整,也就是往更小的数字方向取整;如果需要对负数做取整,先算正数的结果,再处理符号,或者用int()处理正数除法的结果。
5. 复合赋值运算符使用前未定义变量,报错NameError: name 'xxx' is not defined
这个报错的原因,是你直接用复合赋值运算符操作一个从来没定义过的变量,比如直接写a += 1,但是之前没给a赋初始值。解决方法:所有复合赋值的变量,必须先定义初始值,比如累加运算先给变量赋0,累乘运算先给变量赋1。
6. 除数为0,报错ZeroDivisionError: division by zero
这个报错的原因,是你在除法、整除、取模运算里,把除数设成了0,数学里0不能做除数,Python里也一样。解决方法:做除法运算前,先判断除数是不是0,避免触发报错。
7. 运算符优先级搞错,计算结果不符合预期
解决方法:终极方案就是加小括号,所有不确定优先级的地方,都用括号包裹,括号的优先级永远是最高的,既不会出错,还能提升代码可读性。
五、今日课后作业(必做!只看不敲,永远学不会)
编程是一门实操技能,只有动手敲代码,才能真正把知识变成自己的。今天的作业循序渐进,全部完成,才算真正吃透Day4的内容。
1. 基础必做:定义两个变量a=15,b=4,分别计算它们的和、差、积、商、整除结果、取余结果、a的b次方,把每个结果都用print()打印出来,给每一行代码都加上单行注释,说明对应的运算。
2. 进阶练习:定义一个变量num=1234,用今天学的取模和整除运算符,分别取出这个数字的个位、十位、百位、千位数字,把每一位数字都单独打印出来。
3. 挑战练习:写一个商品结算的逻辑,定义变量:商品单价19.9元,购买数量6件,满100元减10元,最终折扣8折,用今天学的运算符计算出最终的应付金额,用print()格式化输出,价格保留2位小数,给每一步计算都加上清晰的注释。
4. 习惯养成:所有变量用规范的蛇形命名法,做到见名知意,复杂的计算表达式用括号明确优先级,不写无意义的缩写。
六、明日预告
Day5我们将学习Python的比较运算符与逻辑运算符,这两个运算符是后续if条件判断语句的绝对核心。
学完明天的内容,你就能写出带判断逻辑的代码,比如判断用户年龄是否成年、考试成绩是否及格、用户输入的账号密码是否正确,真正实现代码的逻辑判断能力,完成从“能计算”到“能判断”的跨越。
结尾互动
今天的内容你都学会了吗?
完成作业的同学,可以在评论区扣个【打卡Day4】!
有任何报错、不懂的问题,都可以在评论区留言,我会一一解答。
关注我,跟着30天计划,从零开始,彻底精通Python核心语法,每天1.5小时,30天就能独立写Python脚本,搞定日常办公自动化!