python学习笔记-控制流(if for while break continue)
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)的更多相关文章
- OpenCV之Python学习笔记
OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...
- Python学习笔记(十)
Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...
- 【python学习笔记】9.魔法方法、属性和迭代器
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...
- 【python学习笔记】5.条件、循环和其他语句
[python学习笔记]5.条件.循环和其他语句 print: 用来打印表达式,不管是字符串还是其他类型,都输出以字符串输出:可以通过逗号分隔输出多个表达式 import: 导入模块 impo ...
- Python学习笔记九
Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...
- Python学习笔记,day5
Python学习笔记,day5 一.time & datetime模块 import本质为将要导入的模块,先解释一遍 #_*_coding:utf-8_*_ __author__ = 'Ale ...
- Deep learning with Python 学习笔记(10)
生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...
- Deep learning with Python 学习笔记(3)
本节介绍基于Keras的使用预训练模型方法 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已在 ...
- Deep learning with Python 学习笔记(2)
本节介绍基于Keras的CNN 卷积神经网络接收形状为 (image_height, image_width, image_channels)的输入张量(不包括批量维度),宽度和高度两个维度的尺寸通常 ...
随机推荐
- BTN事件的响应区域
是其下所有小图片的区域组合.是并集
- (1)activiti认识以及数据库和插件配置
工作流介绍 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程, 从而实现某个预期的业务目标, ...
- hibernate查询出的实体,set值后,自动更新到数据库
1.问题症状描述 最近在处理一个新需求问题,代码的大致逻辑是获取一个实体对象,调用该对象的set方法设置其中的某些字段,然后把修改后的实体作为参数供其他地方调用,根据返回值来决定是否更新这个 ...
- ios 获取当前wifi名称
ios5之前可以通过读取配置文件获取,ios5以后苹果修改wifi列表文件位置,只有root权限才可以读取. ios4:/System/Library/SystemConfiguration/WiFi ...
- LeNet
LeNet 模型特点 LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性.当时结构的特点如下: 1)每个卷积层包含三个部分:卷积(Conv).池化(ave-pooling) ...
- nignx reload的时候报错invalid PID number
第一种思路是从PID号着手,提示无效PID号时nginx.pid文件为空,将进程的PID号追加到空的nginx.pid上,问题解决: 还有问题,请参考:https://www.cnblogs.com/ ...
- Zookeeper 源码(七)请求处理
Zookeeper 源码(七)请求处理 以单机启动为例讲解 Zookeeper 是如何处理请求的.先回顾一下单机时的请求处理链. // 单机包含 3 个请求链:PrepRequestProcessor ...
- python机器学习工具包scikit-learn
scikit-learn这个非常强大的python机器学习工具包 http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.ht ...
- 安装一个Redis
1. 官网 http://redis.io/ 2.下载 官方不提供windows版本,但https://github.com/MSOpenTech/redis 可以从这里获取64位. 3.
- Codeforces758D Ability To Convert 2017-01-20 10:29 231人阅读 评论(0) 收藏
D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...