Python 基础语法五-控制流

在开始进行控制流之前,先要学习一下如何将程序保存到文件中。在前面的学习过程中所有的代码都是在命令行环境中运行的,输入一行代码 python 解释器输出一个结果。当我们开始控制流的学习时我们单次运行的代码不止一行,这就不再适用命令行一行一行输入的情况了,这时我们就需要将我们的程序保存到一个文件中,再使用 python 一次运行这个文件就可以了。python 的文件以 .py 为文件后缀。我们来看一个简单的 python 文件内容

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'print hello world'

print('Hello World!')

将以上内容保存为hello.py,执行命令python3 hello.py程序将输出Hello World!

接下来来看下文件内容的含义:

第一行和第二行是注释行。第一行注释可以让该文件在安装有 python3 的 Unix/Linux/Mac 设备上运行,第二行注释表示该文件本身使用标准 UTF-8 编码。

第三行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释。

第五行是该文件真正的代码行,在程序运行过程中改行输出字符串Hello World!

在 python 中以#开头的为注释内容,python 解释器在执行过程中会跳过该行。

控制流

截止目前为止,所有的程序都是按照代码顺序来执行的,而实际使用中往往是需要根据输入来执行不同的操作并输出不同的结果,者就是今天我们要看的控制流,在 python 中控制流主要分为:条件判断和循环。

条件判断

计算机之所以可以协助人类做许多工作(且做的比人类更快更好),一个很大的原因是它可以依据输入作出条件判断。在 python 中条件判断主要有 if 语句、else 语句和 elif 语句来完成。我们先来看一下使用示例:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-


age = int(input('please enter your age:'))

if age >= 18:
    print('you are an adult')
elif age >= 6:
    print('you are an teenager')
else:
    print('you are an kid')

在以上示例中,使用 if 语句、else 语句和 elif 语句来判断输入的年龄。程序会依次执行 if 语句、elif 语句、else 语句,当该语句判断为 True 时,执行该判断对应的语句块并跳过后面的判断语句。

elif 实际是 else if 的缩写,同时可存在多个 elif 语句。

if age >= 18:中,if表示条件判断语句,age >= 18表示需要判断的条件,:表示判断语句的结束,后面是语句块。每个判断语句后总是有一个语句块,在 python 中语句块的定义如下:

Python 开发者有意让用错了缩进规则的程序不能通过编译,以此来强迫程序员养成良好的编程习惯。并且Python 語言利用缩进表示语句块的开始和结束(Off-side 规则),而非使用花括号或者某种关键字。增加缩进表示语句块的开始,而減少缩进排则表示语句块的结束。缩进成为了语法的一部分。例如 if 语句. 根剧 PEP 的规定,必须使用 4 个空格来表示每级缩进。使用 Tab 字符和其它数目的空格虽然都可以编译通过,但不符合编码规范。支持 Tab 字符和其它数目的空格仅仅是为兼容很旧的 Python 程式和某些有问题的编辑程式。

根据以上定义,python 语句块需满足以下条件:

  1. 通过缩进的来表示语句块的开始和结束。
  2. 缩进必须使用四个空格。

循环

在程序的执行过程中往往需要需要重复执行一段代码以完成相应的计算任务,这时就需要用到循环语句,在 python 中循环语句有两种,第一种是 while 循环,只要条件满足就不断运行,直至条件不满足时退出;第二种是 for...in 循环,依次遍历序列中的每个元素。

有循环就要有退出,再循环中处理条件不满足是退出以外是否还有其他方式可以退出循环呢,这是当然,我们还可以通过 break 语句或 continue 语句来退出循环。break 语句用以中断循环语句,直接执行循环语句块以后的内容。continue 语句用来跳过循环语句块中的剩余语句,开始下一次循环执行。

while 循环

while 语句主要用来执行一段重复的代码,比如我们要计算 100 以内的数的和

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

sum = 0
n = 0

while n < 100:
    sum += n
    n += 1

print(sum)

在循环内部变量 n 不断加 1,直到 n 大于等于 100 时不再满足n < 100的条件 while 循环终止,执行 print 语句。

for 循环

for 循环主要用来迭代序列中的元素,我们来看一个简单的示例

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

执行以上代码可以看到 print 语句依次打印出 names 的元素。

在 while 循环中我计算了100以内的整数的和,我们是否可以用 for 循环来实现相同的内容,答案是肯定的,来看一下代码

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

sum = 0

for x in range(0, 100):
    sum += x

print(sum)

break 和 continue 语句

break语句用来终止循环的执行,continue 语句用来中断当前循环的执行开始下一次循环。我们通过以下代码来看下二者之间的区别

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

sum = 0

for x in range(1, 20):
    if (x == 10):
        break
    print(x)
    sum += x

print('sum = %d' %(sum))

sum = 0

for x in range(1, 20):
    if (x == 10):
        continue
    print(x)
    sum += x

print('sum = %d' %(sum))

执行以上代码,输出结果如下

1
2
3
4
5
6
7
8
9
sum = 45
1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
sum = 180

可以看出在使用 break 语句时,for 循环直接终止执行,并退出循环语句块执行语句块后的 print 语句。当使用 continue 语句时仅仅跳过了x = 10时的情况,for 循环继续执行后面的内容。

本文分享自微信公众号 - keinYe(keinYe_zh)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏爱写Bug

LeetCode 206:反转链表 Reverse Linked List

A linked list can be reversed either iteratively or recursively. Could you imple...

6030
来自专栏相约机器人

在几秒钟内将数千个类似的电子表格文本单元分组

第1,3和5行可能指的是拼写和格式略有偏差的同一个人。在小型数据集中,可以手动清洁细胞。但是在庞大的数据集中呢?如何梳理成千上万的文本条目并将类似的实体分组?

11420
来自专栏sktj

python pyqt5 设置窗口背景

import sys from PyQt5.QtWidgets import QMainWindow, QApplication

88140
来自专栏程序员的知识天地

使用Python将多个png图片转为gif

于是就想把这几张图合成一个gif图片,这样起来应该是不错的, 于是在网上搜索了一些关于python如何将 一些png图片转为gif的程序,自己实现更改如下。

18630
来自专栏Bingo的深度学习杂货店

Leetcode【279、343】

这道题实际上和 Leetcode 【DP、BFS】322. Coin Change 很相似。我们将 <= n 的平方数因子当作硬币种类数,n 当作需要换的零钱,...

16460
来自专栏PHP技术大全

PHP工程师学Python数据类型

继上篇文章比较了PHP与Python语法之后,这周又学习了Python数据类型,准备从通过这篇文章给自己进行一些总结,也给其他读者一些参考。

9200
来自专栏鲜枣课堂

如何选择第一门编程语言?

译者:“互联网+”时代,不懂点计算机、不会点编程是不行的。但是编程语言数目众多,近几年还诞生了Rust、Ceylon等新生语言,到底该如何选择?

23320
来自专栏新智元

Reddit热议:70多个图分类论文+实现大汇总!

今天新智元向大家推荐一个名叫《Awesome Graph Classification》的GitHub项目。

5820
来自专栏汇智网教程

适合钱包应用开发的ERC20代币数据集

Erc20Tokens数据集包含超过1000种主流的以太坊ERC20代币的描述数据清单和图标,可用于钱包等区块链应用的开发,支持使用Java、Python、Ph...

10410
来自专栏sktj

python pyqt5 qss选择器

QDialog QPushButton 后代选择器 QDialog>QPushButton 第一代子

20040

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励