python 控制_Python 控制结构

Python

让Python成为语言研究的利器

Xu & Yang

PhoneticSan

9317d481a32f910e1689b75c99d9b9f6.png

学习参考

Python for Linguists

Natural Language Processing with Python

Introducing Python

Learning Python

Python教程(廖雪峰)

··· ···

Recap

  1. Python可控制的数字型数据包括整数型、浮点型和复数型,其中浮点型即为小数。

  2. 与其他程序语言类似,字符型数据需要放在单引号或双引号之中,也可以通过这种方式把数字(默认数字型)变为字符串。

  3. 列表是一种单一有序结构,使用append( )函数可以添加元素,insert( )函数插入元素,pop( )函数可以删除元素。

  4. 元组(tuple)和列表类似,最大的不同之处在于元组是不可更改的,因此安全性较之列表更高。

  5. 字典(dictionary)是最常见的类型,基本构成是{key:value},可以通过key进行索引。

d5e965e206b3f3a0558ed2a734b432c0.png

Python:

https://www.python.org/

IDE: Pycharm、VSCode、Anaconda

https://www.jetbrains.com/pycharm/

https://code.visualstudio.com/

https://www.anaconda.com/

文本编辑器:Sublime、Atom

https://www.sublimetext.com  /

https://atom.io/

之前我们介绍了各种数据类型,都是比较简单的输入,把Python当作了一个“高级计算器”而已。今天我们介绍程序语言中的控制结构,也是大部分语言通用的几个控制结构:条件结构和循环结构,前者使用if条件句,后者使用for循环或while循环语句,下面我们一一说明。

Python

Linguistics

1

 if条件结构

条件结构又被称为分支结构,可以通过判断实现不同的结果。在高中数学课中,我们学到的流程图里,就有这样的结构。在Python中,条件结构的基本构造是if...else...(两个条件),如果有多个条件,那么结构为if...elif...elif...else...,其中的elif可以不限添加。条件为真,执行结果输出;条件为假,则执行else/elif下的结果或条件,进行输出或判断,以此类推。需要注意的是,if/elif写完条件后,以及else之后,务必加冒号。在一个if条件结构下可以继续嵌套新的if条件句。

2acc47d9122031049d4ac0ecf51675eb.png

条件结构图示

我们以一个简单的例子开始。首先我们设置一个变量x,赋一个字符值hat,判断第一个字母是不是a。如果是,输出个congratulations;如果不是,输出其他内容。需要时刻注意,Python计数是从0开始,因此判断x的位置应当是x[0]而不是x[1]。因为第一个字母不是a,所以它走的是第二条路。如果改成其他单词(比如at),那么它判断为真,则直接输出结果。可以看到,if条件结构是只要满足条件,就会输出结果,而不会继续走余下的其他语句。

496730b585d3a5ce000ad25af3e89fd4.png

一个简单的条件结构

在大多数情况下,我们会希望用户自己输入相关内容,然后对条件进行判断,进一步执行代码。解决办法很简单,使用input( )函数进行设定即可。该函数默认输入的是字符型数据,如果需要变为其他类型的数据,比如整数型,则需要再调用int( )函数多写一句即可。

f9add7b018ee06fe1e737531b1ea07ef.png

让用户输入数值进行判断

最后,我们为大家提供条件判断常用到的几种运算符。时刻需要注意的是,if和else/elif下的语句需要缩进。在绝大多数的编程软件中会默认缩进,如果没有,使用tab键缩进即可。

0c9a9f0ba2f227ac7f16d4af7d3d5a69.png

条件结构中的运算符

Python

Linguistics

2

 for循环结构

循环结构的实现方式有两个,我们首先介绍for循环。for语句的基本构成很简单,即for...in...,在循环中写上需要执行的语句。可以看到,for循环适用于循环次数已知的情况

ee723eb42b56e434b47a3a5bd0ddc352.png

for循环结构示意

同样,我们以一个简单的循环的循环结构开始。假设我想计100以内数值和,那么循环次数(循环的开始和结束)都是已知的,因此使用for循环可以简单实现。同样地,首先设置好变量,100以内的表达方式可以使用range( )函数。时刻注意Python计算是从0开始,因此range( )函数中应为101,代码如下所示:

