• if语句

if语句用以检查条件:如果条件为真(True),将运行一块语句(称作 if-block 或 if 块),否则将运行另一块语句(称作 else-block 或 else 块)。其中else 从句是可选的。

案例  if.py

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 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

if.py是如何工作的:

在这个程序中,我们根据用户猜测的数字来检查这一数字是否是我们设置的。我们将变量number设为任何我们所希望的整数,例如23。然后,通过input()函数来获取用户的猜测数。

我们为内置的input()函数提供一串打印到屏幕上的字符串并等待用户的输入。一旦输入了某些内容并按下键盘上的Enter键, input()函数将以字符串的形式返回我们所输入的内容。然后通过int这个类(class)将这个字符串转换成一个整数并将其储存在变量guess中。

接下来,将用户提供的猜测数与我们所选择的数字进行对比。如果相等,就打印一条成功信息。在这里要注意到我们使用缩进级别来告诉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 会发现已行至程序末尾并宣告工作的完成。

  • while 语句

while语句能够在条件为真的前提下重复执行某块语句。while语句是循环 (Looping) 语句的一种。while语句同样可以拥有else子句作为可选选项。

案例  while.py

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 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.py是如何工作的:

在这一程序中,依旧通过猜数游戏来演示,不过新程序的优点在于能够允许用户持续猜测直至他猜中为止——而无需像在上一节中所做的那样,每次猜测都要重新运行程序。这种变化恰到好处地演示了while语句的作用。

首先将 input与 if语句移到 while循环之中,并在 while 循环开始前将变量running 设置为 True。程序开始时,首先检查变量 running是否为True ,之后再执行相应的 while 块。在这一代码块被执行之后,将会重新对条件进行检查,在本例中也就是 running变量。如果它依旧为True ,将再次执行 while 块,否则将继续执行可选的 else 块,然后进入到下一个语句中。

else代码块在 while循环的条件变为 false时开始执行——这个开始的时机甚至可能是在第一次检查条件的时候。如果 while循环中存在一个else 代码块,它将总是被执行, 除非通过 break语句来中断这一循环。

  • for循环

for语句是另一种循环语句,特点是会在一系列对象上进行迭代(Iterates),即它会遍历序列中的每一个项目。

案例  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

for.py是如何工作的:
    在这一程序中,打印了一序列的数字。我们通过内置的range函数生成这一数字序列。

在这里我们所要做的事情是提供两个数字,而 range将会返回一序列的数字,从第一个数字开始,至第二个数字结束。举个例子,range(1,5) 将输出序列 [1,2,3,4]。在默认情况下, range将会以 1 逐步递增。如果我们向 range提供第三个数字,则这个数字将成为逐步递增的加数。同样举个例子来说明, range(1,5,2)将会输出 [1,3]。要记住这一序列扩展直到第二个数字,也就是说,它不会包括第二个数字在内。

然后 for循环就会在这一范围内展开递归——for i in range(1,5) 等价于 for i in [1,2,3,4],这个操作依次将队列里的每个数字(或是对象)分配给i ,一次一个,然后以每个 i的值执行语句块。在本例中,这一语句块所做的就是打印出这些值。

else部分是可选的。当循环中包含else时,它总会在for循环结束后开始执行,除非程序遇到了 break 语句。

  • break语句

break语句用以中断(Break)循环语句,也就是中止循环语句的执行,即使循环条件没有变更为False ,或队列中的项目尚未完全迭代依旧如此。

有一点需要尤其注意,如果中断了一个for 或 while循环,任何相应循环中的else块都将不会被执行。

案例  break.py

while True:
s = raw_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

break.py是如何工作的:

在本程序中,重复地接受用户的输入内容并打印出每一次输入内容的长度。通过检查用户输入的是否是quit 这一特殊条件来判断是否应该终止程序。我们通过中断循环并转进至程序末尾来结束这一程序。

输入字符串的长度可以通过内置的len函数来找到。

break语句同样可以适用于for 循环。

  • continue语句

案例  continue.py

while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
print('Too small')
continue
print('Input is of sufficient length') # 自此处起继续进行其它任何处理

输出:

$ python continue.py
Enter something : a
Too small
Enter something : 12
Too small
Enter something : abc
Input is of sufficient length
Enter something : quit

continue.py 是如何工作的:

在本程序中,接受来自用户的输入内容,但是只有在输入的字符串其长至少 3 字符我们才会对其进行处理。为此,我们使用内置的 len函数来获取字符串的长度,如果其长度小于3,我们便通过使用 continue语句跳过代码块中的其余语句。否则,循环中的剩余语句将被执行,并在此处进行我们所希望的任何类型的处理。

continue语句同样能用于 for循环。

python学习笔记-控制流(if for while break continue)的更多相关文章

  1. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  2. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

  3. 【python学习笔记】9.魔法方法、属性和迭代器

    [python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...

  4. 【python学习笔记】5.条件、循环和其他语句

    [python学习笔记]5.条件.循环和其他语句 print: 用来打印表达式,不管是字符串还是其他类型,都输出以字符串输出:可以通过逗号分隔输出多个表达式 import: 导入模块     impo ...

  5. Python学习笔记九

    Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...

  6. Python学习笔记,day5

    Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...

  7. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

  8. Deep learning with Python 学习笔记(3)

    本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...

  9. Deep learning with Python 学习笔记(2)

    本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...

随机推荐

  1. struts2配置默认首页

    配置struts2 默认欢迎页的几种办法: 1.首先需要明确的是struts过滤器配置映射的模式是路径匹配还是扩展匹配,如果url-pattern配置为/*,如果不做特殊处理,是不会转到welcome ...

  2. window 10 javac不是内部或外部命令

    今天在新电脑上配置Java环境变量(window 10),不管怎么配置都是提示“javac不是内部或外部命令”,java,java -version命令是正常的. 后来发现是path路径配置的不对,修 ...

  3. jQuery插件Highcharts

    Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用. ...

  4. java解析json串获取key和value

    网上例子巨多,纯属个人笔记: JSONObject maleArray = maleObject.getJSONObject("extension"); Iterator<S ...

  5. selenium IDE测试中的坑

    selenium IDE工具是firefox自带的一个网页自动化测试工具,因为它是IDE所以它很方便使用,但也因为它是IDE所以它有那么些坑. 问题:selenium回放中timeout问题 网页的打 ...

  6. 286 walls and gate最近的出口

    [抄题]: 您将获得一个使用这三个可能值初始化的 m×n 2D 网格.-1 - 墙壁或障碍物. 0 - 门. INF - Infinity是一个空房间.我们使用值 2 ^ 31 - 1 = 21474 ...

  7. __imp___vsnprintf

    unresolved external symbol __imp___vsnprintf 解决方案找到了. 在vs2015工程选项,链接器附加依赖项里面添加legacy_stdio_definitio ...

  8. Spring 学习记录2 Environment

    Environment是什么 environment是什么呢....中文是环境大家都知道但是具体代表什么呢?感觉很抽象....从代码里的解释来看environment代表了profile和proper ...

  9. GPS坐标转换为百度地图坐标

    /** * GPS坐标转换为百度地图坐标 * 需要引入javabase64.jar 和json的一些包 * */ public class Gps2BaiDu { public static void ...

  10. centos环境下登录mysql报 ERROR 1045 (28000)怎么解决

    centos环境下登录mysql报 ERROR 1045 (28000)怎么解决 新入手一台虚拟机,Centos7系列的操作系统,安装mysql后,执行连接出现了Mysql ERROR 1045 (2 ...