【Python】顺序、条件、循环语句

简介: 默认情况下,Python 的代码执行顺序,是从上到下依次执行的

一. 顺序语句

默认情况下,Python 的代码执行顺序,是从上到下依次执行的:


执行结果一2f64595ac23c4e68bed98a88f487aea5.png定为 “123”,而不会出现 “321” 或者 “132” 等。这种按照顺序执行的代码,我们称为 顺序语句。

这个顺序是很关键的。编程是一件明确无歧义的事情,安排好任务的顺序,计算机才能够正确的进行执行。


二. 条件语句

1. 什么是条件语句

条件语句能够表达 “如果 … 否则 …” 这样的语义,这构成了计算机中基础的 逻辑判定。


即条件语句,就是根据一个具体条件的成立于否,来决定接下来的逻辑走向。


语法格式


Python 中使用 if、elif、else 关键字表示条件语句:

9b7f7288e98d43dcacebbca12f622b1a.png


注意:Python 中的条件语句写法,和很多编程语言不太一样,具体体现在以下三点:


if 后面的条件表达式,没有 ( ),使用 : 作为结尾来代替。

if / elif / else 命中条件后要执行的 “语句块”,使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示,而不是 { }

对于多条件分支,不是写作 else if,而是 elif (合体了)

代码示例


示例:输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍。


choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")
if choice == '1':
    print("包子")
else:
    print("泡馍")


实际开发中,用户的输入,很有可能是出乎意料的!本来期望用户输入 1 或者 2,但是用户实际输入了3:


0e433d3e67e040068d2873ade5d286e1.png

对于非法情况的判定,也是非常必要的!因为你永远不知道用户会如何操作:


choice = input("输入 1 表示早餐吃包子,输入 2 表示早餐吃泡馍:")
if choice == '1':
    print("包子")
elif choice == '2':
    print("泡馍")
else:
    print("输入有误")


2. 缩进和代码块

代码块 指的是一组放在一起执行的代码。在 Python 中使用缩进表示代码块。不同级别的缩进,程序的执行效果是不同的:


cf76a764f59e44b1ae400e03704e0040.png


cf76a764f59e44b1ae400e03704e0040.png

Python 是基于缩进的方式表示代码块的,带来的好处就是强制要求程序猿要写明确的缩进,以明确代码8a70722d86c8464389f098233121ccd2.png之间的相对关系。如果缩进书写的不对,则直接报错:



PS:在 C++/Java 中,对于代码缩进是没有强制要求的,缩进具体怎么写都不影响代码的编译运行结果。如果缩进没有很好的统一风格来写,也就是对于可读性比较影响。


此外,Python 中的代码块还可以嵌套,看下面这个例子:

d4949fca05fe44d9ad69c91511cbaf02.png


同时,嵌套带来的坏处就是:如果缩进层次比较多,就容易分不清楚某个语句属于哪个缩进层级:

257f9a3079c140ef9755074cdba7810a.png



因此,就有了 “写 Python 需要自备游标卡尺” 这个梗:


因为 Python 是通过缩进来区分代码块的(而不是 { } 或者是其他符号),而不是像其他程序语言,缩进仅仅为了可读性。导致打印出来的 Python 代码(比如书),需要肉眼看缩进,有时候遇上翻页,或者代码逻辑比较复杂,缩进比较多时,就需要用尺子来区分代码块了,如果看书不带游标卡尺的话,你就不知道缩进了几层,当然是个夸张的说法。


我们在实际开发中还是要尽量避免写出这种嵌套关系非常复杂的代码的,这样子可读性太差了!


3. 空语句 pass

看如下代码:

if a != '1':
    # 我这儿啥都不做
else:
    print('hello')


编译后报错。虽然希望条件满足的时候啥都不做,但是因为 Python 对于语法格式,尤其是缩进和代码块的要求较严格,所以如果啥都不写(只写个注释)是不符合语法要求的。


38c4fc4a005c495ebb98ed564cd3a30f.png

这种情况下,可以使用空语句(pass)进行占位:


if a != '1':
    pass
else:
    print('hello')

其中 pass 表示空语句,并不会对程序的执行有任何影响,只是占个位置,保持 Python 语法格式符合要求。

很多地方都是如此,虽然我们啥都不想做。但是也得写个 pass 空语句来占位。


4. 练习

(1)输入一个整数,判定是否是奇数


num = int(input('请输入一个整数:'))
if num % 2 == 1:
    print('奇数')
else:
    print('偶数')

补充说明:

Python 中取模运算得到的结果都是正整数:


0e17f5eaa7a94aca82dd8199f8aaadbe.png

int() 函数的转换默认是按照 十进制 的方式来解析的。其参数必须是十进制的整数字符串,如果不符合,在运行时会直接报错:


3db5f68472c34f37999e905f3658d7e2.png

(2)输入一个整数, 判定是正整数还是负整数


整数包括:正整数、负整数和0


num = int(input('请输入一个整数:'))
if num > 0:
    print('正整数')
elif num < 0:
    print('负整数')
else:
    print('为0')


(3)判定年份是否是闰年


满足以下两个条件之一的年份就是闰年:


能被 4 整除,但是不能被 100 整除

能被 400 整除

year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年"


三. 循环语句

有些操作是需要反复执行的,这种就需要使用循环。


1. while 循环

基本语法格式:


while 条件:
  循环体


