在编程的世界里,分支和循环是两大核心支柱——分支让代码拥有判断力,循环让代码具备重复执行的超能力。
今天,我们就从我的手搓教程代码里,挑出最经典的片段,带你彻底吃透 Python 的if、for、range、break、continue以及那些容易被忽略的细节。
一、分支结构(if / elif / else)
分支结构就像人生的岔路口,根据条件选择不同的路径。
1.最简单的双分支:比较大小
# 获取用户输入的第一个数字(字符串 → 浮点数) input_str1 = input("请输入第一个数字") value1 = float(input_str1) # 获取用户输入的第二个数字 input_str2 = input("请输入第二个数字") value2 = float(input_str2) # 判断 value1 是否大于 value2 if value1 > value2: print("第一个数大") # 条件成立时执行 else: print("第二个数大或相等") # 条件不成立时执行2.多分支:成绩等级评定(0~100)
# 输入成绩字符串,转为整数 input_score_str = input("输入一个成绩:") score_value = int(input_score_str) # 先判断成绩是否合法(0~100 之外不合法) if score_value < 0 or score_value > 100: print("成绩不合法") else: # 合法成绩再分等级 if score_value >= 90: print("优秀") elif score_value >= 70: # 70 ≤ score < 90 print("良好") elif score_value >= 60: # 60 ≤ score < 70 print("及格") else: # score < 60 print("渣渣")3.分支嵌套 + 用户交互(年龄验证 + 二次确认)
# 输入年龄 age = int(input("请输入你的年龄:")) # 根据年龄分三种情况 if age >= 18: print("可以查看") # 成年直接放行 elif 18 > age > 10: # 10 < age < 18 print("是否继续查看") # 嵌套分支:让用户输入 Yes 或 No tishi = str(input("请输入Yes或No:")) if tishi == "Yes" or tishi == "Y" or tishi == "y" or tishi == "yes": print("请查看") # 用户同意 elif tishi == "No" or tishi == "N" or tishi == "n" or tishi == "no": print("退出,放弃查看") # 用户拒绝 else: # age ≤ 10 print("不允许查看")二、循环结构(for 循环)
Python 中最常用的循环是for,它擅长遍历任何可迭代对象(列表、字符串、range序列等)。
1.基础遍历:逐个打印列表中的元素
# 定义一个列表,依次将元素赋值给变量 i for i in [1, 2, 3, 4, 5]: print(i) # 打印当前元素2. 配合range()生成整数序列
range(start, stop, step)是 Python 内置的整数生成器,左闭右开(包含start,不包含stop)。
# 查看 range 到底生成了什么(转为列表便于观察) r = range(5) # 0,1,2,3,4 datas = list(r) # 转换为列表 print(datas) # [0, 1, 2, 3, 4] r2 = range(1, 5) # 1,2,3,4 datas2 = list(r2) print(datas2) # [1, 2, 3, 4] r3 = range(1, 9, 2) # 1,3,5,7 (步长为2) datas3 = list(r3) print(datas3) # [1, 3, 5, 7] r4 = range(16, 0, -3) # 16,13,10,7,4,1 (步长为-3,倒序) datas4 = list(r4) print(datas4) # [16, 13, 10, 7, 4, 1]# 遍历 range 生成的数字并打印 for a in range(1, 16, 2): # 1,3,5,7,9,11,13,15 print(a)3.经典应用:计算 1~100 的和
total = 0 # 累加器初始为 0 for b in range(1, 101): # 遍历 1 到 100 total = total + b # 每次累加当前数 print(total) # 输出 50504.水仙花数(100~1000 之间的三位数)
total = 0 # 遍历所有三位数(100 到 999,但 range(100,1001) 包含 1000,不过 1000 不是三位数,但立方和不会等于自身,所以不影响) for x in range(100, 1001): # 拆解百位、十位、个位 bai = x // 100 % 10 shi = x // 10 % 10 ge = x % 10 # 计算各位立方和 shuixianhua = bai ** 3 + shi ** 3 + ge ** 3 # 判断是否为水仙花数 if x == shuixianhua: total = total + x # 累加符合条件的数 print(f"水仙花数有:{shuixianhua}") print(f"水仙花数的和是:{total}")三、循环控制利器:break、continue 和 for...else
1.break:立即终止整个循环
# 循环 0~9,但 break 在第一次就触发了 for i in range(10): break # 执行到这里,循环立刻结束,后面的 print 不会执行 print(i) # 这行代码永远不会运行2.continue:跳过本次循环,直接进入下一次
# 遍历 0~19 for i in range(20): if i == 3: continue # 当 i=3 时,跳过下面的 print,直接进入 i=4 print(i) # 输出除了 3 以外的 0~19 所有整数3.for...else:循环没有被break中断时才执行else
# 遍历 0~14 for i in range(15): print(i) # 打印当前 i if i == 12: break # 当 i=12 时 break,循环提前结束 else: print("the end") # 因为 break 了,所以 else 不会执行 # 如果将 break 条件改为 i == 20(永远不会成立),则 else 会执行应用场景:常用于在循环中查找某个元素,如果找到了就break,没找到则执行else里的“未找到”处理逻辑。
四、嵌套循环:循环里面套循环
外层循环每变化一次,内层循环都会完整执行一轮。
# 三层嵌套,展示所有组合 for i in range(1, 3): # i = 1, 2 for j in range(1, 3): # j = 1, 2(对每个 i 都会完整遍历) for k in range(1, 3): # k = 1, 2(对每个 j 都会完整遍历) print(f"i:{i} j:{j} k:{k}")实战:打印 9×9 乘法表(上三角)
# 外层循环控制行(1~9) for i in range(1, 10): # 内层循环控制列(1~9) for j in range(1, 10): # 只打印 j <= i 的部分(上三角) if j <= i: # end="\t" 让输出不换行,用制表符分隔 print(f"{i}*{j}={i*j}", end="\t") # 每行结束后换行 print()输出效果:
五、额外彩蛋:随机模块与列表(来自我的其他笔记)
虽然不属于分支循环,但既然你看到了这里,顺便分享两个实用小技巧:
1.随机选一个元素
import random # 导入随机模块 # 从元组中随机选择一个元素 print(random.choice(["老咪", "小咪", "黑子", "牢大", "牢弟儿"]))2.随机采样(不重复抽取 k 个)
# 从一周七天中随机选 4 天(不重复) print(random.sample(("周一", "周二", "周三", "周四", "周五", "周六", "周日"), k=4))总结
| 结构 | 关键字 | 作用 |
|---|---|---|
| 分支 | ifelifelse | 根据条件执行不同代码块 |
| 循环 | forin | 遍历序列或 range |
| 范围生成 | range(start, stop, step) | 生成整数序列(左闭右开) |
| 提前终止 | break | 立即结束整个循环 |
| 跳过本次 | continue | 跳过本次循环剩余代码,继续下一次 |
| 循环正常结束 | else(与for搭配) | 循环没有被break中断时执行 |
以上所有代码均来自我日常练习的
.py文件,全部亲手敲过,并添加了详细注释,确保可运行。
如果你也想成为 Python 循环与分支的掌控者,多写多练就是最快的捷径!
下次见~