Python运算符与流程控制:if条件判断
上一篇我们学习了变量和数据类型,本篇将学习运算符和if条件判断,让程序具备「思考」和「决策」的能力。
一、Python运算符
1. 算术运算符
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
| + | 加法 | 5 + 3 | 8 |
| - | 减法 | 5 - 3 | 2 |
| * | 乘法 | 5 * 3 | 15 |
| / | 除法(结果为float) | 5 / 2 | 2.5 |
| // | 整除(向下取整) | 5 // 2 | 2 |
| % | 取余 | 5 % 2 | 1 |
| ** | 幂运算 | 2 ** 3 | 8 |
python
print(10 / 3) # 3.3333333333333335
print(10 // 3) # 3
print(10 % 3) # 1
print(2 ** 10) # 1024
# 负数整除注意:向下取整,不是向零取整
print(-5 // 2) # -3(不是-2)
2. 比较运算符
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
| == | 等于 | 5 == 5 | True |
| != | 不等于 | 5 != 3 | True |
| 大于 | 5 > 3 | True | |
| < | 小于 | 5 < 3 | False |
| >= | 大于等于 | 5 >= 5 | True |
| <= | 小于等于 | 5 <= 3 | False |
python
a, b = 10, 20
print(a == b) # False
print(a != b) # True
print(a > b) # False
# 字符串也可以比较(按ASCII码)
print("abc" < "abd") # True
print("A" < "a") # True(大写字母ASCII码更小)
3. 逻辑运算符
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
| and | 与(两边都为True才为True) | True and False | False |
| or | 或(一边为True就为True) | True or False | True |
| not | 非(取反) | not True | False |
python
age = 20
has_ticket = True
# 同时满足两个条件
if age >= 18 and has_ticket:
print("可以入场")
# 满足任一条件
is_weekend = True
is_holiday = False
if is_weekend or is_holiday:
print("今天休息")
# 取反
is_raining = False
if not is_raining:
print("可以出门")
短路求值:
python
# and:左边为False时,右边不执行
def func():
print("函数被调用了")
return True
result = False and func() # func不会被调用
print(result) # False
# or:左边为True时,右边不执行
result = True or func() # func不会被调用
print(result) # True
4. 赋值运算符
| 运算符 | 描述 | 示例 | 等价于 |
|---|---|---|---|
| = | 简单赋值 | a = 5 | - |
| += | 加后赋值 | a += 3 | a = a + 3 |
| -= | 减后赋值 | a -= 3 | a = a - 3 |
| *= | 乘后赋值 | a *= 3 | a = a * 3 |
| /= | 除后赋值 | a /= 3 | a = a / 3 |
| //= | 整除后赋值 | a //= 3 | a = a // 3 |
| %= | 取余后赋值 | a %= 3 | a = a % 3 |
| **= | 幂后赋值 | a **= 3 | a = a ** 3 |
python
count = 0
count += 1 # 等价于 count = count + 1
count *= 2 # 等价于 count = count * 2
print(count) # 2
5. 成员运算符与身份运算符
python
# 成员运算符:in / not in
fruits = ["苹果", "香蕉", "橙子"]
print("苹果" in fruits) # True
print("葡萄" not in fruits) # True
# 身份运算符:is / is not(比较内存地址)
a = [1, 2, 3]
b = a
c = [1, 2, 3]
print(a is b) # True(同一个对象)
print(a is c) # False(值相同但不是同一个对象)
print(a == c) # True(值相等)
⚠️
==比较的是值是否相等,is比较的是是否为同一个对象(内存地址相同)。
6. 运算符优先级
从高到低:
**(幂运算)+x, -x, ~x(正负号、按位取反)*, /, //, %+, -- 比较运算符
==, !=, <, >, <=, >= notandor
建议:不确定优先级时用括号
()明确表达,代码更清晰。
二、if条件判断
1. 基本if语句
python
age = 18
if age >= 18:
print("你已经成年了")
⚠️ Python用缩进(通常4个空格)表示代码块,不用大括号
{}。
2. if-else语句
python
age = 16
if age >= 18:
print("你已经成年了")
else:
print("你还未成年")
3. if-elif-else语句(多分支)
python
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
elif score >= 60:
grade = "D"
else:
grade = "F"
print(f"你的等级是: {grade}") # B
⚠️ elif是else if的缩写,条件从上到下判断,满足一个就不再判断后面的。
4. 嵌套if语句
python
age = 20
has_id = True
if age >= 18:
if has_id:
print("可以进入网吧")
else:
print("请出示身份证")
else:
print("未成年人禁止进入")
5. 三元表达式(简洁写法)
python
# 普通写法
if age >= 18:
status = "成年"
else:
status = "未成年"
# 三元表达式
status = "成年" if age >= 18 else "未成年"
print(status)
三、实战:简易计算器
python
print("=== 简易计算器 ===")
num1 = float(input("请输入第一个数: "))
op = input("请输入运算符(+ - * /): ")
num2 = float(input("请输入第二个数: "))
if op == "+":
result = num1 + num2
elif op == "-":
result = num1 - num2
elif op == "*":
result = num1 * num2
elif op == "/":
if num2 == 0:
print("错误:除数不能为0")
exit()
result = num1 / num2
else:
print("错误:不支持的运算符")
exit()
print(f"结果: {num1} {op} {num2} = {result}")
运行示例:
makefile
=== 简易计算器 ===
请输入第一个数: 10
请输入运算符(+ - * /): *
请输入第二个数: 5
结果: 10.0 * 5.0 = 50.0
四、常见坑点
-
缩进错误:Python严格依赖缩进,同一代码块缩进必须一致
-
混淆
=和==:=是赋值,==是比较 -
if后忘记冒号 :
if condition:末尾必须有冒号 -
浮点数比较 :浮点数有精度问题,不要直接用
==比较pythonprint(0.1 + 0.2 == 0.3) # False! # 正确做法:比较差值是否足够小 print(abs(0.1 + 0.2 - 0.3) < 1e-9) # True -
空值判断 :用
if x is None而不是if x == None
五、课后练习
- 编写程序,输入一个年份,判断是否为闰年(能被4整除但不能被100整除,或能被400整除)
- 编写程序,输入三个数,按从小到大的顺序输出
- 编写程序,输入一个月份,输出该月份有多少天(考虑闰年2月)
六、小结
本篇学习了Python的各类运算符(算术、比较、逻辑、赋值、成员、身份)和if条件判断的三种形式。运算符是程序的基础,if语句让程序具备了决策能力。下一篇我们将学习循环结构,让程序能重复执行。
📌 下一篇预告:《Python循环结构:for与while的用法及区别》
本专栏持续更新中,欢迎点赞、收藏、关注三连支持!🐍