当前位置: 首页 > news >正文

Python中的流程控制实现,附python画爱心代码

Python流程控制

在流程控制介入之前,代码只能从上到下依次执行,这个状态的代码还处于一个没有灵魂的状态

流程控制是让代码实现 判断分支 和 重复执行 的核心,加入流程控制之后,我们的代码就可以处理复杂的逻辑需求了

而流程控制一般又有条件控制循环控制

条件控制语句(if-elif-else)

条件控制语句可以让程序根据不同的条件执行不同的代码

基础语法规则如下

# 单分支:满足条件才执行if条件表达式:# 条件表达式返回布尔值(True/False),末尾必须加冒号代码块# 缩进(4个空格/Tab)表示属于if的代码块# 双分支:二选一执行if条件表达式:满足条件的代码块else:不满足条件的代码块# 多分支:多选一执行if条件1:代码块1elif条件2:# 可写多个elif代码块2else:# 可选,所有条件都不满足时执行代码块3

使用if语句时需注意以下几点:

  • 条件表达式可以是直接的布尔值比较运算逻辑运算,甚至是任意能被隐式转为布尔值的对象(空字符串 / 0 / 空列表为 False,其余为 True);
  • 代码块必须缩进
  • elifelse不能单独使用,必须跟在if后面;
  • 多分支中只要一个条件满足,后续条件不再判断(执行完对应代码块就跳出分支)

话不多说,直接上代码:

以学生信息为例

age:年龄

score:分数

gender:性别

age=20score=88gender=0# 假设0表示女生,1表示男生# 可以通过以上内容输出这位同学的相关信息# 先判断是否成年print('是否成年:')ifage>=18:print('成年人')else:print('未成年人')# 再判断成绩的等级:A对应90以上,B对应80~89,C对应70~79,D对应60~69,E对应60以下print('该学生的成绩等级:')ifscore>=90:print('A')elifscore>=80:print('B')elifscore>=70:print('C')elifscore>60:print('D')else:print('E')# 最后判断学生性别,可以使用if else,也可以使用2个if判断print('该学生的性别:')ifgender==0:print('女')ifgender==1:print('男')

结果如下:

是否成年: 成年人 该学生的成绩等级: B 该学生的性别: 女

三元表达式写法:

# 结果1 if 条件 else 结果2# 如果条件为真取结果1,否则取结果2age=12result='成年'ifage>=18else'未成年'print(result)

结果如下:

未成年

循环控制(for、while)

循环是指:如果指定的条件成立,就会一直执行想要执行部分的代码,直到条件不成立或者在循环体中手动写一个中断,程序才会停止运行

外面想要重复执行的那部分代码称之为:循环体

while循环
while条件表达式:# 条件为True时,重复执行代码块循环体(缩进代码)# 必须有让条件最终变为False的逻辑,否则会陷入死循环

注意避免死循环(代码会一直执行,终止条件处于不可到达的状态)

示例代码:

  • 实现一个计数代码,输出1~100所有的数

如果不采用循环的,我们就需要一直使用print,从1~100写100条print,显然有点呆了

具体实现如下

a=1whilea<=100:print(a)a+=1# 每次输出完之后,让a+1,否则会一直输出1,并且不会退出
  • 给定一个数字,我们通过输入的方式,将我们猜的数字反馈给程序,程序根据我们输入的数字给我们反馈,直到猜到指定数字
secret_num=6whileTrue:# 先无限循环# input 用于从控制台接收输入的数据,每次输入数据后回车输入数据guess=int(input("猜1-10的数字:"))ifguess==secret_num:print("猜对了!")break# 猜对后终止循环elifguess<secret_num:print("猜小了")else:print("猜大了")

结果如下:

猜1-10的数字:4 猜小了 猜1-10的数字:9 猜大了 猜1-10的数字:5 猜小了 猜1-10的数字:6 猜对了!
for

遍历「可迭代对象」(列表、字符串、字典、range 序列等),逐个取出元素执行循环体,是 Python 中最常用的循环。

for变量名in可迭代对象:循环体(每次循环,变量名会被赋值为可迭代对象的下一个元素)

示例代码:

# 遍历字符串(逐字符输出)forcharin"Python":print(char)# 输出:P、y、t、h、o、n# 遍历列表(逐个输出元素)fruits=["苹果","香蕉","橙子"]forfruitinfruits:print(f"我喜欢吃{fruit}")# 遍历range序列(生成数字范围,最常用)# range(开始, 结束, 步长):结束值不包含,步长默认1foriinrange(1,6):# 生成1、2、3、4、5print(i)foriinrange(0,10,2):# 生成0、2、4、6、8print(i)# 遍历字典(默认遍历键,可指定遍历值/键值对)student={"name":"小明","age":18,"gender":"男"}# 遍历键forkeyinstudent:print(key,student[key])# 输出:name 小明;age 18;gender 男# 遍历键值对fork,vinstudent.items():print(f"{k}{v}")

具体结果如下:

P y t h o n 我喜欢吃苹果 我喜欢吃香蕉 我喜欢吃橙子1234502468name 小明 age18gender 男 name:小明 age:18 gender:男

循环控制辅助语句(break/continue/pass)

这三个语句用于在循环中精准控制执行流程,是循环的 “辅助开关”。

