Python流程控制的 for、 while、循环和嵌套词汇continue、break、range


本章 内容 含有 python的流程控制

循环使用语法  For   while

嵌套 语法 Contitune breck


循环语法

Python中 循环语法有 for 、  while

他们都是实现 一个 同一个目的,当有一段程序,我希望反复执行的时候,就会用到 这两个循环。

For语法

For循环是有 循环次数的,取决于 提取元素的序列,按照元素出现的顺序送代任何序列 (列表或者字符串)

比如说 字符串 就是 序列 ,比如 定义好一个 hello,它的序列就是5次, for 循环 理论是来讲都是有 循环次数的,你的数无穷大的话,都是有循环次数的


For语法

For 送代变量 in 序列:

代码块

 

             range()

For  in : 是固定的循环格式

For 表示 要开始循环  迭代变量逐级从 序列里取值

每取一个序列然后 执行代码块,从序列里 值 取浄了 这个循环 就执行结束


For 例子


1
2
 for td in ('power off'):
     print(td)


表达含义

 For 循环 迭代变量 td power off 字符串 序列

把 td 打印 出来 ,看下I 取的什么值

是先 取出 第一个值

然后在取最后一个值 f 没有了,for 循环就这样结束了


运行结果

1
2
3
4
5
6
7
8
9
p
o
w
e
r
  
o
f
f




如果为了 单纯控制 循环次数 ,任何值都可以

任何值 例子

1
2
for w in ('233456'):
     print('今天学校停电')


表达含义

For 送代变量 w   字符串序列 一共为6位

打印什么都是随意的

W 从后面取值的过程只是用来控制循环的次数

从 字符串 序列中取值为6位

运行了6次 打印内容


运行结果

1
2
3
4
5
6
今天学校停电
今天学校停电
今天学校停电
今天学校停电
今天学校停电
今天学校停电





如果只是为了 循环 次数 那么不需要 用其它词的个数序列 来表达了

这里 就会用到 一共 内置函数 range() 会自动生产 一个等差级 数值链表


内置函数range()

 

range例子

1
2
or y in range (5):
     print(y)


表达含义

For 循环 y 这个送代变量调用内置函数range(5)


运行结果

1
2
3
4
5
0
1
2
3
4




range 可以快速 生成一共 被提取的序列

range还可以生成制定区间的值

range 指定数字开始并指定不同的增量(甚至可以是复数;跟布长值一个概念)

 

在有人在迭代取值的时候它会生成值,这种现象 叫做 生成器

range函数可以用于 循环的 时候 想循环几次 ,那就生成几 ,可直接拿来用。


用range 快速生成例子


1
2
for qxq in range (3):
     print('是range函数调用我的=。=')


表达含义

for 循环 qxq 调用 range函数


运行结果

1
2
3
是range函数调用我的=。=
是range函数调用我的=。=
是range函数调用我的=。=



range 还有一种 高级的用法 ,可以指定 生成的范围。


range例子


1
2
for p in range (1,5):
     print(p)


表达含义

For 循环 送代函数 p 内置函数range调用(1,5)

表示起始值为 1 结束值为5,但不包含结束值

这个概念和切片差不多。


运行结果

1
2
3
4
1
2
3
4




range 运用 步长值 例子


1
2
for p in range (1,10,2):
     print(p)


表达含义

For 循环 p 调用 range 语句(1,10,2)起始值为1 结束值为2,每隔两个取个值

和 切片的概念差不多,步长值为2,每隔两个取一个值。


运行结果

1
2
3
4
5
1
3
5
7
9



概括

For 既可以从 序列当中取出值 ,也可以打印 也可以依据序列里面值的个数 ,执行多少次循环,从序列当中取值的过程 叫做 遍历 for循环通常都是有次数的循环,循环过程当中都是从序列中取值,可以加以利用,也可以不用。

如果不需要序列里面值的时候一般都用range,如果用到里面值了,可以取出来下面接着用。





While语法

While语法

While 条件:

       代码块