条件成立,则执行循环体,完事后再去判断条件

条件不成立,则循环结束,退出循环

注意:

27ece0b9365e4326a15ef4c87466e754.png


代码示例


1、打印 1-10 的整数


num = 1
while num <= 10:
    print(num)
    num += 1


2、计算 1-100 的和

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(f'sum = {sum}')


3、计算 5 的阶乘


ret = 1
num = 1
while num <= 5:
    ret *= num
    num += 1
print(f'5! = {ret}')


4、求 1! + 2! + 3! + 4! + 5!


# 从 1 的阶乘开始算
i = 1
# ret 表示最终的加和结果
ret = 0
while i <= 5:
  # 先计算出当前 i 的阶乘是多少,算出后往 ret 上加
    j = 1
    partSum = 1
    while j <= i:
        partSum *= j
        j += 1
    ret += partSum
    i += 1
print(f'1! + 2! + 3! + 4! + 5! = {ret}')


2. for 循环

基本语法格式:


for 循环变量 in 可迭代对象:
  循环体


补充说明:


python 的 for 和其他语言不同,没有 “初始化语句”、“循环条件判定语句” 和 “循环变量更新语句”,而是更加简单地去遍历取值,相当于 C++ 的 范围for



所谓的 “可迭代对象”,指的是 “内部包含多个元素,并能够一个一个把元素取出来的特殊变量”。


代码示例


1、打印 1-10


# 使用 range 函数,能够生成一个可迭代对象
# 生成的范围是 [1, 11),也就是 [1, 10]
for num in range(1, 11):
    print(num)


可迭代对象,是一种特殊的变量,其内部包含了很多的值。


这里重点介绍一下 range()。它是 Python 的一个内建函数,起到的效果就是得到一个 “可迭代对象”,这个可迭代对象中就包含了一系列的整数,比如 range(begin, end) 对应整数区间 [begin, end),是一个前闭后开的区间。


2、打印 2, 4, 6, 8, 10


range 还提供了第三个参数用来表示步长,其默认值是 1。通过 range 的第三个参数,可以指定迭代时候的 “步长”,也就是控制一次让循环变量加几。


for num in range(2, 11, 2):
    print(num)


3、打印 10-1


range 的步长也可以设定成负数。

for num in range(10, 0, -1):
    print(num)


continue 和 break 语句


continue:立即结束当前这次循环,进入下一次循环

4842be44515141a89b369d7d74726da1.png

break:立即结束整个循环

9004a54da3694da3a974b40a94d526ba.png

相关文章
|
3月前
|
测试技术 Python
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
本文介绍了Python中的循环语句,包括while和for循环的使用,range()函数的运用,以及continue、break和pass关键字的说明,同时提出了关于while循环是否能与成员运算符结合使用的思考。
50 1
Python接口自动化测试框架(基础篇)-- 流程控制之循环语句for&while
|
3月前
|
Python
揭秘Python编程核心:一篇文章带你深入掌握for循环与while循环的奥秘!
【8月更文挑战第21天】Python中的循环结构——for循环与while循环,是编程的基础。for循环擅长遍历序列或集合中的元素,如列表或字符串;而while循环则在未知循环次数时特别有用,基于某个条件持续执行。本文通过实例展示两种循环的应用场景,比如用for循环计算数字平方和用while循环计算阶乘。此外,还通过案例分析比较了两者在处理用户输入任务时的不同优势,强调了根据实际需求选择合适循环的重要性。
50 0
|
18天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
29 4
|
24天前
|
Java 索引 Python
【10月更文挑战第19天】「Mac上学Python 30」基础篇11 - 高级循环技巧与应用
本篇将介绍更深入的循环应用与优化方法,重点放在高级技巧和场景实践。我们将讲解enumerate()与zip()的妙用、迭代器与生成器、并发循环以及性能优化技巧。这些内容将帮助您编写更高效、结构更合理的代码。
59 5
|
1月前
|
Python
Python 循环语句的高级应用与深度探索
本文深入探讨了Python中循环语句的高级应用,包括`for`循环遍历字典获取键值、同步遍历多个序列,以及`while`循环结合条件判断和异常处理。通过嵌套循环实现了矩阵乘法,并介绍了如何优化循环以提升程序性能。示例代码展示了这些技术的实际应用。
47 15
|
1月前
|
数据安全/隐私保护 Python
Python循环语句
【10月更文挑战第7天】
|
2月前
|
Python
Python 中如何循环某一特定列的所有行数据
Python 中如何循环某一特定列的所有行数据
|
1月前
|
Java C++ Python
【Python】循环语句(while、for)、continue、break
【Python】循环语句(while、for)、continue、break
36 0
|
2月前
|
存储 前端开发 索引
11个Python循环技巧
本文介绍了在Python中使用循环创建多个列表的方法,并提供了丰富的代码示例。内容涵盖根据固定数量、条件、数据类型、属性、索引范围、哈希值等不同条件创建列表的技巧,展示了如何灵活运用循环和列表推导式,提高代码的灵活性与可维护性,加速开发流程并提升程序性能。
|
3月前
|
搜索推荐 Python
Python基础编程:冒泡排序和选择排序的另一种while循环实现
这篇文章介绍了Python中冒泡排序和选择排序的实现,提供了使用while循环的替代方法,并展示了排序算法的运行结果。
28 2
Python基础编程:冒泡排序和选择排序的另一种while循环实现