控制流
在我们迄今为止看过的程序中,一直有一系列由Python以自上而下的顺序忠实执行的语句。如果你想改变它的工作流程怎么办?例如,您希望程序根据不同的情况做出一些决定并做不同的事情,例如根据一天中的时间打印“早上好”或“晚上好”?
您可能已经猜到,这是使用控制流语句实现的。在Python三种控制流语句- if
,for
和while
。
该if
声明
该if
语句用于检查条件:如果条件为真,则运行一个语句块(称为if-block),否则我们处理另一个语句块(称为else-block)。在其他子句是可选的。
示例(另存为if.py
):
控制流
在我们迄今为止看过的程序中,一直有一系列由Python以自上而下的顺序忠实执行的语句。如果你想改变它的工作流程怎么办?例如,您希望程序根据不同的情况做出一些决定并做不同的事情,例如根据一天中的时间打印“早上好”或“晚上好”?
您可能已经猜到,这是使用控制流语句实现的。在Python三种控制流语句- if
,for
和while
。
该if
声明
该if
语句用于检查条件:如果条件为真,则运行一个语句块(称为if-block),否则我们处理另一个语句块(称为else-block)。在其他子句是可选的。
示例(另存为if.py
):
number = 23
guess = int(input('Enter an integer : '))
if guess == number:
# New block starts here
print('Congratulations, you guessed it.')
print('(but you do not win any prizes!)')
# New block ends here
elif guess < number:
# Another block
print('No, it is a little higher than that')
# You can do whatever you want in a block ...
else:
print('No, it is a little lower than that')
# you must have guessed > number to reach here
print('Done')
# This last statement is always executed,
# after the if statement is executed.
输出:
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
这个怎么运作
在这个程序中,我们从用户那里猜测并检查它是否是我们拥有的数字。我们将变量设置为number
我们想要的任何整数23
。然后,我们使用该input()
功能进行用户的猜测。功能只是可重复使用的程序。我们将在下一章中详细介绍它们。
我们为内置input
函数提供一个字符串,将其打印到屏幕上并等待用户输入。输入内容并按kbd:[enter]键后,该input()
函数将返回我们输入的内容,作为字符串。然后,我们将此字符串转换为整数int
,然后将其存储在变量中guess
。实际上,这int
是一个类,但您现在需要知道的是,您可以使用它将字符串转换为整数(假设字符串在文本中包含有效的整数)。
接下来,我们将用户的猜测与我们选择的数字进行比较。如果它们相等,我们会打印成功消息。请注意,我们使用缩进级别来告诉Python哪些语句属于哪个块。这就是缩进在Python中如此重要的原因。我希望你坚持“一致的缩进”规则。你是?
注意if
语句最后是如何包含冒号的 - 我们向Python指出后面是一个语句块。
然后,我们检查猜测是否小于数字,如果是,我们通知用户他们必须猜测比这更高一点。我们在这里使用的是elif
实际将两个相关if else-if else
语句组合成一个组合if-elif-else
语句的子句。这使程序更容易,减少了所需的缩进量。
的elif
和else
语句也必须有(当然与适当的缩进,)在逻辑行随后的语句其对应的块的端部的结肠
您可以在if
语句的if块中包含另一个if
语句,依此类推 - 这称为嵌套if
语句。
请记住,elif
和else
部分是可选的。最小的有效if
声明是:
if True:
print('Yes, it is true')
在Python完成执行完整if
语句以及关联的elif
和else
子句之后,它将继续执行包含该if
语句的块中的下一个语句。在这种情况下,它是主块(程序的执行开始),下一个语句是print('Done')
语句。在此之后,Python会看到程序的结尾并完成。
即使这是一个非常简单的程序,我也指出了很多你应该注意到的事情。所有这些都非常简单(对于那些来自C / C ++背景的人来说非常简单)。你最初需要了解所有这些事情,但经过一些练习后你会对它们感到满意,而且对你来说都会感觉“自然”。
C / C ++程序员注意事项
switch
Python中没有声明。您可以使用if..elif..else
语句执行相同的操作(在某些情况下,使用字典快速执行)
while声明
while
只要条件为真,该语句允许您重复执行语句块。一个while
说法是所谓的一个例子循环语句。一个while
语句可以有一个可选的else
条款。
示例(另存为while.py
):
number = 23
running = True
while running:
guess = int(input('Enter an integer : '))
if guess == number:
print('Congratulations, you guessed it.')
# this causes the while loop to stop
running = False
elif guess < number:
print('No, it is a little higher than that.')
else:
print('No, it is a little lower than that.')
else:
print('The while loop is over.')
# Do anything else you want to do here
print('Done')
输出:
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
这个怎么运作
在这个程序中,我们仍在玩猜谜游戏,但优点是允许用户继续猜测,直到他猜对了 - 没有必要为每次猜测重复运行程序,正如我们在上一节中所做的那样。这恰当地证明了该while
陈述的使用。
我们移动input
和if
语句内部while
循环和变量设置running
到True
while循环之前。首先,我们检查变量running
是否True
然后继续执行相应的while-block。在执行该块之后,再次检查条件,在这种情况下是running
变量。如果是,我们再次执行while-block,否则我们继续执行可选的else-block,然后继续执行下一个语句。
else
当while
循环条件变为时执行该块False
- 这甚至可能是第一次检查条件。如果有else
一个while
循环的子句,它总是被执行,除非你用一个break
语句中断循环。
该True
和False
被称为布尔类型,你可以认为他们是等同于价值1
和0
分别。
C / C ++程序员注意事项
请记住,您可以
else
为while
循环创建一个子句。
该for
环
该for..in
语句是另一个循环语句,它迭代一系列对象,即遍历序列中的每个元素。我们将在后面的章节中详细介绍序列。你现在需要知道的是序列只是一个有序的元素集合。
示例(另存为for.py
):
for i in range(1, 5):
print(i)
else:
print('The for loop is over')
输出:
$ python for.py
1
2
3
4
The for loop is over
这个怎么运作
在这个程序中,我们正在打印一系列数字。我们使用内置range
函数生成这个数字序列。
我们在这里做的是提供两个数字并range
返回从第一个数字开始到第二个数字的一系列数字。例如,range(1,5)
给出序列[1, 2, 3, 4]
。默认情况下,range
步数为1.如果我们提供第三个数字range
,那么这将成为步数。例如,range(1,5,2)
给出[1,3]
。请记住,范围扩展达第二个数,即它不包含第二个数。
需要注意的是range()
在同一时间产生只有一个号码,如果你要号码的完整列表,请拨打list()
上range()
,例如,list(range(5))
将导致[0, 1, 2, 3, 4]
。列表在数据结构章节中进行了解释。
该for
循环在这个范围内进行迭代- for i in range(1,5)
相当于for i in [1, 2, 3, 4]
其是像在时间分配所述序列中的每个数(或对象)至i,一个,然后执行语句的块对的每个值i
。在这种情况下,我们只打印语句块中的值。
请记住,该else
部分是可选的。包含时,for
除非遇到break语句,否则它总是在循环结束后执行一次。
请记住,for..in
循环适用于任何序列。这里,我们有一个由内置range
函数生成的数字列表,但一般来说我们可以使用任何类型的对象的任何类型的序列!我们将在后面的章节中详细探讨这个想法。
或如果这个变量是一个数组时我们也可以这样写
C / C ++ / Java / C#程序员注意事项
Python
for
循环与C / C ++for
循环完全不同。C#程序员会注意到for
Python 中的循环类似于foreach
C#中的循环。Java程序员会注意到它与for (int i : IntArray)
Java 1.5中的相似。在C / C ++中,如果你想写
for (int i = 0; i < 5; i++)
,那么在Python中你只需编写for i in range(0,5)
。正如您所看到的,for
循环更简单,更具表现力,并且在Python中不易出错。
休息声明
该break
语句用于中断循环语句,即停止执行循环语句,即使循环条件尚未变为False
或项目序列尚未完全迭代。
一个重要的注释是,如果你打破了一个for
或while
循环,任何对应的循环else
是块不执行。
示例(另存为break.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
输出:
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 11
Enter something : quit
Done
这个怎么运作
在这个程序中,我们反复取用户的输入并每次打印每个输入的长度。我们提供了一个特殊条件来通过检查用户输入是否来停止程序 'quit'
。我们通过突破循环并到达程序结束来停止程序。
可以使用内置len
函数找到输入字符串的长度。
请记住,该break
语句也可以与for
循环一起使用。
Swaroop的Poetic Python
我在这里使用的输入是我写的一首小诗:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
该continue
声明
该continue
语句用于告诉Python跳过当前循环块中的其余语句并继续循环的下一次迭代。
示例(另存为continue.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
print('Too small')
continue
print('Input is of sufficient length')
# Do other kinds of processing here...
输出:
$ python continue.py
Enter something : a
Too small
Enter something : 12
Too small
Enter something : abc
Input is of sufficient length
Enter something : quit
这个怎么运作
在这个程序中,我们接受来自用户的输入,但是只有在输入字符串长度至少为3个字符时才处理输入字符串。因此,我们使用内置len
函数来获取长度,如果长度小于3,我们使用该continue
语句跳过块中的其余语句。否则,执行循环中的其余语句,执行我们想要在此处执行的任何类型的处理。
请注意,该continue
语句也适用于for
循环。
摘要
我们已经看到了如何使用三种控制流语句- if
,while
以及for
与其相关的一起break
和continue
报表。这些是Python中最常用的部分,因此,对它们感到满意是至关重要的。
接下来,我们将看到如何创建和使用函数。
输出:
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
这个怎么运作
在这个程序中,我们从用户那里猜测并检查它是否是我们拥有的数字。我们将变量设置为number
我们想要的任何整数23
。然后,我们使用该input()
功能进行用户的猜测。功能只是可重复使用的程序。我们将在下一章中详细介绍它们。
我们为内置input
函数提供一个字符串,将其打印到屏幕上并等待用户输入。输入内容并按kbd:[enter]键后,该input()
函数将返回我们输入的内容,作为字符串。然后,我们将此字符串转换为整数int
,然后将其存储在变量中guess
。实际上,这int
是一个类,但您现在需要知道的是,您可以使用它将字符串转换为整数(假设字符串在文本中包含有效的整数)。
接下来,我们将用户的猜测与我们选择的数字进行比较。如果它们相等,我们会打印成功消息。请注意,我们使用缩进级别来告诉Python哪些语句属于哪个块。这就是缩进在Python中如此重要的原因。我希望你坚持“一致的缩进”规则。你是?
注意if
语句最后是如何包含冒号的 - 我们向Python指出后面是一个语句块。
然后,我们检查猜测是否小于数字,如果是,我们通知用户他们必须猜测比这更高一点。我们在这里使用的是elif
实际将两个相关if else-if else
语句组合成一个组合if-elif-else
语句的子句。这使程序更容易,减少了所需的缩进量。
的elif
和else
语句也必须有(当然与适当的缩进,)在逻辑行随后的语句其对应的块的端部的结肠
您可以在if
语句的if块中包含另一个if
语句,依此类推 - 这称为嵌套if
语句。
请记住,elif
和else
部分是可选的。最小的有效if
声明是:
if True:
print('Yes, it is true')
在Python完成执行完整if
语句以及关联的elif
和else
子句之后,它将继续执行包含该if
语句的块中的下一个语句。在这种情况下,它是主块(程序的执行开始),下一个语句是print('Done')
语句。在此之后,Python会看到程序的结尾并完成。
即使这是一个非常简单的程序,我也指出了很多你应该注意到的事情。所有这些都非常简单(对于那些来自C / C ++背景的人来说非常简单)。你最初需要了解所有这些事情,但经过一些练习后你会对它们感到满意,而且对你来说都会感觉“自然”。
C / C ++程序员注意事项
switch
Python中没有声明。您可以使用if..elif..else
语句执行相同的操作(在某些情况下,使用字典快速执行)
while声明
while
只要条件为真,该语句允许您重复执行语句块。一个while
说法是所谓的一个例子循环语句。一个while
语句可以有一个可选的else
条款。
示例(另存为while.py
):
number = 23
running = True
while running:
guess = int(input('Enter an integer : '))
if guess == number:
print('Congratulations, you guessed it.')
# this causes the while loop to stop
running = False
elif guess < number:
print('No, it is a little higher than that.')
else:
print('No, it is a little lower than that.')
else:
print('The while loop is over.')
# Do anything else you want to do here
print('Done')
输出:
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
这个怎么运作
在这个程序中,我们仍在玩猜谜游戏,但优点是允许用户继续猜测,直到他猜对了 - 没有必要为每次猜测重复运行程序,正如我们在上一节中所做的那样。这恰当地证明了该while
陈述的使用。
我们移动input
和if
语句内部while
循环和变量设置running
到True
while循环之前。首先,我们检查变量running
是否True
然后继续执行相应的while-block。在执行该块之后,再次检查条件,在这种情况下是running
变量。如果是,我们再次执行while-block,否则我们继续执行可选的else-block,然后继续执行下一个语句。
else
当while
循环条件变为时执行该块False
- 这甚至可能是第一次检查条件。如果有else
一个while
循环的子句,它总是被执行,除非你用一个break
语句中断循环。
该True
和False
被称为布尔类型,你可以认为他们是等同于价值1
和0
分别。
C / C ++程序员注意事项
请记住,您可以
else
为while
循环创建一个子句。
该for
环
该for..in
语句是另一个循环语句,它迭代一系列对象,即遍历序列中的每个项目。我们将在后面的章节中详细介绍序列。你现在需要知道的是序列只是一个有序的项目集合。
示例(另存为for.py
):
for i in range(1, 5):
print(i)
else:
print('The for loop is over')
输出:
$ python for.py
1
2
3
4
The for loop is over
这个怎么运作
在这个程序中,我们正在打印一系列数字。我们使用内置range
函数生成这个数字序列。
我们在这里做的是提供两个数字并range
返回从第一个数字开始到第二个数字的一系列数字。例如,range(1,5)
给出序列[1, 2, 3, 4]
。默认情况下,range
步数为1.如果我们提供第三个数字range
,那么这将成为步数。例如,range(1,5,2)
给出[1,3]
。请记住,范围扩展达第二个数,即它不包含第二个数。
需要注意的是range()
在同一时间产生只有一个号码,如果你要号码的完整列表,请拨打list()
上range()
,例如,list(range(5))
将导致[0, 1, 2, 3, 4]
。列表在数据结构章节中进行了解释。
该for
循环在这个范围内进行迭代- for i in range(1,5)
相当于for i in [1, 2, 3, 4]
其是像在时间分配所述序列中的每个数(或对象)至i,一个,然后执行语句的块对的每个值i
。在这种情况下,我们只打印语句块中的值。
请记住,该else
部分是可选的。包含时,for
除非遇到break语句,否则它总是在循环结束后执行一次。
请记住,for..in
循环适用于任何序列。这里,我们有一个由内置range
函数生成的数字列表,但一般来说我们可以使用任何类型的对象的任何类型的序列!我们将在后面的章节中详细探讨这个想法。
C / C ++ / Java / C#程序员注意事项
Python
for
循环与C / C ++for
循环完全不同。C#程序员会注意到for
Python 中的循环类似于foreach
C#中的循环。Java程序员会注意到它与for (int i : IntArray)
Java 1.5中的相似。在C / C ++中,如果你想写
for (int i = 0; i < 5; i++)
,那么在Python中你只需编写for i in range(0,5)
。正如您所看到的,for
循环更简单,更具表现力,并且在Python中不易出错。
休息声明
该break
语句用于中断循环语句,即停止执行循环语句,即使循环条件尚未变为False
或项目序列尚未完全迭代。
一个重要的注释是,如果你打破了一个for
或while
循环,任何对应的循环else
是块不执行。
示例(另存为break.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
输出:
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 11
Enter something : quit
Done
这个怎么运作
在这个程序中,我们反复取用户的输入并每次打印每个输入的长度。我们提供了一个特殊条件来通过检查用户输入是否来停止程序 'quit'
。我们通过突破循环并到达程序结束来停止程序。
可以使用内置len
函数找到输入字符串的长度。
请记住,该break
语句也可以与for
循环一起使用。
Swaroop的Poetic Python
我在这里使用的输入是我写的一首小诗:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
该continue
声明
该continue
语句用于告诉Python跳过当前循环块中的其余语句并继续循环的下一次迭代。
示例(另存为continue.py
):
while True:
s = input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
print('Too small')
continue
print('Input is of sufficient length')
# Do other kinds of processing here...
输出:
$ python continue.py
Enter something : a
Too small
Enter something : 12
Too small
Enter something : abc
Input is of sufficient length
Enter something : quit
这个怎么运作
在这个程序中,我们接受来自用户的输入,但是只有在输入字符串长度至少为3个字符时才处理输入字符串。因此,我们使用内置len
函数来获取长度,如果长度小于3,我们使用该continue
语句跳过块中的其余语句。否则,执行循环中的其余语句,执行我们想要在此处执行的任何类型的处理。
请注意,该continue
语句也适用于for
循环。
摘要
我们已经看到了如何使用三种控制流语句- if
,while
以及for
与其相关的一起break
和continue
报表。这些是Python中最常用的部分,因此,对它们感到满意是至关重要的。
接下来,我们将看到如何创建和使用函数。
注意:每个判断条件都以 : 为结束,表示开始当前block,下一行行首以四个空格或一个Tab键缩进为当前block内容。
在书写习惯上我建议在每行的行位都加上 ; 表示结束,以此养成一个良好的编码习惯