>>> from env_helper import info; info()
页面更新时间: 2023-04-15 21:18:03
运行环境:
Linux发行版本: Debian GNU/Linux 12 (bookworm)
操作系统内核: Linux-6.1.0-7-amd64-x86_64-with-glibc2.36
Python版本: 3.11.2
2.1. 控制流程¶
你已经知道了单条指令的基本知识。程序就是一系列指令。 但编程真正的力量不仅在于运行(或“执行”)一条接一条的指令,就像周末的任务清单那样。 根据表达式求值的结果, 程序可以决定跳过指令,重复指令,或从几条指令中选择一条运行。 实际上,你几乎永远不希望程序从第一行代码开始,简单地执行每行代码,直到最后一行。 “流程控制语句”可以决定在什么条件下执行哪些Python语句。
这些控制流语句直接对应于流程图中的符号,与流程图类似。 按照箭头构成的路径,从开始到结束。
在流程图中,通常有不止一种方法从开始走到结束。计算机程序中的代码行也是这样。 流程图用菱形表示这些分支节点,其他步骤用矩形表示。开始和结束步骤用带圆角的矩形表示。
但在学习流程控制语句之前,首先要学习如何表示这些 yes
和 no
选项。 同时你也需要理解,如何将这些分支节点写成Python代码。
要做到这一点,让我们先看看布尔值、比较操作符和布尔操作符。
2.1.1. 循环¶
至此,你知道了如何在条件为真(或假)时执行操作,但如何重复操作多次呢? 例如,你可能想创建一个程序,每月都提醒支付房租。 如果只使用已介绍过的工具,必须像下面这样编写这 个程序(伪代码):
send mail
wait one month send mail
wait one month send mail
wait one month
(... and so on)
但是如果希望程序这样不断执行下去,直到人为停止,该如何办呢?基本上,你需要编写类 似于下面的代码(也是伪代码):
while we aren't stopped:
send mail
wait one month
再来看一个更简单的例子,假设要打印1~100的所有数。同样,你可采用笨办法。
print(1)
print(2)
print(3)
...
print(99)
print(100)
但如果你愿意使用笨办法,就不会求助于Python了,不是吗?
2.1.2. 布尔值¶
虽然整型、浮点型和字符串数据类型有无数种可能的值,但“布尔”数据类型
只有两种值: True
和 False
。Boolean
(布尔)的首字母大写,因为这个数据类型是 根据数学家George
Boole命名的。在作为Python代码输入时,布尔值 True
和 False
不像字符串,两边没有引号,它们总是以大写字母T或F开头,后面的字母小写。
在交互式环境中输入下面内容,其中有些指令是故意弄错的,它们将导致出错信息。
>>> spam = True
>>>
>>> spam
True
>>> True
True
>>> True == 2 + 2
False
2.1.3. if 嵌套¶
在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
if 表达式1:
语句
if 表达式2:
语句
elif 表达式3:
语句
else:
语句
elif 表达式4:
语句
else:
语句
如下代码:
>>> num=int(input("输入一个数字:"))
>>> if num%2==0:
>>> if num%3==0:
>>> print ("你输入的数字可以整除 2 和 3")
>>> else:
>>> print ("你输入的数字可以整除 2,但不能整除 3")
>>> else:
>>> if num%3==0:
>>> print ("你输入的数字可以整除 3,但不能整除 2")
>>> else:
>>> print ("你输入的数字不能整除 2 和 3")
输入一个数字: 98
你输入的数字可以整除 2,但不能整除 3
打印多个参数¶
你知道, print 可用于打印一个表达式,这个表达式要么是字符串,要么将自动转换为字符 串。但实际上,你可同时打印多个表达式,条件是用逗号分隔它们:
>>> print('Age:', 42)
Age: 42
如你所见,在参数之间插入了一个空格字符。在你要合并文本和变量值,而又不想使用字符 串格式设置功能时,这种行为很有帮助。
>>> name = 'Gumby'
>>> salutation = 'Mr.'
>>> greeting = 'Hello,'
>>> print(greeting, salutation, name)
Hello, Mr. Gumby
如果字符串变量 greeting 不包含逗号,如何在结果中添加呢?你不能像下面这样做:
>>> print(greeting, ',', salutation, name)
Hello, , Mr. Gumby
因为这将在逗号前添加一个空格。下面是一种可行的解决方案:
>>> print(greeting + ',', salutation, name)
Hello,, Mr. Gumby
它将逗号和变量 greeting 相加。如果需要,可自定义分隔符:
>>> print("I", "wish", "to", "register", "a", "complaint", sep="_")
I_wish_to_register_a_complaint
你还可自定义结束字符串,以替换默认的换行符。例如,如果将结束字符串指定为空字符串, 以后就可继续打印到当前行。
>>> print('Hello,', end='')
>>> print('world!')
Hello,world!
2.1.4. 代码块:缩进的乐趣¶
代码块其实并不是一种语句,但要理解接下来两节的内容,你必须熟悉代码块。 代码块是一组语句,可在满足条件时执行( if 语句),可执行多次(循环),等等。代码块是 通过缩进代码(即在前面加空格)来创建的。
注意
也可使用制表符来缩进代码块。Python将制表符解释为移到下一个制表位(相邻制表位相距8个空格),但标准(也是更佳的)做法是只使用空格(而不使用制表符)来缩进,且每级缩进4个空格。
在同一个代码块中,各行代码的缩进量必须相同。下面的伪代码(并非真正的Python代码) 演示了如何缩进:
this is a line
this is another line:
this is another block
continuing the same block
the last line of this block
phew, there we escaped the inner block
在Python中,使用冒号( :
)指出接下来是一个代码块,并将该代码块中的每行代码都缩进相同的程度。
发现缩进量与之前相同时,你就知道当前代码块到此结束了。