4.2 循环语句

第4章 判断与循环

判断和循环是我们控制程序运行的常用手段。在大多数编程语言中,判断通常用if语句,循环通常用while或for语句。在Python中,通过if语句来判断一系列条件的状态,并据此决定采取什么行动。而循环语句则是计算机自动完成重复工作的常见方式之一。在本章中,你将学习到if、while、for语句的简单使用和一些相关代码的示例。

4.2 循环语句

在实际的业务场景中,我们经常需要批量处理业务数据。在Python语言中,我们通常将批量的数据存储在列表中。然后通过for或while语句来循环处理列表中的所有数据。比如:对图书馆中某一个书架上的所有图书贴上相同的分类标签,方便学生根据分类检索图书。我们可以定义一个变量bookList来存储这个书架上的所有图书,然后通过for循环来给每一本书贴上相同的分类标签。下面是简单的示例代码:

In [1]: bookList = ["thinking in Java", "rpa in python", "mathematies for Computer", "robotFrameWork in Python"]
In [2]: tag = "IT_TECH_BOOK"
In [3]: for book in bookList:
   ...:     print(tag + ": " + book)
   ...:
IT_TECH_BOOK: thinking in Java
IT_TECH_BOOK: rpa in python
IT_TECH_BOOK: mathematies for Computer
IT_TECH_BOOK: robotFrameWork in Python

说明:In [1]: 语句中,定义了一个变量bookList来存储这个书架上的图书列表。此处的tag变量是我们自定义的标签名称。
In [2]: 语句用for语句来循环处理变量bookList,其中in关键字即逐一从bookList取出每一个图书并存储到变量book中。然后执行缩进的print()方法,打印出每本图书(即book变量)贴上相同的分类标签后的信息。如此循环,直到打印完bookList列表中的所有图书,程序结束。

需要注意的是:for和while语句都是以英文冒号(:)结尾的。循环的好处就是可以对列表中的每一个元素都执行指定的操作,而无论循环中有多少个元素。比如:列表中有10万本图书或100万本图书,都没有关系,计算机都会按照我们编写的程序,循环执行,而且通常都会很快完成。

4.2.1 for语句

for循环中,对于用于存储列表中每个只的临时变量,可以自定义任何名称。但是通常选择可以描述列表中单个元素的有意义的英文名称。比如上面示例中的变量book就是对列表bookList中单个元素图书的描述。当然你也可以将图书定义为x或其他英文字母,程序运行的结果将没有任何变化,但是代码的可阅读性将会降低。在实际的开发工作中,通常都是一个团队一起开发的,当同事需要阅读你的代码时,代码的可读性就会显得非常重要了。

  • for语句中执行更多操作,如下代码示例:
In [1]: bookList = ["thinking in Java", "rpa in python", "mathematies for Computer", "robotFrameWork in Python"]
In [2]: tag = "IT_TECH_BOOK"
In [3]: for book in bookList:
   ...:     print(tag + ": " + book)
   ...:     print("我想要这本书: " + book)
   ...:     print("他也想要这本书: " + book)
   ...:  
IT_TECH_BOOK: thinking in Java
我想要这本书: thinking in Java
他也想要这本书: thinking in Java
IT_TECH_BOOK: rpa in python
我想要这本书: rpa in python
他也想要这本书: rpa in python
IT_TECH_BOOK: mathematies for Computer
我想要这本书: mathematies for Computer
他也想要这本书: mathematies for Computer
IT_TECH_BOOK: robotFrameWork in Python
我想要这本书: robotFrameWork in Python
他也想要这本书: robotFrameWork in Python

说明:for语句中,可以包含任意多行的代码。在for book in bookList:行之后的每个缩进的代码行都是循环的一部分。所以列表中的每个元素,都将被这些代码执行一次。比如:上面3个print语句都缩进了,那么每一本图书,都将分别被不同的print语句打印输出3次。

需要注意的是:在Python语言中,缩进很重要,缩进让代码显得更整洁,结构更清晰,也更容易阅读。不正确的缩进可能导致程序被错误的执行。比如下面的示例:

In [1]: bookList = ["thinking in Java", "rpa in python", "mathematies for Computer", "robotFrameWork in Python"]
In [2]: tag = "IT_TECH_BOOK"
In [3]: for book in bookList:
   ...:     print(tag + ": " + book)
   ...:     print("我想要这本书: " + book)
   ...: print("他也想要这本书: " + book)
   ...: 
IT_TECH_BOOK: thinking in Java
我想要这本书: thinking in Java
IT_TECH_BOOK: rpa in python
我想要这本书: rpa in python
IT_TECH_BOOK: mathematies for Computer
我想要这本书: mathematies for Computer
IT_TECH_BOOK: robotFrameWork in Python
我想要这本书: robotFrameWork in Python
他也想要这本书: robotFrameWork in Python 

说明:可以看到上面3个print语句中只有前2个都缩进了,那么每一本图书,都将分别被不同的print语句打印输出2次。for循环结束后,最后1个print语句才会被执行,且只会被执行1次即他也想要这本书: robotFrameWork in Python只打印了1次。虽然程序本身是合法的,但是打印结果并不符合我们的预期。因为第3个print语句本该缩进的。

4.2.2 while语句