一般需要 一个 一直 执行的程序,直到用户 要求退出了 才退出的 程序,这个时候就要用到wihle 循环。

While 循环 有点像 把 for循环 if 循环 做了一个集合

 

根据一个条件来判断 是否继续 循环

 

条件成立就执行

条件不成立才会结束

While循环有个问题如果条件一直无法不成立就会成为一个死循环。



While 例子

一个while 基本方式


1
2
3
a = 'b'
while a != '金牌讲师 大司马':
    a = input ('我就不喊你哼╭(╯^╰)╮我是铁头娃:')


表达含义

a = b 为了让 a 语句成立

while判断 条件 a 不等于 字符串 内容 金牌讲师大司马 成立。就会一直执行

执行代码块内容 a = input('内容 自定义') 用input 是为了跟用户产生一个交互

input 还带 打印 功能 只要用户输入的一直成立,就会一直执行,直到不成立



运行结果

1
2
3
4
5
我就不喊你哼╭(╯^╰)╮我是铁头娃:我头铁
我就不喊你哼╭(╯^╰)╮我是铁头娃:皮的嘛,就不谈了
我就不喊你哼╭(╯^╰)╮我是铁头娃:我错了
我就不喊你哼╭(╯^╰)╮我是铁头娃:金牌讲师 大司马
>>>

 



如果你想执行死循环的话

那就执行while = 1

如果不想 执行 死循环的话 ,就必须在while循环当中 设置某种机制然后可以解除while循环、

比如break等类似跳出 语句循环的 才会终止


死循环例子


1
2
while 1 :
     a = input ('这是个死循环哦~~~~~:')


表达含义

While 1代表一个 常量表达式,它永远不会= 0,所以循环会一直执行下去。

这里 a 不管输入什么 都判断为真


运行结果

1
2
3
4
5
6
这是个死循环哦~~~~~:ha
这是个死循环哦~~~~~:我要出去
这是个死循环哦~~~~~:德玛西亚万岁
这是个死循环哦~~~~~:一切都是为了荣耀
这是个死循环哦~~~~~:麻利麻利哄
这是个死循环哦~~~~~:我绝望了




嵌套 语句 Contitune breck

嵌套和循环控制 都是跟  if for while相关的知识。


嵌套可以实现千变万化的 功能 ,可能你只用 if for while  可能无法达成 某个功能的时候。或者 发现  某个 if for 循环这个时候 ,要根据 某个条件 完成某件 事情,这个时候 就要用到 嵌套了。

 

嵌套浅意  ==  在一个语法结构 当中 涵盖了 另一个 语法结构,可以任意组合。


在嵌套环境下,要注意 语句缩进   因为完全是根据缩进来 选择 优先 执行的

在里面 判断是否 属于 for 循环的 还是 if的,完全是由缩进来决定了,

在嵌套环境下 不只是 判断4个空格了。但是主题语句结构还是4个空格,

跟你当前的 语句是有关系的


 

嵌套

 

For 送代变量 in 序列:

If 条件

    代码块

代码块

 

还是那句话,语法结构 本生 并不复杂, 复杂的是人的 想法。

 

for 嵌套 if 的例子


1
2
3
for i in range(18): #for 循环 i in带入 并且用 内置函数 range 生成一个等差级数链表 0 ~18 
    print(i)        #打印出i
    if i > 5:       # if 判断如果 i > 5

 

表达含义

先执行循环 for的 range 内置函数等差数链表0~18,

从0开始

打印出 i

If判断 一直到 6 成立了。才会执行 if里面的语句。i * 10

If 结束后 继续执行for循环 未执行完的语句。


运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0
1
2
3
4
5
6
60
7
70
8
80
9
90
10
100
11
110
12
120
13
130
14
140
15
150
16
160
17
170

 

 


语法层次的例子


1
2
3
4
for i in range (18):
    if i > 5 :
        print(i*10)
    print(i)


表达含义

For 的打印 放在最后

先不成立 会一直打印 for 循环的语句

成立后 先 执行 if 语句 在执行 for循环的打印


