Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)

Python 流程控制完全指南:条件语句 + 循环语句 + 实战案例(零基础入门)
在这里插入图片描述

🔥草莓熊Lotso:个人主页
❄️个人专栏: 《C++知识分享》《Linux 入门到实践:零基础也能懂》
✨生活是默默的坚持,毅力是永久的享受!


🎬 博主简介:

在这里插入图片描述

文章目录


前言:

掌握变量、类型和运算符后,要写出有逻辑、能解决实际问题的 Python 程序,核心是掌握流程控制—— 也就是让代码 “按需执行”“重复执行”。Python 的流程控制主要包括条件语句(if-elif-else)和循环语句(while/for),它们是实现复杂逻辑(如游戏、工具脚本)的基础。本文结合核心知识点,从条件语句的语法规则、循环语句的灵活用法,到空语句 pass 的作用,再到综合实战案例,一步步帮你吃透 Python 流程控制,让代码按照你的想法 “听话执行”。


一. 顺序语句:基础执行语句

默认情况下,Python的代码执行顺序是按照从上到下的顺序,依次执行的。

# 默认情况下,Python 代码的执行顺序,是从上到下依次执行的.# 这个顺序是不会乱的~print("111")print("222")print("333")

执行结果一定为111,222,333而不会是其他的顺序。这种按照顺序执行的代码,我们称为顺序语句
注意:这个顺序是很关键的,编程是一件明确无歧义的事情,安装好任务的顺序,计算机才能够正确的进行执行。就好像人生的顺序,是上学,工作,结婚,生子。一旦这里的顺序乱了,就很麻烦。


二. 条件语句:实现 “如果… 否则…” 逻辑

条件语句(也叫分支语句)让程序根据不同条件执行不同代码块,核心关键字是ifelifelse

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

breakcontinue用于灵活控制循环执行,避免不必要的迭代。
(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的灵活控制,你就能写出解决实际问题的脚本(如数据统计、自动化工具、小游戏)。建议多动手练习案例(比如修改 “人生重开模拟器”,增加青年、壮年阶段的逻辑),通过实战巩固语法,培养 “用代码解决问题” 的思维。

✨把这些内容吃透超牛的!放松下吧✨ʕ˘ᴥ˘ʔづきらど

Read more

从拼搭到人工智能:青少年机器人编程的系统化学习攻略

很多家长问我:“孩子今年X岁,对乐高和编程感兴趣,想学机器人,到底该怎么开始?家里正好有一套泺喜的教具,该怎么利用起来?” 作为一位深耕青少儿编程教育的从业者,我想说:机器人编程不是单纯写代码,它是机械工程、电子电路和计算机科学的综合体。 如果学习路径走错了,很容易在某个阶段遇到瓶颈,导致孩子产生畏难情绪而放弃。而泺喜的金属教具,以其高精度、高强度、接近工业级的特点,为孩子提供了一条更硬核、更贴近真实工程的成长路径。 今天,我们就来梳理一套适合青少年、并结合泺喜教具特色的 “机器人编程系统化学习金字塔” ,帮助孩子从零基础一路通关到人工智能。 第一阶段:机械启蒙与动手感知(6-9岁) 关键词:金属构件、螺丝紧固、传动原理 这个年龄段的孩子还处于皮亚杰认知理论中的“前运算阶段”向“具体运算阶段”过渡期。他们无法理解抽象的语法,但能通过双手感知物理世界。 * 学习内容: 1. 机械搭建:使用泺喜的金属构件(梁、板、轴、齿轮、螺丝螺母),学习使用螺丝刀、

By Ne0inhk
DAY4 基于 OpenClaw + 飞书开放平台实现 AI 新闻推送机器人

DAY4 基于 OpenClaw + 飞书开放平台实现 AI 新闻推送机器人

DAY4 基于 OpenClaw + 飞书开放平台实现 AI 新闻推送机器人 目录 DAY4 基于 OpenClaw + 飞书开放平台实现 AI 新闻推送机器人 前  言 1 环境准备 1.1 华为云开发环境 1.2 ModelArts 代金券与模型服务 1.3 启动 OpenClaw 网关 2 飞书开放平台配置 2.1 创建企业自建应用 2.2 添加机器人能力 2.3 配置应用权限 2.4 发布应用版本 3 OpenClaw 与飞书集成 3.1 配置 OpenClaw

By Ne0inhk
airsim无人机自动避障路径规划自动跟踪实验辅导

airsim无人机自动避障路径规划自动跟踪实验辅导

计算机人工智sci/ei会议/ccf/核心,擅长机器学习,深度学习,神经网络,语义分割等计算机视觉,精通大小lun文润色修改,代码复现,创新点改进等等。文末有方式 2025-2026最容易出顶会/毕业论文的热门方向之一:   基于AirSim的无人机深度强化学习路径规划——你真的“卷”对了吗? 如果你现在还在做传统A*、RRT、DWA、人工势场、或者纯深度学习的端到端避障…… 那很抱歉,2025年底~2026年审稿人和答辩老师已经开始审美疲劳了。 真正让审稿人眼睛一亮、让毕业答辩现场鸦雀无声的关键词组合,现在大概长这样: AirSim + 深度强化学习 + 无人机 + 路径规划 + Sim-to-Real + 视觉/激光融合 + 端到端 + 稀疏奖励 下面这几个组合,几乎是目前最容易做出“看上去就很前沿”的实验结果的赛道(尤其适合发中文核心、EI、SCI三区~二区,以及部分顶会workshop): 1.DQN/DDPG/

By Ne0inhk

【无人机避障算法核心技术】:揭秘五种主流算法原理与实战应用场景

第一章:无人机避障算法概述 无人机避障算法是实现自主飞行的核心技术之一,其目标是在复杂环境中实时感知障碍物,并规划安全路径以避免碰撞。随着传感器技术和计算能力的提升,避障系统已从简单的距离检测发展为融合多源信息的智能决策体系。 避障系统的基本组成 典型的无人机避障系统包含以下关键模块: * 感知模块:利用激光雷达、超声波、立体视觉或RGB-D相机获取环境数据 * 数据处理模块:对原始传感器数据进行滤波、特征提取和障碍物识别 * 决策与规划模块:基于环境模型生成避障轨迹,常用算法包括A*、Dijkstra、RRT和动态窗口法(DWA) 常见避障算法对比 算法优点缺点适用场景A*路径最优,搜索效率高高维空间计算开销大静态环境全局规划DWA实时性强,适合动态避障局部最优风险室内低速飞行RRT*渐进最优,适应复杂空间收敛速度慢三维未知环境 基于深度学习的避障方法示例 近年来,端到端神经网络被用于直接从图像生成控制指令。以下是一个简化的行为克隆模型推理代码片段: import torch import torchvision.transforms as tran

By Ne0inhk