上面本节开始的示例,我们也可以用while语句来循环处理,也是一样的效果。代码示例如下:

In [1]: bookList = ["thinking in Java", "rpa in python", "mathematies for Computer", "robotFrameWork in Python"]
In [2]: tag = "IT_TECH_BOOK"
In [4]: num = 0
In [5]: while (num < len(bookList)) :
    ...:     print(tag + ": " + bookList[num])
    ...:     num += 1
    ...:
IT_TECH_BOOK: thinking in Java
IT_TECH_BOOK: rpa in python
IT_TECH_BOOK: mathematies for Computer
IT_TECH_BOOK: robotFrameWork in Python

说明:for语句主要是遍历列表中的所有元素,直到最后一个元素为止。而while语句则是在指定条件满足的情况才会执行,直到条件不满足时为止。比如上面的示例:我们首先定义一个变量num(初始化为0),然后指定条件num < len(bookList) 即当num 小于 列表的总个数时,将执行while后面所有缩进的语句即print语句和num += 1语句。其中bookList[num]即取列表中当前索引即num对应的值。比如:当num=0时,bookList[0] 即取列表中第一个元素即第一本图书thinking in Javanum += 1语句主要是为了让索引每次循环之后+1,这样就能达到遍历列表索引的目的,进而达到取出列表中所有元素的目的。而条件num < len(bookList) 则明确的告诉了程序,当遍历完列表中的所有元素后,就可以停止程序了。此处为什么是小于num < len(bookList) ,而不是小于等于num <= len(bookList) 呢?这个问题留给读者自己去写代码验证,看看会发生什么。

4.2.3 range()函数

range()函数是Python语言中自带的函数,它可以帮你很快的生成一系列数字。

  • range()函数的简单示例,比如:
In [17]: for i in range(10):
    ...:     print(i)
    ...:
0
1
2
3
4
5
6
7
8
9

说明:可以看到,打印是从0开始的10个数,但是不包括10。这个一定要注意。

In [18]: for i in range(1,10):
    ...:     print(i)
    ...:
1
2
3
4
5
6
7
8
9

说明:可以看到,打印是从1开始的9个数,但是不包括10。即从数学的角度来说,range(x, y)输出的数字都是左闭右开的区间。比如: range(4,10)类似于数学上的 [4, 10)。值得一提的是range(1,10)函数第1个入参1是表示数字区间的开始(注意区间开始包括1本身),第2个入参10是表示数字区间的结束(但区间结束不包括10)。

  • range()函数的其他示例,比如:使用 range()函数 还可以指定步长(默认步长是1)。
In [19]: for i in range(1,10,2):
    ...:     print(i)
    ...:
1
3
5
7
9

说明:可以看到,打印是从1开始打印,步长是2即每次增加2的5个数。值得一提的是range(1,10,2)函数第1个入参1是表示数字区间的开始(注意区间开始包括1本身),第2个入参10是表示数字区间的结束(但区间结束不包括10),第3个入参2是表示步长。步长即类似于数学上等差数列等差

range()函数的用法,读者朋友如果感兴趣的话,也可以自行查看Python官网range()函数的详细介绍。

4.2.4 Break

不管是for循环语句还是while循环语句,如果我们想在某一个元素或条件出现时,及时退出循环该怎么操作呢?在Python语言中,我们可以使用break语句来退出整个for或while循环语句。break语句可以控制程序执行流程,使用它可以决定哪些语句被执行,哪些语句不被执行,从而达到让程序按我们的要求执行的目的。来看一个简单的例子:

In [20]: for i in range(10) :
    ...:     if i >= 5 :
    ...:         break
    ...:     print(i)
    ...:
0
1
2
3
4

用while语句实现上面for循环相同的场景。代码如下:

In [21]: i = 0
In [22]: while i < 10 :
    ...:     if i >= 5 :
    ...:         break
    ...:     print(i)
    ...:     i += 1
    ...:     
0
1
2
3
4

说明:上面的代码增加if语句的判断条件,当if条件满足时,将执行break语句即退出for或while循环语句。即当i=5时,for或while循环将被终止。这也是为什么只打印了01234的原因。因为当i=5,那么if 5>=5成立,那么执行break退出整个for或while循环,下面的print(5)将不会再被执行了。

4.2.5 Continue

在实际的业务场景中,我们除了退出整个循环之外,还可能需要在满足指定条件时,返回到循环开头并根据相关条件决定是否继续执行循环操作。在Python语言中,我们可以使用continue语句来控制。当满足某个条件时,使用continue语句,会返回到循环开头,而不是像break语句那样退出整个循环。举一个简单的示例:

In [23]: for i in range(10) :
    ...:     if (i >= 6 and i < 8) :
    ...:         continue
    ...:     print(i)
    ...:
0
1
2
3
4
5
8
9

用while语句实现上面for循环相同的场景。代码如下:

In [24]: i = 0

In [25]: while i < 10 :
    ...:     i += 1
    ...:     if (i >= 6 and i < 8) :
    ...:         continue
    ...:     print(i)
    ...:
1
2
3
4
5
8
9
10

说明:可以看到,当if条件满足时,会忽略余下的代码即print语句而返回到循环开头执行下一次的循环。这也是为什么6、7没有打印的原因。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值