Python入门学习——Day2-控制流程

news2024/11/16 11:27:43

一、Python 控制流程

什么是控制流程:

在Python中,控制流程指的是根据不同的条件或规则来控制程序的执行顺序和逻辑。Python提供了多种控制流程的语句和结构,可以根据条件进行分支判断和循环迭代。

1.1 条件语句(if-elif-else)

根据条件的结果来选择不同的执行路径。

if condition1:
   # 当条件1为真时执行的代码
elif condition2:
   # 当条件2为真时执行的代码
else:
   # 当以上条件都不满足时执行的代码

1.2 循环语句

for循环:迭代一个序列、集合或迭代器中的元素。

for element in sequence:
   # 针对每个元素执行的代码

while循环:根据条件的真假重复执行代码块,直到条件不再满足。

while condition:
   # 在条件为真时重复执行的代码

在循环中,还可以使用 break 关键字来提前结束循环,以及 continue 关键字来跳过当前循环。这些关键字可以提供更灵活的控制。

1.3 异常处理

使用 try-except 块来捕获和处理异常情况。

try:
   # 可能产生异常的代码块
except ErrorType1:
   # 当捕获到 ErrorType1 类型的异常时执行的代码
except ErrorType2:
   # 当捕获到 ErrorType2 类型的异常时执行的代码
else:
   # 当没有发生异常时执行的代码
finally:
   # 无论是否发生异常都会执行的代码

异常处理允许你通过捕获和处理异常来增加程序的容错性和稳定性。

控制流程结构使得我们可以根据不同的条件和需求来编写程序的逻辑,实现灵活的程序流程和决策控制。掌握这些控制流程结构可以使你的Python代码更具效率和可读性。

二、Python 运算符

在学习控制语句之前我们先学习一下,Python数据类型中的布尔类型。

2.1 True和False:

Python中的常见数据类型像整形、浮点型、字符串型之前我们都见过了,除了这些类型之外还有一些,本节课我们来看布尔类型

布尔类型只有两种结果:

  1. True
  2. False

Ture:表示 '真' ,通俗的说表示 '成立'

False:表示 '假',通俗的说表示 '不成立'

代码示例:

have_money = True  # 定义一个变量存储布尔类型数据True
have_friends = False  # 定义了一个变量存储布尔类型数据False

作用:

因为布尔类型的数据只有2种结果,所以这种数据类型往往用在"判断"的场景。

简单示例如下:
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:

have_money = True
if have_money:
    print("你有钱啊,是否有才华就不一定哦...")
else:
    print("是否有才华不一定,但一定没有钱,^_^...")

运行效果:

你有钱啊,是否有才华就不一定哦...

Process finished with exit code 0

我们使用条件判断语句,既然是判断,肯定是要有个媒介,这个时候就有了运算符,下面介绍两个常用的比较运算符和逻辑运算符。

2.2 比较运算符:

如果定义一个变量直接赋值为True或者False这种场景有,但有时我们需要让程序自己计算某个表达式,这个式子的结果是True或者False这样,在配合上if或者while等应用就会显得更加灵活。
比较运算符分类:

比较运算符的结果

比较运算符的结果一定是True或者False
例如:

100 > 50  # 结果就是True
100 < 50  # 结果就是False

示例代码:
用Python交互模式的示例代码如下:

>>> ## 比较运算符
... 
>>> # == 等于:表示左右两个操作数是否相等,如果相等则整个表达式的值为 True;不相等则为False
... num1 = 15
>>> num2 = 20
>>> 
>>> print(num1 == num2)
False
>>> 
>>> # != 不等于
... print(num1 != num2)
True
>>> 
>>> # > 大于
... print(num1 > num2)
False
>>> 
>>> # < 小于
... print(num1 < num2)
True
>>> 
>>> # >= 大于等于: num1 大于 或者 等于 num2 ,条件都成立
... print(num1 >= num2)
False
>>> 
>>> # <= 小于等于:num1 小于 或者 等于 num2 ,条件都成立
... print(num1 <= num2)
True
>>> 
>>> if num1 >= num2:
...     print("条件成立!")
... 
>>> 

2.3 逻辑运算符:

通过比较运算符我们知道,当比较数据大小、是否相等时,可以直接用>、<、==、!=、>=、<=来操作。
但是,有很多时候不仅仅是简单的对比大小还有:并且、或者、不。
举个例子:
1. 成年并且女性
2. 本科生或者研究生
3. 不是18周岁以下学生
为了能够实现并且、或者、不,Python提供了逻辑运算符
1. and实现并且的功能
2. or实现或者的功能
3. not实现不的功能

并且`、`或者`、`不`是为了大家好理解,我给它们起的名字,但是专业术语中把它们称之为:`与`、`或`、`非

逻辑运算符的简单使用

and
实现与的功能,通俗的说就是并且
一般的用法:两边都为True,结果才为True
例如:

100 > 50 and 90 < 200  # 100 > 50 结果为True  
90 < 200 结果为True,就相当于 True and True 所以最后结果是True

or
实现或的功能,通俗的说就是或者一般的用法:两边只要有一个True,结果就为True例如:

100 > 50 or 90 > 200  # 100 > 50 结果为True  
90 > 200 结果为False,就相当于 True or False 所以最后结果是True

not
实现非的功能,通俗的说就是不一般的用法:之前结果为True,那么not True就是False,如果之前是False,那么not False就是True例如:

not (100 > 50)  # 结果为False,本来100>50的结果是True,但前面加了not就相当于反义,所以最后结果为False
not (100 < 50)  # 结果为True, 本来100<50的结果是False, 但前面加了not其反义的作用,所以最后结果是True

除了比较和逻辑运算符,Python还有算术运算符、赋值运算符、位运算符、成员运算符、身份运算符和运算符优先级。

三、Python 条件控制 

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

 这就是分支语句的流程图。

3.1 if 判断语句:

基本使用:
if是用来进行判断的,其使用格式如下:

if 要判断的条件:
    条件成立时,要做的事情

示例代码如下:

age = 30
print('----if判断开始----')
if age >= 18:
    print('已经成年了')  # 当前代码处有缩进 缩进为4个空格 一个Tab键
print('----if判断结束----')

注意:
    1. if判断总体来说:当条件满足后就要做某些事情,这些事情以及if它们是一个整体
    2. 如果if条件成立后,要做的事情有很多,那么都需要在行首缩进4个空格(只需要敲一个tag键,Pycharm就会自动换行为4个空格)
示例代码如下:

age = 30
print('----if判断开始----')
if age >= 18:
      # 如果当前条件不成立则以下三句print都不会打印
    print('我已经成年了')
    print('我该懂事了')
    print('尽快学完python开发出去赚钱了')
print('----if判断结束----')  # 此处代码没有缩进 表示当前打印语句不在if语句控制范围之内,无论if条件是否成立都会执行

3.2 else 判断语句: 

else 与 if 配合使用,格式如下:

if 条件:
    满足条件时要做的事情1
    满足条件时要做的事情2
    满足条件时要做的事情3
    ...(省略)...
else:
    不满足条件时要做的事情1
    不满足条件时要做的事情2
    不满足条件时要做的事情3
    ...(省略)...

示例代码:

ticket = True   # 用True代表有车票,False代表没有车票
if ticket == True:
    print("有车票,可以上火车")
    print("终于可以见到Ta了,美滋滋~~~")
else:
    print("没有车票,不能上车")
    print("亲爱的,那就下次见了")

运行结果:

有车票,可以上火车
终于可以见到Ta了,美滋滋~~~

Process finished with exit code 0

3.3 elif 判断语句:

if能完成条件满足时做可以执行某些代码
if-else能完成条件满足时执行某些代码,不满足时执行另外一些代码
如果有这样一种情况:当条件1满足时做事情1;条件2满足时做事情2;条件3满足时做事情3,那该怎么实现呢?
答:elif
elif的使用格式如下:

if 条件1:
    事情1
elif 条件2:
    事情2
elif 条件3:
    事情3
# ...省略N个条件...
elif 条件n:
    事情n
else:
    以上条件都不满足时执行的代码

示例代码:

score = 77  # 定义变量存储分数

if score >= 90 and score <= 100:  # 如果分数在90~100
    print('本次考试,等级为A')
elif score >= 80 and score < 90:  # 如果分数在80~90
    print('本次考试,等级为B')
elif score >= 70 and score < 80:  # 如果分数在70~80
    print('本次考试,等级为C')
elif score >= 60 and score < 70:  # 如果分数在60~70
    print('本次考试,等级为D')
