Python第3章 流程控制(一)

简介: Python第3章 流程控制

【本章导读】

进行程序设计时,复杂问题的求解通常需要通过流程进行控制。程序的流程控制可归纳为三种:顺序结构、分支(选择)结构和循环结构。每一个结构化的程序都可以由这三种结构组合或嵌套而成。这种程序设计方法,使程序具有良好的可读性和可维护性。


本章在讲解常用运算的基础上,应用一系列数学问题的求解案例,详细介绍了Python中利用for

关键字对range()函数产生的整数序列进行确定次数循环的方法和具体应用,介绍了利用while关键字实现循环次数不确定问题的求解方法。


介绍了用if…elif…else语句实现分支结构程序设计。简单介绍了利用pass、continue和break语句实现流程跳转的方法。


简单介绍了异常处理的概念和利用异常处理提高程序健壮性和容错性的程序设计方法。


【本章要点】

●常用运算及运算优先级

数值运算: +、-、*、/、//、%、**
真值测试:None,False, 0, 0.0, 0j, Decimal(0), Fraction(0, 1),'', (), [], {}, set(), range(0)
布尔运算:x or y, x and y, not x
比较运算:>、 >=、 <、 <=、 ==、 !=、 is、 is not 
成员运算:x in s 、x not in s

●for…in range()循环结构

for 循环变量 in 可遍历对象:
    重复执行的语句块    
[else]:
    循环正常结束后需执行的语句
for i in range(5):  # 遍历range
    print(i)
else:
    print('循环正常结束')
for c in string:  # 遍历字符串
    print(c)
for item in list:  # 遍历列表、元组、字典、集合等
    print(item)
for line in file:  # 遍历文件对象
    print(line)

while循环结构的流程控制

while 条件表达式:
    重复执行的语句块    
[else]:  # 只有当循环正常结束时,else子句中的语句才能被执行
    循环正常结束后需执行的语句

●流程跳转语句的功能与应用

break    跳过当前循环中未执行的次数,提前结束当前层次循环
continue 跳过本次循环中剩余语句的执行,提前进入下一次循环
pass     跳过执行或占位

●分支语句

if 条件表达式1:     # if 必须有且只能有一个
    语句块1
[elif 条件表达式2:  # 有0个或多个
    语句块2]
[elif 条件表达式3:
    语句块3]
[……]
[else:            # 0个或1个
    语句块n]

●异常处理的概念与应用

except <异常名称1>:
    <语句块2>   # 如果在try部份引发了异常名称1时执行的语句块
[except <异常名称2>:
    <语句块3>]  # 如果在try部份引发了异常名称2时执行的语句块
[else:
    <语句块4>]  # 没有异常发生时执行的语句块
[finally:
    <语句块5>]  # 无论有没有异常都会执行的语句块

思维导图:2.1.png

真值测试

对象出现在if或while语句中的条件表达式中, 或是作为布尔运算的操作数时,对象值表现为 True或False


值为False的内置对象: 被定义为假值的常量 任何数值类型的数字零 空的序列和多项集


会被视为假值的内置对象包括:

假值常量: None和False

print(bool(False))   # False
print(bool(None))    # False

会被视为假值的内置对象包括: 任何数值类型的数字零:

0, 0.0, 0j, Decimal(0), Fraction(0, 1)
print(bool(0.0))  # False
print(bool(0j))   # False
print(bool(0))    # False

会被视为假值的内置对象包括: 空的序列和多项集,len()测试长度为0: 空字符串’', 空元组(), 空列表[], 空字典{},

空集合set(), range(0)

print(bool(''))       # 空字符串,False
print(bool([]))       # 空列表,False
print(bool(()))       # 空元组,False
print(bool({}))        # 空字典,False
print(bool(set()))     # 空集合,False
print(bool(range(0)))  # 空range,False

除上述对象外,所有其他对象的真值测试结果都为True

print(bool(0.00001))                   # 非0浮点数
print(bool([1]))                       # 非空列表
print(bool((1,)))                      # 非空元组
print(bool('me'))                      # 非空字符串
print(bool({1, 2, 3}))                 # 非空集合
print(bool(range(5)))                  # 非空range
print(bool({'tom': 99, 'jerry': 86}))  # 非空字典

比较运算

用于比较两个值,确定它们之间的关系
结果为逻辑值,即True 或False

8 种比较运算:

2 种一致性比较(==、!=)

4 种次序比较(<、>、<=、>=)

2 种标识号比较(is 和is not)

比较运算符可以连续使用

例如:x < y <= z
     90 <= score <= 100
等价于 x < y andy <= z
      score >= 90 and score <= 100

