程序最厉害的地方,不是能算多快,而是能根据不同情况做不同的事。
就像生活中,如果今天下雨,我就带伞;如果出太阳,我就戴帽子。这种“如果……就……”的逻辑,在Python里叫分支结构。
单分支结构
最简单的分支,就是if。满足条件就执行,不满足就跳过。
age = 18if age >= 18: print("恭喜,你已经成年了!")
如果age是16,什么也不会打印。这就是单分支:要么做,要么不做,没有第二种选择。
注意:if后面一定要有冒号,下面的代码块要缩进(一般是4个空格)。忘了缩进,Python会报错。
二分支结构:if-else
有时候我们需要“二选一”:对了怎样,错了又怎样。这时候用if-else。
score = 59if score >= 60: print("及格了,今晚加鸡腿!")else: print("不及格,回去好好复习。")
result = "及格" if score >= 60 else "不及格"print(result)
多分支结构:if-elif-else
现实中的选择往往不止两种。成绩分ABCD,星期分周一到周日,这时候要用if-elif-else。
score = 85if score >= 90: grade = "A"elif score >= 80: grade = "B"elif score >= 70: grade = "C"elif score >= 60: grade = "D"else: grade = "E"print(f"你的等级是:{grade}")
重点:条件是从上往下检查的。一旦满足某个条件,就跳出整个结构,不再检查后面的。所以条件的顺序很重要。如果把>=80写在>=90前面,那90分也会被当成B,因为先满足了>=80。
条件判断
分支的条件可以是各种比较,比如:
| | |
|---|
< | | age < 18 |
<= | | score <= 100 |
> | | height > 170 |
>= | | temp >= 38.5 |
== | | name == "老李" |
!= | | answer != 42 |
小心:==(两个等号)是比较是否相等,=(一个等号)是赋值。写错的话,程序不会报错,但逻辑全乱了。
条件组合:and, or, not
有时候一个条件不够,要同时满足多个,或者满足其中之一。
age = 35has_work = True# 两个条件都得满足if age >= 18 and has_work: print("可以申请贷款")# 满足其中一个就行if age < 18 or age > 60: print("享受优惠票价")# 取反if not has_work: print("待业中")
and(与)、or(或)、not(非),这三个保留字能把简单条件拼成复杂条件。
异常处理
你有没有遇到过用户乱输入的情况?比如程序让你输数字,他偏偏输“abc”。这时候程序会报错,直接崩溃。
# 用户输入“abc”num = eval(input("请输入一个整数: "))print(num ** 2)# 报错:NameError: name 'abc' is not defined
try: num = eval(input("请输入一个整数: ")) print(f"它的平方是:{num ** 2}")except: print("输入不合法,请输入整数!")
如果用户输入“abc”,程序不会崩溃,而是友好地提示“输入不合法”。
还可以指定捕获特定类型的异常:
try: num = int(input("请输入一个整数: ")) # 用int()更安全 print(f"平方是:{num ** 2}")except ValueError: print("你输入的不是整数!")
try: num = int(input("请输入整数: "))except ValueError: print("输入错误")else: print(f"平方是{num**2}") # 只有没发生异常时才执行finally: print("程序结束") # 无论是否异常都执行
finally特别适合用来关闭文件、释放资源等“善后”工作。
其他实用的知识点
1. 布尔值:True和False
分支条件的结果只有两种:真(True)或假(False)。Python里,很多值都可以当作布尔值来用:
# 以下值相当于Falsebool(0) # Falsebool(0.0) # Falsebool("") # 空字符串 Falsebool([]) # 空列表 Falsebool(None) # False# 其他值基本都是Truebool(1) # Truebool("abc") # True
所以可以这样写:
name = input("请输入名字:")if name: # 相当于 if name != "" print(f"你好,{name}")else: print("名字不能为空")
2. pass语句:占位符
有时候还没想好分支里要写什么,但语法上不能空着。可以用pass占位:
if condition: pass # 以后再实现else: print("执行其他操作")
3. 条件表达式(三元运算符)
前面提到的紧凑形式,其实就是“条件表达式”:
x = 10y = 20max_val = x if x > y else yprint(max_val) # 20
4. elif 的本质
elif就是else if的缩写,可以写多个,没有数量限制,但注意可读性。
综合案例:智能BMI计算器
结合今天学的内容,写一个BMI计算器,能判断体重状况,还能处理用户输入错误。
print("========== 智能BMI计算器 ==========")try: height = float(input("请输入身高(米):")) weight = float(input("请输入体重(公斤):")) if height <= 0 or weight <= 0: print("身高和体重必须是正数!") else: bmi = weight / (height ** 2) print(f"您的BMI指数是:{bmi:.2f}") # 多分支判断 if bmi < 18.5: category = "偏瘦" advice = "多吃点,加强营养" elif bmi < 24: category = "正常" advice = "保持,继续运动" elif bmi < 28: category = "偏胖" advice = "注意饮食,适当锻炼" else: category = "肥胖" advice = "建议咨询医生,控制体重" print(f"体型:{category}") print(f"建议:{advice}")except ValueError: print("输入错误!请输入数字,比如身高1.75,体重68.5")except Exception as e: print(f"未知错误:{e}")finally: print("========== 感谢使用 ==========")
运行效果:
========== 智能BMI计算器 ==========请输入身高(米):1.75请输入体重(公斤):68您的BMI指数是:22.20体型:正常建议:保持,继续运动========== 感谢使用 ==========
如果用户输入负数或字母,程序会给出友好提示,不会崩溃。
📌 今日学习笔记:
学到了什么:
单分支if:满足条件就执行
二分支if-else:二选一,紧凑形式x if condition else y
多分支if-elif-else:多选一,注意条件顺序
条件判断:比较操作符(==、!=、>、<等)和逻辑操作符(and、or、not)
异常处理:try-except捕获错误,else无异常时执行,finally无论如何都执行
补充:布尔值真假、pass占位、三元运算符、elif本质
踩坑记录:
把==写成=,条件永远为真,调试半天才发现
if后面忘了冒号,报语法错误
elif写成了else if(那是别的语言的写法)
except后面不指定异常类型,会捕获所有错误,有时掩盖了真正的问题
用户输入int()时如果输入小数会报错,用float()更通用
用时:1小时
📢 我是老李,35岁规划师,从零开始学AI。
每天1小时,记录真实学习路。不求成为大神,只为多一条出路。
如果你也在传统行业或者对未来感到焦虑,如果你也想学点新东西但一直没有开始
点击关注,我们一起进步;
也欢迎点赞 ❤️ 分享 ➕ 推荐,让更多同行者看到!
👇👇👇