elif score >= 0 and score < 60:  # 如果分数在60以下
    print('本次考试,等级为E')
else:  # 如果分数不在0~100之间,就认为错误
    print("分数有误...")

在if判断中,最多只能有1个else,但可以有N个elif,必须有1个if。
无论是在if语句还是在else子句控制的代码之下都需要进行代码缩进!

3.4 if 嵌套语句:

嵌套 if 语句的基本语法结构:

if condition1:
    # 当条件1为 True 时执行的代码
    if condition2:
        # 当条件2为 True 时执行的代码
    else:
        # 当条件2为 False 时执行的代码
else:
    # 当条件1为 False 时执行的代码

嵌套的 if 语句可以根据需要进行多层嵌套。每个 if 语句都根据条件的真假来选择是否执行内部代码块。

以下是一个示例,演示了一个嵌套 if 语句的应用:

age = 25
if age >= 18:
    print("你已经成年了!")
    if age >= 21:
        print("你可以购买酒精饮料。")
    else:
        print("你还不能购买酒精饮料。")
else:
    print("你还未成年,不能购买酒精饮料。")

在上述代码中,根据年龄的不同,使用嵌套的 if 语句进行条件判断。根据年龄是否大于等于18,将执行不同的代码块。如果年龄大于等于18,又根据年龄是否大于等于21,执行相应的代码块。

嵌套 if 语句可以灵活应用于复杂的条件判断场景,通过逐步细化判断条件,实现更精确的逻辑控制。

四、Python 循环控制

 Python 中的循环语句有 for 和 while。

Python 循环语句的控制结构图如下所示:

4.1 while循环: 

Python 中 while 语句的一般形式:

while 条件:
    条件满足时,做的事情1
    条件满足时,做的事情2
    条件满足时,做的事情3
    ...(省略)...

小提示:当前代码的执行顺序可以使用Pycharm中的Debug模式进行代码单步执行。

代码示例:

i = 0
while i < 5:
    print("当前是第%d次执行循环" % (i + 1))
    print("i=%d" % i)
    i += 1

运行结果:

当前是第1次执行循环
i=0
当前是第2次执行循环
i=1
当前是第3次执行循环
i=2
当前是第4次执行循环
i=3
当前是第5次执行循环
i=4

4.2 for循环:

像while循环一样,for可以完成循环的功能
for循环可以遍历任何序列的项目,如一个列表或者一个字符串等

注意:
for循环使用最多的场景是直接遍历可以迭代的对象,而什么是迭代,什么是对象我们还没有学习,因此本节课程只讲解简单的使用for。更为复杂的用法在后面讲解
for 循环代码格式:

for 临时变量 in 列表或者字符串等可迭代对象:
    循环满足条件时执行的代码

代码示例:
如果想要循环输出0、1、2、3、4,使用for循环来实现的代码如下:

for i in range(5):
    print(i)

 运行结果:

0
1
2
3
4

Process finished with exit code 0

使用示例:

sum_ret = 0  # 用来存储总和
for i in range(1, 101):
    sum_ret += i

print("1~100的和为:%d" % sum_ret)

运行结果:

1~100的和为:5050

Process finished with exit code 0

4.3 break 与 continue:

在循环的过程中,有时可能会因为某些条件的满足或者不满足需要结束整个while,还有可能在当次循环代码执行过程中剩下的不执行了而是进行一次的循环,这种时候就需要用2个功能
    1. 结束整个循环
    2. 结束本次循环
还好,Python的发明人,针对上述2个功能,发明除了对应的代码
    1. break,用来结束整个循环
    2. continue,用来结束本次循环
break 基本使用
    1. break的作用是:结束它所属的整个循环
注意点:它不能单独使用,如果用的话一定需要放到循环中
while 中使用 break,未使用 break 的效果:

# 1.未使用 break 的效果
i = 0

while i<5:
    print('----')
    print(i)
    i = i + 1

# 运行结果
----
0
----
1
----
2
----
3
----
4


# 2.使用 break 的效果
i = 0

while i<5:
    print('----')
    i = i+1
    break
    print(i)
# 运行结果:
----

同理for循环语句也一样。这里就不举例了。
使用 continue 的效果:

i = 0
while i < 3:
    i = i+1
    print('----')
    continue
    print(i)

结果:

----
----
----

同理for循环语句也一样。这里就不举例了。
除了上述用法,循环嵌套里也是可以使用continue和break。

