「Pyhton教程05」控制流

Python学习笔记

作者: Duter2016 | 2019-09-23 | 阅读
「编辑」 「本文源码」

1、代码块有3条规则。
(1)缩进增加时,代码块开始。
(2)代码块可以包含其他代码块。
(3)缩进减少为零,或减少为外面包围代码块的缩进,代码块就结束了。

2、在Python中,if语句包含以下部分:
• if关键字;
• 条件(即求值为True或False的表达式);
• 冒号;
• 在下一行开始,缩进的代码块(称为if子句)。
例如,假定有一些代码,检查某人的名字是否为Alice(假设此前曾为name赋值)。

if name == 'Alice':
	print('Hi, Alice.')

所有控制流语句都以冒号结尾,后面跟着一个新的代码块(子句)。语句的if子句是代码块,包含print(‘Hi, Alice.’)。

3、else语句不包含条件,在代码中,else语句中包含下面部分:
• else关键字;
• 冒号;
• 在下一行开始,缩进的代码块(称为else子句)。
回到Alice的例子,我们来看看使用else语句的一些代码,在名字不是Alice时,提供不一样的问候。

if name == 'Alice':
	print('Hi, Alice.')
else:
	print('Hello, stranger.')

4、elif语句是“否则如果”,总是跟在if或另一条elif语句后面。它提供了另一个条件,仅在前面的条件为False时才检查该条件。在代码中,elif语句总是包含以下部分:
• elif关键字;
• 条件(即求值为True或False的表达式);
• 冒号;
• 在下一行开始,缩进的代码块(称为elif子句)。
让我们在名字检查程序中添加elif,看看这个语句的效果。

if name == 'Alice':
	print('Hi, Alice.')
elif age < 12:
	print('You are not Alice, kiddo.')

5、利用while语句,可以让一个代码块一遍又一遍的执行。只要while语句的条件为True,while子句中的代码就会执行。在代码中,while语句总是包含下面几部分:
• 关键字;
• 条件(求值为True或False的表达式);
• 冒号;
• 从新行开始,缩进的代码块(称为while子句)。
可以看到,while语句看起来和if语句类似。不同之处是它们的行为。if子句结束时,程序继续执行if语句之后的语句。但在while子句结束时,程序执行跳回到while语句开始处。while子句常被称为“while循环”,或就是“循环”。

6、如果执行遇到break语句,就会马上退出while循环子句。在代码中,break语句仅包含break关键字。
非常简单,对吗?这里有一个程序,和前面的程序做一样的事情,但使用了break语句来跳出循环。输入以下代码,将文件保存为yourName2.py:

❶ while True:
	  print('Please type your name.')
	❷ name = input()
	❸ if name == 'your name':
		❹ break
❺ print('Thank you!')

7、像break语句一样,continue语句用于循环内部。如果程序执行遇到continue语句,就会马上跳回到循环开始处,重新对循环条件求值(这也是执行到达循环末尾时发生的事情)。
让我们用continue写一个程序,要求输入名字和口令。在一个新的文件编辑窗口中输入以下代码,将程序保存为swordfish.py。

while True:
	  print('Who are you?')
	  name = input()
	❶ if name != 'Joe':
		❷ continue
	  print('Hello, Joe. What is the password? (It is a fish.)')
	❸ password = input()
	  if password == 'swordfish':
		❹ break
❺ print('Access granted.')

如果用户输入的名字不是Joe❶,continue语句❷将导致程序执行跳回到循环开始处。再次对条件求值时,执行总是进入循环,因为条件就是True。如果执行通过了if语句,用户就被要求输入口令❸。如果输入的口令是swordfish,break语句运行❹,执行跳出while循环,打印Access granted❺。否则,执行继续到while循环的末尾,又跳回到循环的开始。

8、“类真”和“类假”的值

其他数据类型中的某些值,条件认为它们等价于True和False。在用于条件时,0、0.0和’ ‘(空字符串)被认为是False,其他值被认为是True。例如,请看下面的程序:

name = ''
while not name:❶
	print('Enter your name:')
	name = input()
	print('How many guests will you have?')
	numOfGuests = int(input())
	if numOfGuests:❷
		print('Be sure to have enough room for all your guests.')❸
print('Done')

如果用户输入一个空字符串给name,那么while语句的条件就会是True ❶,程序继续要求输入名字。如果numOfGuests不是0 ❷,那么条件就被认为是True,程序就会为用户打印一条提醒信息❸。

可以用not name != ‘ ‘代替not name,用numOfGuests != 0代替numOfGuests,但使用类真和类假的值会让代码更容易阅读。

9、如果你想让一个代码块执行固定次数,该怎么办?可以通过for循环语句和range()函数来实现。 在代码中,for语句看起来像for i in range(5):这样,总是包含以下部分: • for关键字; • 一个变量名; • in关键字; • 调用range()方法,最多传入3个参数; • 冒号; • 从下一行开始,缩退的代码块(称为for子句)。 也可以在循环中使用continue语句。continue语句将让for循环变量继续下一个值,就像程序执行已经到达循环的末尾并返回开始一样。实际上,只能在while和for循环内部使用continue和break语句。如果试图在别处使用这些语句,Python将报错。

10、range()的开始、停止和步长参数
某些函数可以用多个参数调用,参数之间用逗号分开,range()就是其中之一。这让你能够改变传递给range()的整数,实现各种整数序列,包括从0以外的值开始。

for i in range(12, 16):
	print(i)

第一个参数是for循环变量开始的值,第二个参数是上限,但不包含它,也就是循环停止的数字。

12
13
14
15

range()函数也可以有第三个参数。前两个参数分别是起始值和终止值,第三个参数是“步长”。步长是每次迭代后循环变量增加的值。

for i in range(0, 10, 2):
	print(i)

所以调用range(0, 10, 2)将从0数到8,间隔为2。

0
2
4
6
8

在为for循环生成序列数据方面,range()函数很灵活。

11、 用sys.exit()提前结束程序

要介绍的最后一个控制流概念,是如何终止程序。当程序执行到指令的底部时,总是会终止。但是,通过调用sys.exit()函数,可以让程序终止或退出。因为这个函数在sys模块中,所以必须先导入sys,才能使用它。


版权声明:本文由 Duter2016 在 2019年09月23日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《「Pyhton教程05」控制流》




  相关文章:

「游客及非Github用户留言」:

「Github登录用户留言」:

TOP