1、概述
流程控制的意思是,当你在做出一个确定时,会依据当时的条件来做判断,如果A条件存在,则我们会做出B决定;否则,我们会做出C决定。举个周六要出去玩的例子,流程可能如下:
- 在下雨吗?
- 如果没有下雨则直接出去。
- 如果下雨了呢?则跳转到第4步
- 如果家里有伞,则可以无惧风雨直接出去。
- 如果家里没有伞呢?则需跳转到第6步。
- 现在需要等待一会儿,等雨停了。
- 雨停了吗?
- 如果没有停,则跳转到第7步,继续等待。
- 如果停了,则可以出去玩了。
用流程图可能更加清晰一些,如下图:
这篇文章我们就用python代码来实现上图中的这个流程
2、boolean数据类型
图中的yes和no是我们人的语言,那在python中,怎么来表示yes和no呢?Python中专门有一个数据类型来表示一个条件的真假,这种数据类型叫做Boolean,他权有两个值True和False,yes用True来表示,no用False来表示。
3、关系操作符
什么叫关系操作符?顾名思义,就是比较两个值,关系操作符就像小学学过的5 > 3一样,其中的>在python中就叫做关系操作符,关系操作符主要用于两个数据的比较,比较的结果为boolean值,图中的黄色棱形就会存在比较,python中常用的比较操作符如下:
比较操作符 |
说明 |
事例 |
== |
两个等号,用于比较两个值是否相等 |
5 == 5,结果为True 3 == 4,结果为False |
!= |
不相等 |
5 != 5,结果为False 3 != 4,结果为True |
< |
小于 |
5 < 5,结果为False 3 < 4,结果为True |
> |
大于 |
5 > 5,结果为False 3 < 4,结果为True |
<= |
小于或者等于,只要有一个条件成立则为True,否则为False |
5 <= 5,结果为True 4 <= 3,结果为False |
>= |
大于或者等于,只要有一个条件成立则为True,否则为False |
5 >= 5,结果为True 3 >= 4,结果为False |
可以交互式shell中实践一下,感受一下效果
注意:
- 3和’3’是不相等的,因为3是int类型,’3’是string类型
- 2==和=是不一样的,==是比较操作符,而=是赋值操作符
4、boolean操作符
Boolean操作符主要作用于多个比较条件,比如5 ==5 和 3 == 4的结果,用代码来表示,应该是5 == 5 and 3 ==4(把和替换成了and),5 == 5结果为True,3 == 4结果为False,那么实际上是计算True and False,结果为False,计算过程如下:
总共有3个boolean操作符,分别是and,or,not
and: 所有条件都为True,结果才为True;否则为False,例如: 5 ==5 and 3 == 4结果为False
or: 任意条件为True,则结果为True;所有条件为False,结果才为False,例如:5 ==5 or 3 ==4结果为True
not: 取反错误,若条件为True,则结果为False;若条件为False,则结果为True,例如:not (5 ==5)结果为False,not (3 == 4)结果这True
总结如下:
表达式 |
结果 |
说明 |
True and True |
True |
都是True,所以结果肯定是True |
True and False |
False |
and操作中只要有False,那么结果为False |
False and True |
False |
and操作中只要有False,那么结果为False |
False and False |
False |
and操作中只要有False,那么结果为False |
True or True |
True |
or操作中只要有True,那么结果就为True |
True or False |
True |
or操作中只要有True,那么结果就为True |
False or True |
True |
or操作中只要有True,那么结果就为True |
False or False |
False |
Or操作所有条件为False,结果才为False |
not True |
False |
对True取反,True的反是False,所以结果为False |
not False |
True |
对False取反,False的反是True,所以结果为True |
5、代码缩进块
以前的程序都是上自上而下的执行,每行代码都是顶着左侧写,也就是他们都在每一行开通时都有0个空格。代码缩进就是指相同级别的代码从左算起有相同的空格数,在A条件发生的前提下做事情都有要相同的缩进(空格),在A条件不成立的条件下做的事情也要有相同的缩进(空格),以今天下雨做的事来举例:
假如今天下雨:
先在家睡个午觉
然后起床吃饭
然后看书学习
否则假如是大雾:
先去青城山看雾
然后回家
否则:
先去图书馆
再和女朋友一起去公园
然后回家
今天下雨所做的三件事情(代码块)都处于同一级别,所以都有相同的4个缩进;今天是大雾所做的2件事情(代码块)也处于同一级别,所以他们有相同的4个缩进;今天不下雨所做的3件事情(代码块)也处于同一级别,所以他们也有相同的缩进。Python中的缩进一般是4个空格
4、if条件语句
if语句的格式为:
if 条件:
做一些事情
elif 条件:
做一些事情
elif 条件:
做一些事情
else:
做一些事情
条件只能是true或者false,if、elif、else只要有一个条件为true,这个条件下的代码块执行后,其他条件下的代码块就不会被执行了。以前面下雨的为例子,如果今天下雨,那么会执行第一个语句下的代码块,即先在家睡个午觉、然后起床吃饭、然后看书学习,否则假如是大雾和否则下的代码块就不会被执行了。
5、while循环
while循环的格式为:
while 条件1:
if 条件2:
continue
其他语句1
if 条件3:
break
其他语句2
其他语句3
条件1只能为true或者false,只要条件1一直为true,那么就会执行while后面的代码块,if语句是可选的,只是为了引入continue和break语句。
continue: 略过continue后的所有语句(不会执行其他语句1、if条件3后的所有语句),重新执行while语句,也就是从while处开始再次执行。
break:跳出while循环,执行while循环后的语句,上例中是执行其他语句3
举一个询问名字和密码的例子,代码如下:
while True:
print('你是谁?')
name = input()
if name != 'xiaoming':
continue
print('您好,xiaoming')
password = input()
if password == '12345':
break
print('授权成功')
把上面的代码输入到mu编辑器中去感受一下,为便于理解,可以对照下面的流程图进行理解:
6、for循环
for循环的格式为:
for i in range(start,stop,step):
print(i)
其中:range(start,stop,step)是一个函数调用,产生一系列的整数,这个整数的起点是start,终点是stop(不包括stop),间隔是step,i用来循环range()产生的一系列整数,然后print(i)进行输出,例如:for i in range(1,7,2):print(i),会输出1、3、5
7、module
一个module是一系列函数的集合,这些module都是python自带的,已经写好的,常见的模块有math(做数据计算的)、os(操作系统相关的)、sys(程序运行环境相关的)、randoom(随机数相关的)
那如何使用这些模块里的函数呢?有两种方式(以radnom为例)
- import random,random.randint(0,10) randint是模块random的一个函数,用于输出这个范围内的整数
- from random import * 或者from random import randint,这样子就不用加random前缀了,但是第一种的可读性更好,所以建议import module name
8、综合实例
根据用户的输入判断是不是应该退出
#函数功能:判断用户输入的是不是exit,如果是,则退出程序
import sys
while True:
print('Type exit to exit.')
response = input()
if response == 'exit': # 用户输入了exit
sys.exit() #exit()是sys模块的一个函数,sys.exit()的意思是退出程序
print('You typed ' + response + '.')
猜数字游戏
# 猜程序随机生成的数字
import random
secretNumber = random.randint(1, 20) #随机生成一个1到20之间的整数
print('I am thinking of a number between 1 and 20.')
# 猜6次
for guessesTaken in range(1, 7):
print('Take a guess.')
guess = int(input()) #输入一个你猜的数字
if guess < secretNumber: # 输入的数字小于随机生成的数字
print('Your guess is too low.')
elif guess > secretNumber:
print('Your guess is too high.') #输入的数字大于随机生成的数字
else: #猜中了
break # 猜中了则退出循环
if guess == secretNumber: #猜中了
print('Good job! You guessed my number in ' + str(guessesTaken) + 'guesses!')
else: # 猜了6次都没有猜中
print('Nope. The number I was thinking of was ' + str(secretNumber))
把这些实例放在mu编辑中实际运行调试一下,更能融会贯通。
原创文章,转载请注明出处:http://www.nwumba.cn/article/7/