4.4 扩展使用(循环+else):

while...else... 的使用方式,格式:

while 条件:
    # 条件满足时执行的代码...
else:
    # 如果上述的while循环没有调用break,就执行的代码...

逻辑说明:    
    1. 只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行
    2. 如果while循环中有break那么表示整个while结束,else中的代码也不会被执行
示例代码:

# 有 break 时:
i = 1
while i <= 3:
    print("这是一段测试信息...")
    if i == 1:
        print("调用了break")
        break
    i += 1
else:
    print("我是else中的代码")
# 运行结果:
这是一段测试信息...
调用了break

# 没有 break 时
i = 1
while i <= 3:
    print("这是一段测试信息...")
    i += 1
else:
    print("我是else中的代码")
# 运行结果:
这是一段测试信息...
这是一段测试信息...
这是一段测试信息...
我是else中的代码

案例代码:

i = 3
while i > 0:
    password = input("请输入密码:(还剩%d次机会)" % i)
    if password == "123456":
        print("密码输入正确")
        break
    i -= 1
else:
    print("密码输入3次全部错误,请明日再试")

故意输错的结果:

请输入密码:(还剩3次机会)1
请输入密码:(还剩2次机会)2
请输入密码:(还剩1次机会)3
密码输入3次全部错误,请明日再试

Process finished with exit code 0

输入正确的结果:

请输入密码:(还剩3次机会)123456
密码输入正确

Process finished with exit code 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/963570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PY32F003F18P单片机概述

PY32F003F18P单片机是普冉的一款ARM微控制器&#xff0c;内核是Cortex-M0。这个单片机的特色&#xff0c;就是价格便宜&#xff0c;FLASH和SRAM远远超过8位单片机&#xff0c;市场竞争力很强大。 一、硬件资源&#xff1a; 1)、FLASH为64K字节&#xff1b; 2)、SRAM为8K字节&…

CAD图纸加密软件——公司核心文件数据防泄密「天锐绿盾」

PC访问地址&#xff1a; isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 数据安全保护系统 数据安全保护系统以全面数据文件安全策略、加解密技术与强制访问控制有机结合为设计思想&#xff0c;对信息媒介上的各种数据资产&#xff0c;实施不同安全等级…

一份优秀的接口自动化测试方案是啥样的?

1、引言 1.1 文档版本 1.2 项目情况 1.3 文档目的 本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开展。本文档的主要目的在于提供项目接口自动化测试的技术方案、实施方案和计划方案等。 2、接口自动化实施目标 2.1 实施原则 XXX-YY项目采用接口自动化测试&#xff0…

云备份——实用类工具实现

一&#xff0c;文件实用类设计实现 不管是客户端还是服务端&#xff0c;文件的传输备份都涉及到文件的读写&#xff0c;包括数据管理信息的持久化也是如此&#xff0c;因此首先设计封装文件操作类&#xff0c;这个类封装完毕之后&#xff0c;则在任意模块中对文件进行操作时都将…

SpringCloudAlibaba OpenFeign整合及详解

SpringCloudAlibaba OpenFeign 在前面&#xff0c;我们使用Nacos服务注册发现后&#xff0c;服务远程调用可以使用RestTemplateRibbon或者OpenFeign调用。实际开发中很少使用RestTemplate这种方式进行调用服务&#xff0c;每次调用需要填写地址&#xff0c;还要配置各种的参数&…

Java 包装类和Arrays类(详细解释)

目录 包装类 作用介绍 包装类的特有功能 Arrays类 Arrays.fill() Arrays.toString() Arrays.sort() 升序排序 降序排序 Arrays.equals() Arrays.copyOf() Arrays.binarySearch() 包装类 作用介绍 包装类其实就是8种基本数据类型对应的引用类型。 基本数据类型引用…

R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列...

全文链接&#xff1a;http://tecdat.cn/?p31162 最近我们被客户要求撰写关于SV模型的研究报告&#xff0c;包括一些图形和统计输出&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 本文做SV模型&#xff0c;选取马尔可夫蒙特卡罗法(MCMC)、正则化广…

英码科技受邀亮相2023WAIE物联网与人工智能展,荣获行业优秀创新力产品奖!

