python程序的三种控制结构

程序的三种控制结构

什么是控制结构?

"""
程序有三种基本结构组成:顺序结构、分支结构、循环结构。任何程序都是由这三种基本结构组成。
顺序结构是程序按照线性顺序依次执行的一种运行方式。
分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式。
循环结构是程序根据条件判断结果向后执行的一种运行方式。
"""

程序的分支结构

单分支结构:if

"""
python中分支结构使用if保留字对条件进行判断,使用方法:
 
 if <条件>:
    <语句块>

其中,if、:、<语句块>、前的缩进都是语法的一部分
例如:判断一个数字的大小

a = 1
b = 2
if a < b:
    print("True")
<条件>可以是一个或者多个条件,多个条件间采用and或or进行逻辑组合。and表示多个条件“与”的关系,or表示多个条件“或”的关系。

例如:判断用户输入数字的特性
a = eval(input("请输入一个数字:"))
if a % 3 == 0 and a% 5 == 0:
    print("这个数字既能被3整除,也可以被5整除")
print("输入的数字是:",s)

请输入一个数字: 10
输入的数字是:  10

请输入一个数字:15
这个数字既能被3整除,也可以被5整除
输入的数字是: 15
"""

二分支结构:if-else

"""
python的二分支结构使用if-else保留字对条件进行判断,语法格式如下:
 
 if <条件>:
    <语句块1>
else:
    <语句块2>

<语句块1>在if<条件>中满足即为True时执行,<语句块2>在if<条件>中不满足即为False时执行,简单来说,二分支结构根据条件True或False结果产生两条路径。
例如:

a = eval(input("请输入一个数字:"))
if a % 3 == 0 and a% 5 == 0:
    print("这个数字既能被3整除,也可以被5整除")
else:
    print("这个数字既不能被3整除,也不可以被5整除")
print("输入的数字是:",s)

请输入一个数字:15
这个数字既能被3整除,也可以被5整除
输入的数字是: 15

请输入一个数字:11
这个数字既不能被3整除,也不可以被5整除
输入的数字是: 11

"""

三分支结构:if-elif-else

"""
python的三分支结构使用if-elif-else保留字对条件进行判断,语法格式如下:
 
 if <条件1>:
    <语句块1>
elif <条件2>:
    <语句块2>
elif <条件3>:
    <语句块3>
	.
	.
else:
    <语句块n>
    多分支结构通常用于判断同一个条件或者一类条件的多个执行路径。
	
例如:
a = eval(input("请输入你的成绩:"))
if a > 90:
    print("优秀")
elif a > 80:
    print("良好")
elif a >= 60:
    print("及格")
else:
    print("不及格")
    
请输入你的成绩:100
优秀
请输入你的成绩:85
良好
请输入你的成绩:60
及格
请输入你的成绩:50
不及格
"""

遍历循环:for

python语言中的循环结构分为:遍历循环和无限循环两种,遍历循环使用保留字for依次提取遍历结构各元素进行处理,无限循环使用保留字while根据判断条件执行程序。

在学习for循环时我们要理解,什么是for循环,循环就是重复做某件事,for循环时python提供第二种循环机制,为何要有for循环,理论上for循环能做的事,while循环都可以做,之所以要有for循环,是因为for循环在循环取值(遍历取值)比while循环更简洁。
"""
for 变量名 in 可迭代对象:
可迭代对象可以是:列表、字典、字符串、元组、集合

遍历循环:for
遍历循环可以理解为从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。

for <循环变量> in <遍历结构>:
	<语句块>

例如:
for a in "python":
    print(a)
p
y
t
h
o
n

或者:
for a in range(3):
    print(a)
0
1
2

"""
遍历结构还有一种扩展结构
"""
for <> in <>:
	<语句块1>
else:
	<语句块2>
"""for循环正常执行之后,程序会继续执行else语句中内容,else语句只在循环正常执行之后才执行并结束,所以,可以在<语句块2>中放置评价循环执行情况的语句

for循环和if结构连用:

用户登录:当名字输入错误或密码输入错误时,重新输入,当名字以及密码输入错误达到三次,程序结束

name = "佩奇"
password = "123"

for i in range(3):
    id_name = input("请输入你的名字:")
    id_password = input("请输入你的密码:")
    if id_name == name and id_password == password:
        print("登录成功")

        break
else:
    print("输入次数三次,程序结束")
    
    
结果:
请输入你的名字:aa
请输入你的密码:123
请输入你的名字:bb
请输入你的密码:123
请输入你的名字:cc
请输入你的密码:123
输入次数三次,程序结束

Process finished with exit code 0

无限循环:while

"""
python通过保留字while实现无限循环,基本使用方法如下:

while <条件>:
    <语句块>

例如:
n = 0
while n <10:
    print(n)
    n = n + 3

结果:
0
3
6
9

当程序执行到while语句时,判断条件如果为True,执行循环体语句,语句结束后返回再次判断while语句的条件,当条件为False时,循环终止,执行与while同级别缩进的后续语句。

无限循环也有一种使用保留字else的扩展模式:

while <条件>:
	<语句块1>
else:
	<语句块2>
"""

循环控制有两个辅助循环控制的保留字:breakcontinue
break用来跳出最内层forwhile循环,脱离该循环后程序继续执行循环后续代码。

例如:
while True:
    s = input("请输入姓名:")
    if s == "q":
        break
    print("输入的名字是" ,s)
print("程序退出")
结果:
请输入姓名:佩奇
输入的名字是 佩奇
请输入姓名:乔治
输入的名字是 乔治
请输入姓名:q
程序退出

如果有2层或多层循环,break退出最内层循环。

而continue用来结束当前当次循环,即跳出循环体中,执行下面尚未执行的语句,但不跳出当前循环。

例如:
for s in 'python':
    if s == 'y':
        continue
    print(s,end='')
    
结果:pthon

"""
总结:continue语句和break语句的区别是:continue语句只结束本次循环,不终止下面程序的运行,而break语句直接结束整个当前循环。
强调:在continue之后添加同级代码毫无意义,因为永远无法运行
"""

while死循环与效率问题:

"""
count = 0
while count < 5:
    print(count)
会一直0循环下去

while True:
    input("输入姓名:")
不会终止,但是不会引发效率问题

while True:
    1 + 1
一直不停的工作,纯计算无io的死循环会导致致命的效率问题,了解即可,不要实验(费电脑)
"""

while循环嵌套,每一层都必须配一个break
例如:
"""
while True:
	while True:
		while True:
			break
		break
	break
"""

while循环和if结构连用:

用户登录:当名字输入错误或密码输入错误时,重新输入,当名字以及密码输入成功时,登录成功那个

name = "佩奇"
password = "123"

while True:
    id_name = input("请输入你的名字:")
    id_password = input("请输入你的密码:")
    if id_name == name and id_password == password:
        print("登录成功")
        break
    else:
        print("重新输入")
        
请输入你的名字:乔治
请输入你的密码:123
重新输入
请输入你的名字:佩奇
请输入你的密码:123
登录成功		

posted @   不太机灵的春天  阅读(2427)  评论(0编辑  收藏  举报
编辑推荐:
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· 2分钟学会 DeepSeek API,竟然比官方更好用!
· .NET 使用 DeepSeek R1 开发智能 AI 客户端
· 刚刚!百度搜索“换脑”引爆AI圈,正式接入DeepSeek R1满血版
点击右上角即可分享
微信分享提示