Python 循环语句之 while,for语句详解


Posted in Python onApril 23, 2018

循环语句(有两种):

while 语句
for   语句

while 语句:

问题:输入一个整数n,让程序输出n行的:

hello 1
hello 2
.......
hell n

while 语句:

作用:根据一定条件,重复的执行一条语句或多条语句

语法:

while 真值表达式:

语句块1......
else:
语句块2......

说明:

1,先执行真值表达式,测试布尔值为True或False
2,如果真值表达式的测试值为True,侧执行语句1,然后再返回到第一步重复进行测试
3,如果真值表达式的测试值为False。则执行else子句中的语句块2,然后结束此while语句的执行,如果没有else子句,则直接结束while语句的执行。
4,else子句部分可以省略(同if语句类似)。

如:打印10行的hello

i = 1      #创建并初始化一个控制while循环的变量i
while i <= 10:
        print("hello")   #此处执行10次
        i += 1
#运行结果:[root@localhost data]# ./test.py
hello
hello
hello
hello
hello
hello
hello
hello
hello
hello

while语句的注意事项:

1,要控制循环的真值表达式的值来防止死循环。
2,通常用真值表达式中的循环变量来控制循环条件。
3,通常在循环语句块?刃枰?谋溲?防纯刂蒲?返拇问?捅淞康淖呦?/p>

while循环的嵌套:

while语句本身是语句,和其它的语句一样可以嵌套在其它复合语句中(如:if语句 ,while语句, for语句 ....内部)

while语句嵌套示意:

while 真值表达式:
.......
while 真值表达式2:
......
else:
........
else:
........
如:

输入一个数,打印指定宽度的正方形:
如:输入:5

n = int(input("输入一个数:"))
j = 1
while j <= n:
    i = 1
    while i <= n:
        print(i,end=' ')
        i += 1
    print()
    j += 1
######运行结果:
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5

break 语句:

作用:用于循环语句(while,for语句)中,用来终止当前循环语句的执行。

说明:
1,当break语句执行后,此循环语句break之后的语句将不再执行
2,break语句通常和if语句组合使用。
3,break语句终止循环时,循环语句的else子句将不会被执行
4,break语句只能终止当前循环的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
5,break语句只能在循环语句(while或for语句)内部使用
如:

i = 1
while i < 10:
        print("循环开始i=",i)
        if i == 5:      #当i = 5时结束循环
                break
        i += 1
#运行结果:[root@localhost data]# ./test.py
循环开始i= 1
循环开始i= 2
循环开始i= 3
循环开始i= 4
循环开始i= 5

死循环 death loop:

1,死循环是指循环条件一直成立的循环
2,死循环通常用break语句来终止循环
3,死循环的else子句永远不会执行
如:用input输入一些文字,当输入三个*号时,代表输入结束,否则一直循环。

s = ""
while True:
        a = input("请输入文字(***结束)")
        if a == '***':
                break
        s += a + '\n'
##运行结果:[root@localhost data]# ./test.py
请输入文字(***结束)a
请输入文字(***结束)b
请输入文字(***结束)v
请输入文字(***结束)c
请输入文字(***结束)d
请输入文字(***结束)***   #输入三个*** 结束,退出循环
[root@localhost data]#

二:for 语句(循环语句)

作用:用来遍历可迭代对象的数据元素

语法:
for 变量列表 in 可迭代对象:

语句块1......
else:
语句块2......

语法说明:

1,可迭代对象每次提供一个元素依次赋值给变量列表中的变量,赋值完毕后执行语句块1,重复执行此步骤,
2,当可迭代对象不能够提供数据时,执行else子句部分的语句块2,然后退出循环。

如:

s = 'ABCDE'
for x in s:
        print(x)
else:  
        print("继续执行此条")    #迭代对象不能够提供数据时,继续执行else中的这条
##运行结果:[root@localhost data]# ./test.py
A
B
C
D
E
继续执行此条

3,else子句部分可以省略(同while语句类似)