8月28日-30日&#xff0c;2023WAIE 物联网与人工智能展在深圳福田会展中心顺利举办。英码科技受邀亮相本届展会&#xff0c;并现场重点展出了面向智慧交通、智慧校园、智慧应急、智慧园区等不同行业的创新AIoT产品、AI技术服务等内容&#xff0c;与生态伙伴积极探讨市场需求和问…

四川玖璨电子商务有限公司:短视频账户运营

短视频账户运营&#xff0c;是指对短视频内容进行管理和推广的工作。随着社交媒体的兴起和短视频平台的流行&#xff0c;短视频账户运营已经成为了一种新兴的营销方式。对于企业、个人或组织来说&#xff0c;通过短视频账户运营&#xff0c;不仅可以提高品牌知名度&#xff0c;…

C. Nice Garland

题目&#xff1a; 样例1&#xff1a; 输入 3 BRB 输出 1 GRB 样例2&#xff1a; 输入 7 RGBGRBB 输出 3 RGBRGBR 题意&#xff1a; 题目是要在一个字符它的前面两个和后面两个字符不能与它本身有相同的字符。即 范围在 3 之内的字符串不能有相同的字符。 思路&#xff1a; …

运算放大器总结

早期的运算放大器目的是制造模拟计算机&#xff0c;用来计算各种数学公式。虽然现在已经被数字电路替代了&#xff0c;但是运算放大器在模拟电路设计中&#xff0c;仍然是最重要的知识。 1、运放是怎么工作的&#xff1f; 以电压反馈型运放&#xff08;VFA&#xff09;为例。由…

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?

目录 1. 什么是跨域问题 &#xff1f; 2. Spring MVC 如何解决跨域问题 &#xff1f; 3. Spring Boot 如何解决跨域问题 &#xff1f; 1. 什么是跨域问题 &#xff1f; 跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#x…

为了更好和大家交流,欢迎大家加我的微信账户

因为一些懂的都懂的原因&#xff0c;如果我的账户显示为 此时我无法通过站内信、留言或者任何方式和大家联系。 如果看到这样的内容&#xff0c;可以在此评论区留下你的微信账户&#xff0c;我看到后会添加你。为防止其他人冒充我&#xff0c;我的微信号以2206结尾。

OpenCV入门之基本知识

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 一、vscode文件配置 在vscode中需要配置如下三个文件&#xff1a;c_cpp_proper…

操作系统清华同步笔记:定义概述+计算机内存和硬盘布局+启动流程顺序+中断、异常和系统调用

定义概述 从用户角度来看&#xff0c;操作系统是一个控制软件&#xff0c;用以管理应用程序&#xff0c;为应用程序提供服务&#xff0c;杀死应用程序等。从内部文件角度来看&#xff0c;操作系统是一个资源管理器&#xff0c;用以管理外设&#xff0c;分配资源。层次结构&…

vue2 组件传值 转换

1. 字符串转数字类型&#xff08;string->number) parseInt() --十进制&#xff08;“123”--123&#xff09; parseFloat() --浮点数&#xff08;“123.345”--123.345&#xff09; Math.round(parseFloat()) --四舍五入&#xff08;“123.345”--123&#xff09; 2.父…

最详细Maven下载、安装、配置教程

Maven是一个跨平台的项目管理工具。作为Apache组织的一个颇为成功的开源项目&#xff0c;其主要服务于基于Java平台的项目创建&#xff0c;依赖管理和项目信息管理。maven是Apache的顶级项目&#xff0c;解释为“专家&#xff0c;内行”&#xff0c;它是一个项目管理的工具&…

17 django框架(中)视图|模板

文章目录 框架介绍模型类视图视图的功能页面重定向 视图函数的使用url匹配过程错误视图补充 捕获url参数类型介绍 普通登录案例&#xff08;前情准备&#xff09;HttpReqeust 对象HttpResponse 对象QueryDict 对象&#xff08;即GET POST &#xff09;总结 ajaxajax的登录样例 …

面试中的商业思维:如何展示你对业务的理解

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

华为数通方向HCIP-DataCom H12-821题库(单选题:221-240)

第201题 BGP 协议用​​ beer default-route-advertise​​ 命令来给邻居发布缺省路由,那么以下关于本地 BGP 路由表变化的描述,正确的是哪一项? A、在本地 BGP 路由表中生成一条活跃的缺省路由并下发给路由表 B、在本地 BGP 路由表中生成一条不活跃的缺省路由,但不下发给…