news 2026/1/25 2:50:48

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)

实现效果自行尝试哦

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/23 12:54:28

LeetDown:macOS平台A6/A7设备降级神器完全解析

LeetDown&#xff1a;macOS平台A6/A7设备降级神器完全解析 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 还在为老旧的iPhone 5s、iPad 4等设备无法降级而苦恼吗&#xff1f;&am…

作者头像 李华
网站建设 2026/1/23 10:35:03

37、Windows 8 风格应用开发全解析

Windows 8 风格应用开发全解析 1. 核心开发工具与技术 1.1 WinJS 库 WinJS(Windows Library for JavaScript)是一个代码库,它能让开发者以 JavaScript 友好的方式创建 Windows 8 风格的应用程序。通过 JavaScript 对象和函数,WinJS 公开了 Windows 8 的多个系统级特性,…

作者头像 李华
网站建设 2026/1/23 10:34:50

Vial-QMK终极指南:快速掌握键盘固件配置的完整教程

Vial-QMK终极指南&#xff1a;快速掌握键盘固件配置的完整教程 【免费下载链接】vial-qmk QMK fork with Vial-specific features. 项目地址: https://gitcode.com/gh_mirrors/vi/vial-qmk 想要完全掌控你的键盘体验吗&#xff1f;Vial-QMK开源键盘固件为你提供了前所未…

作者头像 李华
网站建设 2026/1/23 9:09:13

创业路上三个生死关口,说错一句话可能全盘皆输?

融资时投资人低头玩手机&#xff0c;招商时代理商听完转身就走&#xff0c;危机时越解释网友骂得越凶。这些场景&#xff0c;是不是光是想想就让你后背发凉&#xff1f;不是你讲得不够多&#xff0c;而是你没讲进对方的心坎里。 创业这场马拉松&#xff0c;拼产品、拼团队&…

作者头像 李华
网站建设 2026/1/24 22:12:57

SRC漏洞挖掘思路手法(非常详细)

SRC漏洞挖掘思路手法&#xff08;非常详细&#xff09; 这段时间挖掘了挺多的SRC漏洞&#xff0c;虽然都是一些水洞&#xff0c;也没有一些高级的漏洞挖掘利用手法&#xff0c;但是闲下来也算是总结一下&#xff0c;说说我对SRC漏洞挖掘的思路技巧。 很多人可能都挖过很多漏洞…

作者头像 李华