数值类型会根据数字大小和正负进行比较

print(100 > 99)   # True
print(3.14> 3.141)  # False
print(1.0==1)  # True,值相等的不同对象
整数和浮点数可以跨类型比较
print(1e18 == 1e18 + 10)  # True
大浮点数比较精度影响结果

字符串比较根据其字符的Unicode 码数字值大小
按字典顺序进行

print('ji lin' > 'ji an')   # True
print([ord(y) for y in 'ji lin’])
print([ord(x) for x in 'ji an'])
ord()获取字符Unicode 码数字值
[106, 105, 32, 108, 105, 110]
[106, 105, 32, 97, 110]

元组、列表和range等序列只可进行类型内部的比较
比较方法是依次比较元素的值

print([1, 2, 3, 4] > [1, 2, 3])# True
print((1, 2, 3, 4) > (1, 2, 3)) # True
print(range(5) == range(0,5)) # True
print([1, 2, 3, 4] > [3, 2, 3]) # False
print((3, 2, 3) > (1, 2, 3)) # True

None和任何其他的数据类型的一致性比较永远返回False

// An highlighted block
var foo = 'bar';print(range(0) == None)#RangeFalse
print([] == None)# 空列表,False
print('' == None)# 空字串符,False
print(0 == None)# 整数0,False

运算符is 和is not 用于检测对象的标识号是否相同
仅当id(x) == id(y)时,x is y 结果为True

print(id(5) == id(5.0))  # False
print(id(5),id(5.0)) # 21975364018402197543023344
print(5 is 5.0)          # False
print(5 == 5.0) # True,值相等
相关文章
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
55 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
4月前
|
测试技术 索引 Python
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(一)
本文提供了Python接口自动化测试中的编程练习,包括计算器、猜数字、猜拳和九九乘法表等经典问题,涵盖了数据类型、运算、循环、条件控制等基础知识的综合应用。
49 1
|
2月前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
2月前
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
64 6
|
4月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
Python中的流程控制语句if条件控制,涵盖了比较运算符、成员运算符、身份运算符、逻辑运算符的使用,if语句的嵌套,以及如何使用input和print函数进行交互式编程练习。
34 1
Python接口自动化测试框架(基础篇)-- 流程控制之if条件控制
|
3月前
|
SQL 关系型数据库 MySQL
Python操作pymysql数据库的流程与技巧
在现代软件开发中,Python作为一门高效且易于学习的编程语言,广泛应用于各种场景,其中包括数据库操作。**PyMySQL** 是一个流行的Python数据库接口,用于连接和操作MySQL数据库。它提供了一种简便的方法来执行SQL语句、处理数据和管理数据库事务。以下是使用PyMySQL操作MySQL数据库的流程与技巧,旨在为开发者提供一个清晰、实用的指南。
60 0
|
4月前
|
存储 测试技术 数据格式
Python接口自动化测试框架(练习篇)-- 数据类型及控制流程(二)
本文通过数据类型转换和文件读取的练习,复习了Python中的数据类型、循环、条件判断、内置函数等基础知识,并演示了如何将字符串数据转换为字典列表,以及如何从文本文件中读取和转换数据。
42 1
|
4月前
|
机器学习/深度学习 Ubuntu 数据挖掘
Ubuntu系统部署Anaconda环境及Python语言的详细流程
以上就是在Ubuntu系统中安装Anaconda环境及Python语言的详细流程。Anaconda为Python科学计算提供了便捷的管理方式,帮助用户轻松处理不同项目之间依赖管理的复杂性。通过以上步骤,你现在应该有了一个完全可用的Anaconda环境,可以开始在Ubuntu上进行Python编程和数据科学项目的探索了。
137 5
|
4月前
|
Python
python学习笔记---流程控制
这篇文章详细介绍了Python中的流程控制,包括选择结构(if、if-else语句、嵌套if语句)和循环语句(while循环、for循环以及for循环与range()函数的使用),以及如何在循环中使用break和continue语句。
python学习笔记---流程控制
|
4月前
|
JSON 数据库 开发者
FastAPI入门指南:Python开发者必看——从零基础到精通,掌握FastAPI的全栈式Web开发流程,解锁高效编码的秘密!
【8月更文挑战第31天】在当今的Web开发领域,FastAPI迅速成为开发者的热门选择。本指南带领Python开发者快速入门FastAPI,涵盖环境搭建、基础代码、路径参数、请求体处理、数据库操作及异常处理等内容,帮助你轻松掌握这一高效Web框架。通过实践操作,你将学会构建高性能的Web应用,并为后续复杂项目打下坚实基础。
137 0