a = 0for i in range(101):    a = a + iprint(a)

在执行过程中,计算机读到a的赋值为0,进入循环,首先判断i是不是还在100以内(这里i表示循环次数)。在,执行a=0+0=0(第一个数为0),继续进行循环,直到i的数值超过了100,则跳出循环,输出结果5050。

eca05fb2818adcd0e9697962da3a6a2b.png

for循环结果输出

下面我们把if结构和for结构结合起来试一试。假设我想要实现一个程序,检索输入的单词中存在几个元音。在开始前,我们建议先试着画一画流程图,尝试以计算机思维去考虑。

首先要做的,就是定义“元音”(变量),即告诉计算机哪些是元音,这样它才能进行判断有几个元音。比如,我定义元音包括aeiou五个字母,只要有这五个中的一个,就算一次。接着,用户输入的单词需要放在一个变量名里。紧接着需要定义循环次数,以便循环结构知道到第几次就该跳出来,而这个循环次数与单词长度有关。在这个循环结构里,计算机还要进行判断,判断是不是元音。怎么判断?因为我们最开始定义了,因此只需要判断这个位置的字母是不是最开始定义的“元音”这一变量中的元素即可。如果画出流程图,那么大概如下所示。

ea0cc5b964ccc5494289a47f37aa1376.png

流程图示意

接下来,就是把这一步步的思路改写为程序语言,具体代码如下,每一句都附有了相关注释:

vowels = 'aeiou'                                # 定义元音vowelsCount = 0                                 # 定义元音初始个数word = input('Please input your word: ')        # 存放用户输入的单词for letter in word:                             # 循环次数以word为准    if letter in vowels:                        # 判断字母是否在元音集合中        vowelsCount += 1print(vowelsCount)

其中,+=表示加上后面的数值后再重新赋值给vowelsCount。运行后,可以发现下面的控制面板出现了让用户进行输入的提示。比如输入单词linguistics,它通过运行程序输出了相应的结果。程序没有报错,因此我们的这个小程序成功了。

58137d70bf342fc65c56be61a176645c.png

计算元音个数的程序

R Project

Linguistics

3

 while循环结构

上面我们提到,for循环结构的使用前提是循环次数已知。而在很多情况下,循环多少次,什么时候开始什么时候结束,这是一个未知数。因此,while循环结构的优势便体现了出来。这两种循环结构本质上是一样的,它们的效力也是相当的。while循环语句的基本结构为while...,然后执行相关语句。

由于while语句的基本原理与for相类似,因此我们直接以刚刚的程序语言为例,把其中的for语句改为while语句进行实验。前面的变量定义肯定不变,变化的地方就在于判断循环的语句上。for循环是遍历循环次数,当大于单词长度后跳出循环(break)。while循环则是只要循环次数小于单词长度,我就一直循环下去。那么,我们的代码可以进行如下的变化:

vowels = 'aeiou'                            # 定义元音集合word = input('Please input your word: ')    # 输入单词counter = 0                                 # 设置循环次数vowelsCount = 0                             # 设置元音计数初始值while counter < len(word):                  # 开始while循环    if word[counter] in vowels:             # 进行条件判断        vowelsCount += 1                    # 元音计数        counter += 1                        # 循环次数增加print(vowelsCount)                          # 输出结果

不难发现,在while循环中,我们要定义好循环次数的初始值,从而让计算机知道什么时候是在“允许的最大循环次数”之内。在判断中,我们从word这个变量中提取对应位置的字母进行判断,最终输出结果是一样的。

bf4316524a228ef0a2ce88c8929e2532.png

while循环结构

本期主要介绍了两种控制结构:条件结构和循环结构。在这两种结构中,还有许多其他的可操作内容,这在之后的推送中会一一介绍。在熟悉了这两种结构后,你就可以开始写一些比较简单的程序了。

—END—

排版:Xu & Yang

8973f23560ea9c71e759fce2eee911ec.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值