Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)
🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!
🎬 博主简介:
文章目录
前言:
掌握变量、类型和运算符后,要写出有逻辑、能解决实际问题的 Python 程序,核心是掌握流程控制—— 也就是让代码 “按需执行”“重复执行”。Python 的流程控制主要包括条件语句(if-elif-else)和循环语句(while/for),它们是实现复杂逻辑(如游戏、工具脚本)的基础。本文结合核心知识点,从条件语句的语法规则、循环语句的灵活用法,到空语句 pass 的作用,再到综合实战案例,一步步帮你吃透 Python 流程控制,让代码按照你的想法 “听话执行”。
一. 顺序语句:基础执行语句
默认情况下,Python的代码执行顺序是按照从上到下的顺序,依次执行的。
# 默认情况下,Python 代码的执行顺序,是从上到下依次执行的.# 这个顺序是不会乱的~print("111")print("222")print("333")执行结果一定为111,222,333而不会是其他的顺序。这种按照顺序执行的代码,我们称为顺序语句。
注意:这个顺序是很关键的,编程是一件明确无歧义的事情,安装好任务的顺序,计算机才能够正确的进行执行。就好像人生的顺序,是上学,工作,结婚,生子。一旦这里的顺序乱了,就很麻烦。
二. 条件语句:实现 “如果… 否则…” 逻辑
条件语句(也叫分支语句)让程序根据不同条件执行不同代码块,核心关键字是if、elif、else。
2.1 核心语法格式
Python 的条件语句有 3 种常见形式,语法简洁且强制缩进(4 个空格或 1 个 Tab)区分代码块,不用大括号{}。
(1)单分支:if
满足条件才执行代码块,不满足则跳过:
# 语法格式""" if 条件表达式: 满足条件执行的代码1 满足条件执行的代码2 """# 示例:输入年龄,判断是否成年 age =int(input("请输入你的年龄:"))if age >=18:print("你已成年,可以独立上网~")(2)双分支:if-else
满足条件执行一个代码块,不满足执行另一个,非此即彼:
# 语法格式""" if 条件表达式: 满足条件执行的代码 else: 不满足条件执行的代码 """# 示例:输入数字,判断奇偶 num =int(input("请输入一个整数:"))if num %2==0:print(f"{num} 是偶数")else:print(f"{num} 是奇数")(3)多分支:if-elif-else
处理多个条件判断,只要有一个条件满足就执行对应代码块,后续不再判断:
# 语法格式""" if 条件1: 执行代码1 elif 条件2: 执行代码2 elif 条件3: 执行代码3 else: 所有条件都不满足时执行的代码 """# 示例:输入成绩,判断等级 score =int(input("请输入你的成绩:"))if score >=90:print("优秀")elif score >=80:print("良好")elif score >=60:print("及格")else:print("不及格,需要补考~")# 用户输入一个数字,如果输入 1 表示愿意认真学习,输入 2 表示想躺平摆烂. choice =input("如果输入 1 表示愿意认真学习,输入 2 表示想躺平摆烂: ")# 注意这里比较的是 字符串 1, 不是 整数 1if choice =="1":print('你能找到好工作')elif choice =="2":print('你可能毕业就失业了')else:# 除了 1 和 2 其他的都是非法情况print('你的输入有误!')2.2 关键注意点
条件表达式后必须加冒号:,否则语法报错;代码块必须缩进,缩进级别一致的代码属于同一代码块;多分支用elif(不是else if),else可选,放在最后;支持条件嵌套(if 里套 if),但嵌套层级不宜过多(建议不超过 3 层),否则可读性差:
实际示例:
# 如果 a == '1' 条件成立,就打印 'aaaa' 和 'bbbb'# 如果条件不成立,那就只打印 'bbbb'# a = input('请输入一个整数: ')# if a == '1':# print("aaaa")# print("bbbb")# 如果 a == '1' 条件成立,就打印 'aaaa' 和 'bbbb'# 如果条件不成立,那就什么都不打印# a = input('请输入一个整数: ')# if a == '1':# print("aaaa")# print("bbbb")# 错误写法# File "D:\Gitee.code\python-fundamentals-\PythonProject\2025--11--19\code18.py", line 18# print("aaaa")# ^^^^^# IndentationError: expected an indented block after 'if' statement on line 17# a = input('请输入一个整数: ')# if a == '1':# print("aaaa")# print("bbbb") a =input("Enter the First number: ") b =input("Enter the Second number: ")# 条件嵌套if a =='1':if b =='2':print("aaa")print("bbb")print("ccc")2.3 空语句 pass:占位符作用
当条件语句中暂时没有要执行的代码时,用pass占位(保持语法完整),否则会报错:
# 输入一个数字,如果数字为 1,则打印 hello a =input("请输入一个数字: ")if a =='1':# 啥都不做pass# 空语句else:print('hello')2.4 练习题
# (1) 输入一个整数,判定是否是奇数 a =int(input("请输入一个整数: "))if a %2==0:print("偶数")else:print("奇数")# Python 中也像下面可以这样写,这里是负数也没影响,eg: -19 % 2 == 1# C++/Java 不行,因为如果是负数,eg: -19 % 2 == -1(!=1)# if a % 2 == 1:# print("奇数")# else:# print("偶数")# (2) 输入一个整数,判定是正数还是负数 a =int(input("请输入一个整数: "))if a >0:print("正数")elif a <0:print("负数")else:print("0")# (3) 判定年份是否是闰年# 能被 4 整除,不能被 100 整除# 能被 400 整除 year =int(input("请输入一个年份: "))if(year %4==0and year %100!=0)or year %400==0:print("闰年")else:print("平年")# if year % 100 == 0:# # 世纪闰年的判定# if year % 400 == 0:# print("闰年")# else:# print("平年")# else:# # 普通闰年的判定# if year % 4 == 0:# print("闰年")# else:# print("平年")三. 循环语句:实现 “重复执行” 逻辑
循环语句让代码块重复执行,Python 支持while循环和for循环,各有适用场景。
3.1 while 循环:条件满足就一直执行
while循环适合 “不确定循环次数,但知道循环终止条件” 的场景,核心是 “先判断条件,再执行循环体”。
语法格式:
""" while 循环条件: 循环体代码 (可选)更新循环变量(避免死循环) """经典示例:
- 示例 1:打印 1-10 的整数
# 打印 1-10 的整数 num =1while num <=10:print(num) num +=1# 更新循环变量,否则会无限循环- 示例 2:计算 1-100 的总和
# 计算 1-100 的和# theSum用来表示计算的和 theSum =0 num =1while num <=100: theSum += num num +=1print(theSum)- 示例 3:计算 5 的阶乘(5! = 5×4×3×2×1)
# 计算 5 的阶乘 ret =1 num =1while num <=5: ret *= num num +=1print(ret)- 示例4:求 1! + 2! + 3! + 4! + 5!
# 计算 1! + 2! + 3! + 4! + 5! theSum =0 num =1while num <=5:# 先计算出当前 num! 是多少,再往 theSum 上进行累加 i =1 ret =1while i <= num: ret *= i i +=1 theSum += ret num +=1print(f'sum = {theSum}')3.2 for 循环:遍历可迭代对象
for循环适合 “已知循环次数” 或 “遍历序列 / 集合” 的场景,语法简洁,不用手动管理循环变量,核心是 for 变量 in 可迭代对象。
核心语法:
""" for 循环变量 in 可迭代对象: 循环体代码 """- 可迭代对象:包含多个元素的对象(如列表、字符串、
range生成的序列); range()函数:生成整数序列,常用格式:range(n):生成 0~n-1 的序列(如range(5)→ 0,1,2,3,4);range(a, b):生成 a~b-1 的序列(如range(1, 6)→ 1,2,3,4,5);range(a, b, step):生成 a~b-1 的序列,步长为 step(如range(2, 11, 2)→ 2,4,6,8,10)
经典示例:
- 示例 1:打印 1-10(用 range)
# 打印 1-10for i inrange(1,11):print(i)- 示例 2:打印 2,4,6,8,10(步长为2)
# 打印 2,4,6,8,10for i inrange(2,12,2):print(i)- 示例 3:打印 10-1(步长为负)
# 打印从 10 到 1 num =10# while num >= 1:# print(num)# num -= 1for i inrange(10,0,-1):print(i)- 示例 4:计算 1-100 的总和
# 求 1 + 2 + 3 + …… + 100 theSum =0for i inrange(1,101): theSum += i print(f'sum = {theSum}')- 示例5:计算 1! + 2! + 3! + 4! + 5!
# 计算 1! + 2! + 3! + 4! + 5! theSum =0for i inrange(1,6): ret =1for j inrange(1,i+1): ret *= j theSum += ret print(f'sum = {theSum}')3.3 循环控制:break 和 continue
break和continue用于灵活控制循环执行,避免不必要的迭代。
(1)break:终止整个循环
遇到break直接退出循环,后续循环体不再执行:
# 示例:模拟吃包子,吃到第3个发现虫子,停止继续吃for i inrange(1,6):if i ==3:print(f"吃到第{i}个包子,发现半只虫!停止进食~")breakprint(f"吃完第{i}个包子")输出结果:
吃完第1个包子 吃完第2个包子 吃到第3个包子,发现半只虫!停止进食~ (2)continue:跳过本次循环,进入下次
遇到continue跳过当前循环体剩余代码,直接判断下一次循环条件:
# 示例:模拟吃包子,吃到第3个发现虫子,跳过这个,继续吃下一个for i inrange(1,6):if i ==3:print(f"吃到第{i}个包子,发现一只虫!扔掉这个~")continueprint(f"吃完第{i}个包子")输出结果:
吃完第1个包子 吃完第2个包子 吃到第3个包子,发现一只虫!扔掉这个~ 吃完第4个包子 吃完第5个包子 注意:其实我们的while循环和for循环也是可以循环使用的
# 示例:计算1! + 2! + 3! + 4! + 5!(阶乘和) sum_fact =0# 外层循环:控制计算到第几个阶乘for num inrange(1,6): fact =1# 内层循环:计算当前num的阶乘for i inrange(1, num +1): fact *= i sum_fact += fact print(f"1!+2!+3!+4!+5! = {sum_fact}")# 输出:153四. 综合实战:人生重开模拟器(简化版)
结合条件语句和循环语句,实现一个热门文字游戏的核心逻辑,让你直观感受流程控制的用法。
游戏规则:
- 设定初始属性(颜值、体质、智力、家境),总和不超过 20;
- 随机生成性别(掷骰子:单数为男孩,双数为女孩);
- 根据家境生成出生点,影响初始属性;
- 模拟 1-10 岁的人生经历,每年随机触发事件,更新属性。
- 再后面的中年和老年阶段大家可以自己下去实现完善一下
完整代码:
# 人生重开模拟器import random import sys import time print('+----------------------------------------------------------+')print('| |')print('| 花有重开日,人无再少年 |')print('| |')print('| 欢迎来到,人生重开模拟器 |')print('| |')print('+----------------------------------------------------------+')# 设置初始属性# 颜值,体质,智力,家境,总和不能超过 20,每一项取值都是 1-10 之间# 使用循环,使玩家在输入错误的时候,可以重新输入whileTrue:print("请设置初始属性(可用点数总数为 20)") face =int(input("请输入颜值(1-10): ")) strong =int(input("请输入体质(1-10): ")) iq =int(input("请输入智商(1-10): ")) home =int(input("请输入家境(1-10): "))# 通过条件语句,对于用户输入的属性值做出检验检查# 这段逻辑,使用 elif 其实也是完全没问题的# 使用 elif 则是多个分支只能进一个,一旦一个条件满足了,就不会再走其他的分支了# 此处虽然没有使用 elif ,但是有了 continue,一旦某个条件满足,continue 就会使循环从头再来# 也就没机会执行后续的条件判定了if face <1or face >10:print("颜值设置有误!")continueif strong <1or strong >10:print("体质设置有误!")continueif iq <1or iq >10:print("智商设置有误!")continueif home <1or home >10:print("家境设置有误!")continueif face + strong + iq + home >20:print("总的属性和超出了 20,设置有误!")continue# 如果当前上面的条件都没有触发,则认为玩家输入的数据是合法的# 此时就可以跳出循环结束输入了print("初始属性输入完毕!")print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")break# 生成角色的性别# 使用 random.randint(beg,end),就能生成[beg,end]随机整数 point = random.randint(1,6)# print(f'point = {point}')if point %2==1: gender ='boy'print("你是个男孩")else: gender ='girl'print("你是个女孩")# 设置角色出生点# 为了简单,就直接生产 1-3 的随机数 point = random.randint(1,3)if home ==10:# 第一档print("你出生在帝都,你的父母都是高官政要") home +=1 iq +=1 face +=1elif7<= home <=9:# 第二档if point ==1:print("你出生在大城市,父母是公务员") face +=2elif point ==2:print("你出生在大城市,父母是企业高官") home +=2else:print("你出生在大城市,父母是大学教授") iq +=2elif4<= home <=6:# 第三档if point ==1:print("你出生在三线城市,你的父母是医生") strong +=1elif point ==2:print("你出生在镇上,你的父母是老师") iq +=1else:print("你出生在镇上,你的父母是个体户") home +=1else:# 第四档if point ==1:print("你出生在农村,父母是辛苦劳作的农民") strong +=1 face -=2elif point ==2:print("你出生在穷乡僻壤,你的父母是无业游民") home -=1else:print("你出生在镇上,你的父母感情不合") strong -=1print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")# 幼年阶段for age inrange(1,11):# 把一整年的打印都整理到一个字符串中,在这一年的结尾统一打印 info =f'你今年{age}岁. '# 生产一个 [1,3] 的随机整数 point = random.randint(1,3)# 接下来编写各种事件的代码# 性别触发的事件if gender =='girl'and home <=3and point ==1: info +="你家里人重男轻女思想非常严重,你被遗弃了!"print(info)print("游戏结束!") sys.exit(0)# 体质触发的事件# 使用 elif 是为了保证每年只触发一个事件!elif strong <6and point <3: info +="你生了一场病, "if home >=5: info +="在父母的悉心照料下,你康复了" strong +=1 home -=1else: info +="你的父母没精力管你,你的身体情况更糟糕了"# 颜值触发的事件elif face <=4and age >=7: info +="你长的太丑了,别的小朋友都不喜欢你"if iq >5: info +="你开始发奋图强,努力学习" iq +=1else:if gender =='boy': info +="你和别的小朋友经常打架!" strong +=1 iq -=1else: info +="你经常被别的小朋友欺负" strong -=1# 智商触发的事件elif iq <5: info +="你看起来傻傻的. "if home >=8and age >=6: info +="你的父母把你送到更好的学校学习" iq +=1elif4<= home <=7:if gender =='boy': info +="你的父母鼓励你多运动,争取成为运动员" strong +=1else: info +="你的父母鼓励你多打扮自己" face +=1else:# 家境 < 4 info +="你的父母为此经常吵架"if point ==1: strong -=1elif point ==2: iq -=1else:pass# 健康成长事件else: info +="你健康成长. "if point ==1: info +="你看起来更结实了. " strong +=1elif point ==2: info +="你看起来更好看了. " face +=1else:# 无事发生pass# 打印这一年发生的事情print(info)print(f"颜值: {face},体质: {strong},智商: {iq},家境: {home}")print("--------------------------------------------------")# 为了方便观察,加一个小小的暂停动作 time.sleep(1)结尾:
🍓 我是草莓熊 Lotso!若这篇技术干货帮你打通了学习中的卡点: 👀 【关注】跟我一起深耕技术领域,从基础到进阶,见证每一次成长 ❤️ 【点赞】让优质内容被更多人看见,让知识传递更有力量 ⭐ 【收藏】把核心知识点、实战技巧存好,需要时直接查、随时用 💬 【评论】分享你的经验或疑问(比如曾踩过的技术坑?),一起交流避坑 🗳️ 【投票】用你的选择助力社区内容方向,告诉大家哪个技术点最该重点拆解 技术之路难免有困惑,但同行的人会让前进更有方向~愿我们都能在自己专注的领域里,一步步靠近心中的技术目标! 结语:Python 的流程控制是编程逻辑的核心,条件语句让程序 “有选择”,循环语句让程序 “省力气”。掌握if-elif-else、while、for的用法,再结合break、continue的灵活控制,你就能写出解决实际问题的脚本(如数据统计、自动化工具、小游戏)。建议多动手练习案例(比如修改 “人生重开模拟器”,增加青年、壮年阶段的逻辑),通过实战巩固语法,培养 “用代码解决问题” 的思维。
✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど