Python控制流完全指南

发布时间:2026/7/3 4:37:42
Python控制流完全指南 Python控制流完全指南从if判断到循环一篇就够了今天我们来聊聊Python编程中最重要的基石之一——控制流。简单来说控制流决定了你的程序在什么条件下执行什么代码以及如何重复执行某段代码。掌握它你就能写出逻辑清晰、功能强大的程序。一、缩进Python的“灵魂”与“骨架”在正式开始之前我们必须先聊聊Python最独特、也最重要的语法规则缩进。在其他编程语言如C、Java中代码块通常用花括号{}来界定。但在Python中代码块是通过缩进来表示的。同一层级的代码必须拥有相同的缩进量通常是4个空格或1个Tab。为什么缩进如此重要语法强制缩进错误会导致程序直接报错IndentationError无法运行。代码可读性强制缩进让代码结构一目了然强迫开发者写出整洁、规范的代码。示例# 正确的缩进age18ifage18:print(你已经成年了。)# 这行缩进了4个空格属于if代码块print(欢迎来到成人世界。)# 同样缩进属于if代码块print(这句话无论age是多少都会执行。)# 没有缩进与if同级# 错误的缩进# if age 18:# print(缩进错误) # 这行没有缩进会报错核心规则使用4个空格作为标准缩进PEP 8推荐。不要混用Tab和空格这会导致难以排查的错误。大多数现代IDE如PyCharm、VS Code会自动将Tab转换为空格。二、if 判断语句让程序拥有“大脑”if语句是程序做决策的基础。它根据一个条件布尔表达式的真假来决定是否执行特定的代码块。1. 基本语法if条件:条件为真时执行的代码块示例score85ifscore60:print(恭喜考试及格了)2. if-else 结构当条件为假时执行另一段代码。if条件:条件为真时执行的代码块else:条件为假时执行的代码块示例temperature30iftemperature25:print(今天很热开空调吧。)else:print(今天很凉爽出去走走。)3. if-elif-else 结构当有多个条件需要依次判断时使用elif是else if的缩写。if条件1:条件1为真时执行elif条件2:条件1为假且条件2为真时执行elif条件3:条件1和2为假且条件3为真时执行...else:所有条件都为假时执行示例score88ifscore90:gradeAelifscore80:gradeBelifscore70:gradeCelifscore60:gradeDelse:gradeFprint(f你的成绩等级是{grade})# 输出你的成绩等级是B注意if-elif-else是从上到下依次判断的一旦某个条件为真执行完对应的代码块后就会跳过整个if-elif-else结构。三、三元表达式简洁的条件赋值三元表达式是if-else的一种简洁写法常用于根据条件给变量赋值。语法变量值1if条件else值2如果条件为真变量被赋值为值1否则为值2。示例# 传统写法age20ifage18:status成年人else:status未成年人# 三元表达式写法status成年人ifage18else未成年人print(status)# 输出成年人适用场景当if-else结构非常简单且目的是为了赋值时使用三元表达式可以让代码更简洁。但不要滥用过于复杂的嵌套会降低可读性。四、for 循环遍历一切可迭代对象for循环用于遍历一个可迭代对象如列表、字符串、元组、字典、集合、range等中的每一个元素。1. 遍历列表fruits[苹果,香蕉,橘子]forfruitinfruits:print(f我喜欢吃{fruit})# 输出# 我喜欢吃苹果# 我喜欢吃香蕉# 我喜欢吃橘子2. 遍历字符串forcharinPython:print(char)# 输出P y t h o n (每个字母占一行)3. 使用 range() 函数range()可以生成一个整数序列常用于指定循环次数。# range(5) 生成 0, 1, 2, 3, 4foriinrange(5):print(f这是第{i1}次循环)# range(2, 6) 生成 2, 3, 4, 5foriinrange(2,6):print(i)# range(1, 10, 2) 生成 1, 3, 5, 7, 9 (步长为2)foriinrange(1,10,2):print(i)4. 遍历字典student{name:小明,age:18,score:95}# 遍历键forkeyinstudent:print(key)# 输出name age score# 遍历值forvalueinstudent.values():print(value)# 输出小明 18 95# 同时遍历键和值forkey,valueinstudent.items():print(f{key}:{value})五、while 循环条件为真循环不止while循环会在条件为真时重复执行代码块直到条件变为假。语法while条件:循环体代码块示例count0whilecount5:print(f当前计数{count})count1# 重要必须更新条件否则会变成无限循环print(循环结束)注意while循环必须确保条件最终会变为False否则程序会陷入无限循环。如果程序卡住了可以按CtrlC强制终止。六、循环控制break 和 continue在循环执行过程中我们有时需要提前退出或跳过某次迭代这时就需要break和continue。1. break立即终止整个循环break用于完全退出当前所在的循环体不再执行循环中剩余的迭代。示例# 查找列表中第一个大于10的数字numbers[3,7,12,5,20]fornuminnumbers:ifnum10:print(f找到第一个大于10的数字{num})break# 找到后立即退出循环print(f检查数字{num}不符合条件)# 输出# 检查数字3不符合条件# 检查数字7不符合条件# 找到第一个大于10的数字122. continue跳过本次循环进入下一次continue用于跳过当前这次迭代中continue之后的所有代码直接进入下一次循环的判断。示例# 打印1到10之间的所有奇数foriinrange(1,11):ifi%20:# 如果是偶数continue# 跳过本次循环不执行下面的printprint(i)# 输出1 3 5 7 9 (每个数字占一行)总结区别break终止整个循环。continue跳过当前这一次继续下一次。七、综合示例猜数字游戏写一个简单的猜数字游戏。importrandom# 1. 生成一个1到100之间的随机数target_numberrandom.randint(1,100)guess_count0max_attempts7print(欢迎来到猜数字游戏)print(f我已经想好了一个1到100之间的数字你有{max_attempts}次机会。)# 2. 使用while循环让玩家可以多次猜测whileguess_countmax_attempts:# 3. 获取玩家输入try:guessint(input(请输入你的猜测))exceptValueError:print(请输入一个有效的整数)continue# 输入无效跳过本次循环不消耗次数guess_count1# 4. 使用if-elif-else进行判断ifguesstarget_number:print(f恭喜你猜对了就是{target_number}。你用了{guess_count}次。)break# 猜对了使用break退出循环elifguesstarget_number:print(猜小了再大一点。)else:print(猜大了再小一点。)# 5. 使用if判断是否还有机会remainingmax_attempts-guess_countifremaining0:print(f你还有{remaining}次机会。)else:print(f很遗憾机会用完了。正确的数字是{target_number})print(游戏结束。)总结概念作用关键点缩进定义代码块4个空格同一层级必须对齐if-elif-else条件判断分支执行从上到下判断执行一个分支后跳出三元表达式简洁的条件赋值值1 if 条件 else 值2for循环遍历可迭代对象常用于固定次数的循环或遍历集合while循环条件循环注意更新条件防止无限循环break立即终止整个循环跳出循环体continue跳过本次循环的剩余部分进入下一次迭代