4,当在语句内部用break终止循环时,else子句部分语句块2不会执行,
             可迭代对象时指能依次获取数据元素的对象

四:for循环嵌套:

和while循环嵌套一样

如:

for x in "ABC":
        for y in "123":
                print(x + y)
##运行结果:
[root@localhost data]# ./test.py
A1
A2
A3
B1
B2
B3
C1
C2
C3

经典否循环嵌套示例

               用for循环嵌套打印如下图形:
(输入一个数n(10以内)代表矩形的宽度和高度)
如: 输入:5

1 2 3 4 5
  2 3 4 5 6
  3 4 5 6 7
  4 5 6 7 8
  5 6 7 8 9

n = int(input("输入一个数:"))
for i in range(1, n +1):
    for j in range(i, i + n):
        print(j,end=' ')
    else:
        print()
        
#运行结果:
[root@localhost data]# ./test.py
输入一个数:5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9

五:continue 语句:

作用:用于循环语句(while,for语句)中,不再执行本次循环??ontinue之后的语句,重新开始一次新循环。

说明:

1,在while语句中执行continue语句,将直接跳转到while语句的真值表达式重新判断循环条件。
2,在for语句中执行continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次进行循环。
如:

for i in range(5):
        if i == 3:    #当i 等于3时,跳过打印,进行下一次循环。
                continue
        print(i)
#运行结果      
[root@localhost data]# ./test.py
0
1
2
4

示例:
写一个程序,求1-100之间所不能被5,7,11整除的数的和。

s = 0
for i in range(1,101):
    if (i % 5) == 0 or (i % 7) == 0 or (i % 11) == 0:
        continue
    s += i
print(s)
#运行结果:
[root@localhost data]# ./test.py
3007

六:range 函数:

作用:用来创建一个生成一系类整数的可迭代对象(也叫整数序列生成器。)
调用格式:
range(stop)
从零开始,每次生成一个整数后加1,操作,直到stop为止(不包含stop)
range(start,stop[,step])从start开始,每次生成一个整数后移动step,直到stop为止(不包含stop,且step可以为负数。)
          注:如果直接打印range(5)或(print(range(5)))的时候会得到range(5),而不是一个列表,这是因为节省空间,防止过大的列表产生。
    如:

>>> range(5)    
range(0, 5)
>>>
       如果想要到交互模式下得到列表,可以加入list到前面来进行,如下:
示例:

>>> list(range(5))     
[0, 1, 2, 3, 4]
>>> list(range(1,6))   
[1, 2, 3, 4, 5]
>>> list(range(10,0,-1))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> list(range(1,10,2))
[1, 3, 5, 7, 9]
>>> list(range(5,0,-2))
[5, 3, 1]
>>>

Python 相关文章推荐
python发布模块的步骤分享
Feb 21 Python
Python打包可执行文件的方法详解
Sep 19 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
浅谈pyqt5在QMainWindow中布局的问题
Jun 21 Python
Python StringIO如何在内存中读写str
Jan 07 Python
Python模块/包/库安装的六种方法及区别
Feb 24 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
python实现四人制扑克牌游戏
Apr 22 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
Python基于模块Paramiko实现SSHv2协议
Apr 28 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
Oct 02 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 #Python
python批量替换多文件字符串问题详解
Apr 22 #Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 #Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 #Python
Python解决八皇后问题示例
Apr 22 #Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 #Python
对python中raw_input()和input()的用法详解
Apr 22 #Python
You might like
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
深入理解PHP中的count函数
2016/05/31 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
2019/05/29 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
EasyUI实现第二层弹出框的方法
2015/03/01 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
three.js实现圆柱体
2018/12/30 Javascript
详解node登录接口之密码错误限制次数(含代码)
2019/10/25 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
浅谈机器学习需要的了解的十大算法
2017/12/15 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
2020/06/15 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
关于读书的演讲稿1000字
2014/08/27 职场文书
幼儿园圣诞节活动总结
2015/05/06 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
详解Flutter和Dart取消Future的三种方法
2022/04/07 Java/Android