JZGKCHINA
工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
「人生苦短,我用 Python」
Python 诞生之初就被誉为最容易上手的编程语言。进入火热的 AI 人工智能时代后,它也逐渐取代 Java,成为编程界的头牌语言。
从上周开始,我们带给剑指工控的网友们带来一个完全免费的福利——超简单 跟我学Python,每周一期,由剑指工控大神剑思庭主讲哦!
来吧!一起学起来!
01
安装Python(点击跳转学习)
02
03
04
基础知识 (点击跳转学习)
05
说明:
Python 3.9 是当前可用的最新版本 Python,因此,我们将在以下说明中引用该版本。此外,这些说明专用于 Windows 10。如果使用以前版本的 Windows,则基本说明是相同的,不过某些步骤中的过程可能略有不同。
第六讲
控 制 流
在 Python 中,有 if,for 和 while 三个控制流语句。
if语句
if 语句用于检查一个条件:如果条件是真的,我们运行一个语句块(称为 if-block),否则我们执行另一个语句块(称为 else-block)。else 语句是可选的。
示例(保存为 demo.py):
'''
version = 1.0
author = 剑指工控
'''
number = 23
guess = int(input('Enter an integer : '))
if guess == number:
# 新程序块的开始处
print('Congratulations, you guessed it.')
print('(but you do not win any prizes!)')
# 新程序块的结尾处
elif guess < number:
# 另一个程序块
print('No, it is a little higher than that')
# 你可以在程序块中“为所欲为”——做任何你想做的事情
else:
print('No, it is a little lower than that')
# 只有当猜测数大于给定数的时候,才会执行此处
print('Done')
# 在 if 语句执行结束后,最后的这句语句总是会被执行。
输出:
> python demo.py
Enter an integer : 50
No, it is a little lower than that
Done
> python demo.py
Enter an integer : 22
No, it is a little higher than that
Done
> python demo.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
Done
它的工作原理:
在这个程序中,我们从用户那里获得猜测数(guesses),然后检查一下它是否等于我们设定的数字。我们将变量 number 设置为任意整数,比如 23 。然后,我们用 input() 函数得到用户的猜测数。函数只是可以重复使用的程序片段。我们将在 下一章 看到更多关于函数的内容。
我们向内置的 input 函数提供一个字符串,该函数将其打印输出到屏幕上,然后等待用户的输入。一旦我们键入一些内容并按下 [回车] 键, 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 会遇到程序的结尾然后直接结束。
Python 中没有 switch 语句。你可以用一个 if..elif..else 语句完成相同的操作(在某些情况下,你还可以用 字典(dictionary) 快速地完成相同操作)。
while语句
while 语句可以让你重复执行一个语句块,只要条件为真。一个 while 语句就是所谓的 循环 语句的一个例子。一个 while 语句可以有一个可选的 else 从句。
示例(保存为 demo.py):
'''
version = 1.0
author = 剑指工控
'''
number = 23
running = True
while running:
guess = int(input('Enter an integer : '))
if guess == number:
print('Congratulations, you guessed it.')
# 这会导致 while 循环停止
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.')
# 你可以在此处继续进行其它你想做的操作
print('Done')
输出:
> python demo.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 循环地内部,并在 while 循环之前将变量 running 设置为 True 。首先,我们检查变量 running 是否为 True ,然后继续执行相应的 while 语句块 。执行完该语句块以后,再检查条件是否成立,在本例中,条件是变量 running 。如果条件为真,我们就再次执行 while 语句块,否则我们将继续向下执行可选的 else 语句块,然后继续向下执行下一个语句。
else 语句块会在 while 循环的条件变为 False 时执行 —— 甚至有可能在第一次检查条件时,条件就是 False 。如果 while 循环中有一个 else 从句,它总是会执行到,除非用 break 语句跳出循环。
我们将 True 和 False 称为布尔类型,而且你可以认为它们分别等于数值 1 和 0 。
记住,在 while 循环中可以有一个 else 从句。
for循环
for..in 语句是另一种循环语句,它会 迭代 对象序列,即会遍历序列中的的每个项。在后面的章节中,我们将详细了解 序列 。目前你只需要知道的是,序列只是一个有序的项的集合。
示例(保存为 demo.py):
'''
version = 1.0
author = 剑指工控
'''
for i in range(1, 5):
print(i)
else:
print('The for loop is over')
输出:
> python demo.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() 每次只产生一个数字,如果你想要完整的数字序列,那就需要在 range() 上调用 list() 函数。例如, 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 函数生成的数字列表,但是更一般地,我们可以使用任何对象的任何序列!
break语句
break 语句是用来 中断 循环语句的,即直接停止循环语句的执行,就算循环条件没有变为 False 或者序列没有迭代到最后一项。
需要重点关注的是,如果你 中断 了一个 for 循环或者一个 while 循环,任何相应循环的 else 语句块都不会被执行。
示例(保存为 demo.py):
'''
version = 1.0
author = 剑指工控
'''
while True:
s = input('Enter something : ')
if s == 'quit':
break
print('Length of the string is', len(s))
print('Done')
输出:
> python demo.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 循环一起使用。
就这么简单,下周四见!
作者简介:
剑思庭,工业网络安全研究员,研究方向为工业网络渗透与防御建设,专注于红队攻击链打造。