语句作用
break立即终止整个循环,跳出循环体,后续循环不再执行
continue跳过本次循环的剩余代码,直接进入下一次循环的条件判断
pass空语句,仅作为 “占位符”(语法上需要代码块但暂时无逻辑时用,不影响执行)

示例代码:

# :break(终止循环)foriinrange(1,6):ifi==3:break# 当i=3时,终止整个循环print(i)# 输出:1、2(3及之后不执行)# continue(跳过本次循环)foriinrange(1,6):ifi==3:continue# 跳过i=3的打印,直接进入下一次循环print(i)# 输出:1、2、4、5(3被跳过)# pass(占位符)foriinrange(1,6):ifi==3:pass# 暂时无逻辑,先占位,不影响循环执行print(i)# 输出:1、2、3、4、5(无任何影响)# while中使用break/continuei=1whilei<=5:i+=1ifi==3:continue# 跳过i=3的打印ifi==5:break# 终止循环print(i)# 输出:2、4

结果如下:

1212451234524

流程控制嵌套

分支和循环可以互相嵌套,实现复杂逻辑(比如 “循环里加判断”“判断里加循环”“循环嵌套循环”)

  • 筛选一定范围内的偶数
nums=[1,2,3,4,5,6]fornuminnums:ifnum%2==0:print(f"{num}是偶数")else:print(f"{num}是奇数")

结果打印如下:

1是奇数2是偶数3是奇数4是偶数5是奇数6是偶数
  • 实现九九乘法表
# 外层循环控制行数(1-9)foriinrange(1,10):# 内层循环控制每行的列数(1-i)forjinrange(1,i+1):print(f"{j}×{i}={i*j}",end="\t")# end="\t" 不换行,用制表符分隔print()# 每行结束后换行

效果如下:

1×1=11×2=22×2=41×3=32×3=63×3=91×4=42×4=83×4=124×4=161×5=52×5=103×5=154×5=205×5=251×6=62×6=123×6=184×6=245×6=306×6=361×7=72×7=143×7=214×7=285×7=356×7=427×7=491×8=82×8=163×8=244×8=325×8=406×8=487×8=568×8=641×9=92×9=183×9=274×9=365×9=456×9=547×9=638×9=729×9=81

python绘制爱心

代码实现:

# 定义爱心的数学函数(心形线方程)foryinrange(15,-15,-1):line=""forxinrange(-30,30):# 心形线方程:((x*0.05)^2 + (y*0.1)^2 - 1)^3 - (x*0.05)^2 * (y*0.1)^3 <= 0formula=((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3ifformula<=0:# 在爱心内部填充字符line+='*'else:# 爱心外部填充空格line+=' 'print(line)

实现效果自行尝试哦

http://www.cnnetsun.cn/news/135414.html

相关文章:

  • AgentWeb混合开发终极指南:5步实现原生与Web无缝融合
  • 新手如何挖漏洞?看这一篇足够
  • 001 PyTorch实战:手写数字识别(MNIST)从零开始
  • 基于LCL滤波器的单相逆变器并网控制电路仿真研究:dq坐标系网侧电流闭环控制的实现与验证
  • RAG开发避坑指南:12个常见痛点与解决方案,从入门到精通,收藏这篇就够了!
  • 5分钟搞定Python控制Android设备:py-scrcpy-client实战指南
  • Simple Live:跨平台直播聚合神器,重新定义你的观看方式
  • 谷歌 Gemini 3 内测引爆业内讨论:为AI行业带来了哪些惊人的突破?
  • T型槽铸铁平台:工业基石与现代制造的完美融合
  • 基于Spring Boot的校园部门资料管理系统
  • Android截屏限制解决方案:DisableFlagSecure使用指南
  • 完全掌握Mac菜单栏图标隐藏技巧:Dozer深度实战指南
  • 教你快速从Vue 开发者 → React开发者转变!
  • AI薪资暴涨到4.7万/月!人才争夺白热化,程序员必学大模型技能,建议收藏
  • ALOHA双臂机器人实战指南:从零搭建低成本远程控制系统
  • Dependency-Check软件组成分析工具:从入门到精通的完整指南
  • 预算49800,99800,299800能买到什么样的算力服务器
  • SQLCoder-7B-2终极指南:3分钟让AI帮你写SQL
  • 数字时代的火眼金睛:如何快速识别伪造图片
  • Nettu Meet:终极开源视频会议系统的完整部署与高效协作指南
  • 2025年本科生毕业生高薪专业大洗牌!网络安全稳居榜首
  • 重塑macOS窗口切换体验:alt-tab-macos深度评测与实战指南
  • 【OpenCV】Python图像处理之重映射
  • CANN训练营 学习(day9)昇腾AscendC算子开发实战:从零到性能冠军
  • Kotaemon财务报表解读:非专业人士也能看懂财报
  • Amazon EC2 实例类型命名约定
  • FingerJetFXOSE:解锁指纹识别开发新境界的开源利器
  • 程序员必看:Transformer如何解决RNN的长距离依赖问题,建议收藏!
  • 高效笔记神器:DailyNotes如何重塑你的工作流
  • 终极跨平台书签同步指南:BookmarkHub免费完整解决方案