数据分析笔记09:Python条件语循环
数据分析笔记09:Python条件语循环
Python的缩进机制
Python的重要特性在于使用缩进来表示代码层级。标准缩进为4个空格。快捷键Tab可自动缩进4个空格。缩进表示嵌套关系,相同缩进表示同级语句。
缩进操作技巧包括:向右缩进使用Tab,向左缩进使用Shift + Tab,多行同时缩进可选中多行后按Tab。
基本if语句
语法结构:
if 条件判断:# 条件成立时执行的代码语句1语句2
执行逻辑:若条件返回True,则执行缩进的代码块;若条件返回False,则跳过缩进的代码块。
示例1:简单判断
if True:print('条件成立执行的代码一')print('无论条件是否成立都执行的代码')
示例2:数值比较
if 9 > 8:print('条件成立执行的代码一')print('无论条件是否成立都执行的代码')
实际应用:年龄判断上网
age = input('请输入你的年龄:')
if int(age) > 18:print('已经成年可以上网')print('系统关闭')
重要提醒:input()接收的数据为字符串类型,需要使用int()转换为整型才能进行数值比较。
if-else语句
基本语法
if 条件判断:# 条件成立时执行pass 1
else:# 条件不成立时执行pass 2
执行逻辑:if表示如果条件成立则执行pass 1,else表示否则执行pass 2。
实际示例
age = input('请输入你的年龄:')
if int(age) > 18:print('已经成年可以上网')
else:print('没有成年不能上网')print('系统关闭')
运行结果:输入19输出「已经成年可以上网」后「系统关闭」;输入12输出「没有成年不能上网」后「系统关闭」。
if-else与人类思维的相似性在于其类似于日常决策,例如如果周末是晴天则出去玩,否则待在家里。Python的条件语句与人类的逻辑思维高度一致。
多重判断(elif)
语法结构
if 条件1:# 条件1成立时执行代码块1
elif 条件2:# 条件2成立时执行代码块2
elif 条件3:# 条件3成立时执行代码块3
else:# 以上条件都不成立时执行代码块4
实际案例:年龄段判断
age = int(input('请输入您的年龄:'))
if age < 18:print(f'您的年龄是{age}岁,童工一枚')
elif age >= 18 and age <= 60:print(f'您的年龄是{age}岁,合法公民')
else:print(f'您的年龄是{age}岁,可以退休')
逻辑分析如下表所示:
| 输入年龄 | 判断结果 | 输出内容 |
|---|---|---|
| 16 | age < 18 | 童工一枚 |
| 22 | 18 <= age <= 60 | 合法公民 |
| 77 | age > 60 | 可以退休 |
and逻辑运算符的应用:age >= 18 and age <= 60 表示两个条件同时成立才返回True。
if嵌套
嵌套结构
if 条件1:代码1代码2if 条件2:代码4 # 需要条件1和条件2都成立代码5else:代码6
else:代码7
执行逻辑:只有当条件1成立后,才会判断条件2;代码4和代码5需要条件1和条件2同时成立才执行。
实际案例:乘坐公交车
answer = input('告诉我是否有钱:')
if answer == '有钱':print('请上车大哥')seat = input('是否有座位(输入1代表有座位,其他代表无座位):')if seat == '1':print('大哥请坐下')else:print('大哥请站一会')
else:print('没钱请下车')
场景分析:有钱且有座位输出「请上车大哥」后「大哥请坐下」;有钱且无座位输出「请上车大哥」后「大哥请站一会」;没钱输出「没钱请下车」(不会判断座位)。
改进版:更严谨的判断
answer = input('告诉我是否有钱:')
if answer == '有钱':print('请上车大哥')seat = input('是否有座位(输入1代表有座位,其他代表无座位):')if seat == '1':print('大哥请坐下')else:print('大哥请站一会')
elif answer == '没钱':print('没钱请下车')
else:print('输入错误')
多重判断与嵌套的组合:该例子同时使用了多重判断(if-elif-else)和嵌套(内部的if-else),使程序逻辑更加完善。
while循环
基本语法
while 条件判断:# 条件成立时重复执行的代码循环体
执行逻辑:当条件为True时,不断重复执行循环体,直到条件变为False才跳出循环。
死循环示例
while 9 > 8:print('我请你吃饭')
警告:死循环。9 > 8 永远成立,程序会无限循环打印「我请你吃饭」,永不停止。按红色停止按钮可终止程序。
跳出机制:计数器
i = 0
while i < 5:print('我请你吃饭')i += 1 # 每次循环i加1print('任务完成')
执行过程如下表所示:
| 循环次数 | i的值 | i < 5? | 操作 |
|---|---|---|---|
| 第1次 | 0 | True | 打印,i变为1 |
| 第2次 | 1 | True | 打印,i变为2 |
| 第3次 | 2 | True | 打印,i变为3 |
| 第4次 | 3 | True | 打印,i变为4 |
| 第5次 | 4 | True | 打印,i变为5 |
| 第6次 | 5 | False | 跳出循环 |
跳出机制的重要性:while循环必须有跳出机制,否则会造成死循环,导致程序卡死,后续代码无法执行。
for循环
基本语法
for 变量 in range(数字):# 循环执行的代码循环体
range()函数:生成数字区间。
range()函数详解
三种用法:
用法1:range(n) - 从0开始
range(5) # 生成:0, 1, 2, 3, 4
用法2:range(start, stop) - 指定区间
range(2, 5) # 生成:2, 3, 4
用法3:range(start, stop, step) - 指定步长
range(0, 10, 2) # 生成:0, 2, 4, 6, 8
range()的左闭右开特性:range(5) 生成 0, 1, 2, 3, 4,包含起始值(左闭),不包含结束值(右开)。
基本for循环示例
for i in range(5):print('我请你吃饭')print('任务完成')
执行过程:i依次取值0至4,每取一个值执行一次循环体,自动跳出循环,执行后续代码。
for循环的自动特性
for循环的优势在于不需要手动设置计数器,不需要手动i += 1,自动取值,自动结束,代码更简洁,不易出错。
for循环嵌套
嵌套结构
for 外层变量 in range(外层次数):# 外层循环体for 内层变量 in range(内层次数):# 内层循环体
执行规则:外层循环每执行一次,内层循环完整执行所有次数;外层循环必须等内层循环全部执行完,才能进入下一次外层循环。
实际案例:打印星星矩阵
目标:打印4行,每行3个星星
代码实现:
for j in range(4): # 外层循环控制行数for i in range(3): # 内层循环控制每行的星星数print('*', end='') # end='' 取消默认换行print() # 打印换行符
执行过程详解
如下表所示:
| 步骤 | j值 | i值 | 操作 | 结果 |
|---|---|---|---|---|
| 1 | 0 | 0, 1, 2 | 打印3个* | *(第1行) |
| 2 | 1 | 0, 1, 2 | 打印3个* | *(第2行) |
| 3 | 2 | 0, 1, 2 | 打印3个* | *(第3行) |
| 4 | 3 | 0, 1, 2 | 打印3个* | *(第4行) |
print()的end参数:print('*', end='') 表示打印后不换行,默认情况下print()会自动在末尾加换行符。
循环控制:break
break的作用
功能:立即终止循环,跳出整个循环结构。
语法:
while/for 循环条件:if 某个条件:break # 终止循环其他代码
实际案例:吃苹果
i = 1
while i <= 5:if i == 4:print('吃饱了不吃了')breakprint(f'吃了第{i}个苹果')i += 1
print('从循环中跳出')
执行分析:i=1, 2, 3时正常打印并执行i+=1;i=4时触发break,立即跳出循环,不再执行「吃了第4个苹果」,不再执行i+=1,直接执行循环外的代码。
break的特点:遇到break立即终止循环,不执行break后的任何循环体代码,直接跳到循环外继续执行。
循环控制:continue
continue的作用
功能:跳过本次循环,继续下一次循环。
语法:
while/for 循环条件:if 某个条件:continue # 跳过本次循环其他代码
实际案例:跳过偶数
需求:打印1到19之间的所有奇数
for i in range(1, 20):if i % 2 == 0: # 如果是偶数continue # 跳过本次循环print(i) # 打印奇数
执行过程详解
当i=1时:1%2=11%2=1,不等于0,不执行continue,打印1。
当i=2时:2%2=02%2=0,等于0,执行continue,跳过print(i),不打印2,直接进入下一次循环。
当i=3时:3%2=13%2=1,不等于0,不执行continue,打印3。以此类推。
取余运算符的妙用:i%2==0i%2==0 判断偶数,偶数除以2余数为0,奇数除以2余数为1。
break vs continue
核心区别
如下表所示:
| 特性 | break | continue |
|---|---|---|
| 作用 | 终止整个循环 | 跳过本次循环 |
| 循环状态 | 不再继续循环 | 继续下一次循环 |
| 后续代码 | 跳出后不执行循环体 | 跳过后执行下一次循环 |
| 应用场景 | 找到目标后停止 | 跳过特定条件 |
形象比喻
break类似于吃苹果吃饱了:吃到第3个苹果吃饱了,不再吃任何苹果,结束吃苹果的行为。
continue类似于苹果有虫子:第3个苹果有虫子,不吃,继续吃第4个、第5个苹果,只是跳过有虫子的那个。
对比示例
使用break:
for i in range(1, 6):if i == 3:breakprint(i)
# 输出:1, 2
使用continue:
for i in range(1, 6):if i == 3:continueprint(i)
# 输出:1, 2, 4, 5
总结
缩进的重要性
Python独有的缩进机制:用4个空格表示代码层级,相同缩进等于同级代码,增加缩进等于嵌套代码,不用大括号,更简洁清晰。
条件语句总结
如下表所示:
| 语句类型 | 语法 | 应用场景 |
|---|---|---|
| if | if 条件: | 单一条件判断 |
| if-else | if 条件: ... else: | 二选一 |
| elif | if ... elif ... else: | 多选一 |
| 嵌套 | if内套if | 多层条件判断 |
循环语句总结
如下表所示:
| 循环类型 | 语法 | 特点 | 适用场景 |
|---|---|---|---|
| while | while 条件: | 条件控制 | 不确定次数 |
| for | for i in range(): | 次数控制 | 确定次数 |
循环控制总结
如下表所示:
| 关键字 | 作用 | 效果 |
|---|---|---|
| break | 终止循环 | 跳出整个循环 |
| continue | 跳过本次 | 进入下一次循环 |