运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
0
1
2
3
4
5
60
6
70
7
80
8
90
9
100
10
110
11
120
12
130
13
140
14
150
15
160
16
170
17







下面 介绍的 是基本的 嵌套,嵌套有很多功能,具体 做什么 都是根据实际的需求


介绍 三个 嵌套控制 里面的 重要 组成部分

共有 控制 循环 嵌套

如果 要把 嵌套代码 修改 ,让它 在 第 5次或者,第6次的时候 停止循环,跳出循环,

不执行循环嵌套, 这个时候 就要 用到 控制 循环。

 


简要说明 下 continue 和 breck 的使用 方法 简介

Continue作用: 用来跳出下面余下的代码,紧接着执行下一次迭代取值。从它往下都不执行

Bareck的作用: 跳出当前循环 结束当前整个循环。



 continue 例子


1
2
3
4
5
for i in range (10):
    if i == 5 :
        print(i*10)
        continue
    print (i)


表达简易

For 判断 i 用内置函数 range 生产一个 等差级数列表, 打印0~10

If 判断 i如果 i完全等于 5 这个整数的时候

If判断成立 打印 i *10

执行if语句的 Continue 不会结束循环,跳过本次循环

被上面的 continue 跳过了 本次 循环 就不会打印5了


运行结果

1
2
3
4
5
6
7
8
9
10
11
0
1
2
3
4
50
5
6
7
8
9




Break的作用: 跳出当前循环 结束当前整个循环。


break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。

break语句用在whilefor循环中。

如果您使用嵌套循环,break语句将停止执行最深层的循环,并开始执行下一行代码。


Breck例子


1
2
3
4
5
6
while 1 :
    a = input ('执行一个循环然后引用baeak停止:')
    
  
    if  a == 'no':
        break

 

表达简易

 while 1   表达一个 常量表达式,它永久不会 = 0,所以循环 会一直 执行下去。除非设置 break 等类似 跳出 语句循环的 才会终止

 

a  = 输入 一句话 input 输入 具有打印 作用

 

if 判断 a 如果全等于 字符串 no

 

执行 break 跳出 当前循环 结束当前整个循环


运行结果

1
2
3
4
执行一个循环然后引用baeak停止:23333
执行一个循环然后引用baeak停止:emmmm
执行一个循环然后引用baeak停止:no
>>>



混合嵌套例子


1
2
3
4
5
6
7
8
9
for a in range (15):
    if a == 5:
        print(a-2)
        continue
    
    if a == 13 :
        print(a)
        break
print (a)


表达含义

For 循环 a 送代变量 调用 内置函数range 送代变量

先if 判断 a 如果完全等于 5

成立 执行代码块内容

等于 5的 时候 -2

Continue 跳出余下代码块 执行下一次循环

if 判断 a 如果完全 等于 13

成立 执行 代码块 内容 打印 这个值

Break 结束当前整个循环


运行结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
1
2
3
4
3
6
7
8
9
10
11
12
13




有时候 会 需要 人为的 死循环,给个跳出当前的循环的值


死循环例子


1
2
3
4
while 1:
    a = input ('我就是大哥:')
    if a == '大哥救救我吧':
        break

表达含义

while 1   表达一个 常量表达式,它永久不会 = 0,所以循环 会一直 执行下去。除非设置 break 等类似 跳出 语句循环的 才会终止

a = 输入(内容自定义)这里是为 跟用户交互

if 判断 a 如果什么 用户 输入了 大哥救救我吧

执行代码块内容 break 结束当前整个循环


运行结果

1
2
3
4
我就是大哥:救命
我就是大哥:大哥
我就是大哥:我跟你了
我就是大哥:大哥救救我吧


2017年 12月1号 王宇林

 

本文转自  新网学会51CTO博客,原文链接:http://blog.51cto.com/xwxhvip/2046593 ,如需转载请自行联系原作者

上一篇:ORACLE绑定变量隐式转换导致性能问题


下一篇:如何管理越来越多的 operator?OLM 给你答案