本节主要介绍python中循环语句的用法以及其他一些语句exec等,文章后面附有之前的文章;

循环语句

if是值执行一次而循环时在条件满足情况下可以执行相同语句多次;使用循环可以轻松实现序列,词典等的迭代;

while循环:

用来在任何条件为真的情况下重复执行一个代码快:

while i>0:

代码快

其他代码;

演示如下:


>>>i=10 >>> while i>0: ... print("i=",i) ... i-=1 ... i= 10 i= 9 i= 8 i= 7 i= 6 i= 5 i= 4 i= 3 i= 2 i= 1 >>>

for循环:

一般while循环已经满足我们要求了,但是有些时候还得去选择for循环更加有效;比如要为一个集合(序列和其他可迭代对像)的每个元素都执行一个代码快。这时候可以使用for语句;

基本形式:

for <迭代数> in <对象集合>:


>>> name=("peace","rong","nick") >>> for i in name: ... print(i) ... peace rong nick >>>

一些迭代工具

之前讲解字典时有讲过字典的迭代,现在介绍一下常用的迭代工具;

并行迭代

程序可以同时迭代两个序列

内建函数zip函数可以用来进行并行迭代,这里需要注意的是python2返回的是元祖列表,而python3中返回的是可迭代对象


##python2.7
>>> num = zip((1, 2), (3, 4))
>>> num
[(1, 2), (3, 4)]
#返回的是元祖列表; ##python3.4
>>> num=zip((1,2),(3,4))
>>> num
<zip object at 0x7fc5b1e7ef08>
>>>
#返回的是一个对象,并且支持一次遍历。如果需要重新遍历得重新赋值一次; #但是都支持如下的遍历:
>>> for i,j in num:
... print(i,j)
...
1 3
2 4

当然也可以按索引迭代:

有些时候需要访问序列中的对象,同时还想获取当前对象的索引,例如替换字符串可以使用下面的方法:


>>> strings=["peace","rong","nick"] >>> index=0 >>> for string in strings: ... if "on" in string: ... strings[index]="peace" ... index+=1 ... >>> strings ['peace', 'peace', 'nick'] >>>

跳出循环:

1.break语句

与其他自然语言c等没有差别;就是结束循环;

2。continue语句:

同样它只是让当次迭代提前结束:

演示如下:


>>> num=[2,4,5,6,] >>> for i in num: ... if i==5: ... break ... print (i) ... 2 4 >>> for i in num: ... if i==5: ... continue ... print(i) ... 2 4 6 >>>

循环中的else语句:

else子句可以加在循环后,他仅在没有调用break语句时执行:还是刚在的例子:


>>> num=[2,4,5,6] >>> for i in num: ... if i==7: ... break ... else: ... print("not 7") ... not 7 #没有执行break打印7

列表推导式

列表推导式就是利用其他的列表创建新的列表;他的工作方式类似于for循环也很简单;

例如:创建由range(10)中每个x的平方组成;


>>> [x*x for x in range(10)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

同样也可以加条件:比如创建只能被4整除的平方数:


>>> [x*x for x in range(10) if x%4==0] [0, 16, 64] >>>

也可以增加更多的for:


>>> [[x*x,y*y] for x in range(10) for y in range(10) if x%4==0 if y%3==0] [[0, 0], [0, 9], [0, 36], [0, 81], [16, 0], [16, 9], [16, 36], [16, 81], [64, 0], [64, 9], [64, 36], [64, 81]] >>>

pass,del,exec介绍

python3中pass

pass语句就是什么都不做,让程序往下执行:比如可以让if,for,while,等块什么都不做时,我们可以加上pass


>>> for i in range(10): ... File "<stdin>", line 2 ^ IndentationError: expected an indented block >>> for i in range(10): ... pass ... >>> #从上可以看到不加pass就出错了。因为python时不允许空块存在的; >>> x=11 >>> if x>12: ... print("x>12") ... else: ... #等下在写 ... pass ... >>>

python3中del

del删除语句不仅会删除一个对象的引用,也会删除那个名字本省:演示如下


>>> x=1 >>> del x >>> x Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'x' is not defined >>> #x这个名字已经不存在了

但是当两个引用指向同一个对象时,删掉的只是引用名:


#删掉y后x还是指向原来的对象; >>> x=[1,2] >>> y=x >>> y[1]=4 >>> x [1, 4] >>> del y >>> x [1, 4] >>>

python3中exec和eval

有些时候我们可能想要得到动态代码,然后将其作为语句执行或作为表达式计算;

例如执行一个字符串的语句是exec


>>>exec("print(1+3)") 4

当在字符串中定义变量时一定要小心;如果重名了就会发生不必要的错误;可以通过in来解决,起到了放置代码字符串命名空间的字典;

例如:


>>>from math import sin >>>scope={} >>>exec("sqrt=1") in scope >>>sqrt(4) 2 >>>scope['sqrt'] 1

eval是类似于exec的内建函数,只不过是eval会计算表达式,并且返回结果;同样可以使用命名空间;

简单演示如下


>>>eval(input("enter an expression:")) enter an expression:6+8*2 42 ``` ####相关链接:
[python3入门之类](http://rlovep.com/2015/09/23/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E7%B1%BB/)
[python3入门之函数](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%87%BD%E6%95%B0/)
[python3入门之循环](http://rlovep.com/2015/09/06/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%BE%AA%E7%8E%AF/)
[python3之if语句](http://rlovep.com/2015/08/05/python3%E4%B9%8Bif%E8%AF%AD%E5%8F%A5/)
[python3入门之赋值语句介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E8%B5%8B%E5%80%BC%E8%AF%AD%E5%8F%A5%E4%BB%8B%E7%BB%8D/)
[python3入门之print,import,input介绍](http://rlovep.com/2015/08/03/python3%E5%85%A5%E9%97%A8%E4%B9%8Bprint%EF%BC%8Cimport%EF%BC%8Cinput%E4%BB%8B%E7%BB%8D/)
[python3入门之set](http://www.cnblogs.com/onepeace/p/4791578.html)
[python3入门之字典](http://rlovep.com/2015/07/29/python3%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E5%85%B8/)
[python3入门之字符串](http://rlovep.com/2015/07/28/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E7%AC%A6%E4%B8%B2/)
[python3入门之列表和元组](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E5%88%97%E8%A1%A8%E5%92%8C%E5%85%83%E7%BB%84/)
[python3入门之软件安装](http://rlovep.com/2015/07/14/python%E5%85%A5%E9%97%A8%E4%B9%8B%E8%BD%AF%E4%BB%B6%E5%AE%89%E8%A3%85/)
[python3爬虫之入门和正则表达式](http://rlovep.com/2015/09/23/python3%E7%88%AC%E8%99%AB%E4%B9%8B%E5%85%A5%E9%97%A8%E5%92%8C%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/)

python3之循环的更多相关文章

  1. 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空

    今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看. 如下代码,期望的结果是每次从外循环进入内循环,map都从头开 ...

  2. python3,循环,方法练习2

    1:编写for循环,利用索引遍历出每一个字符 msg = 'hello egon 666' msg = 'hello egon 666' i = 0 for i in range(0, len(msg ...

  3. python3 while循环及for循环

    yueer = 18 count = 0 while count < 3: yueerage = int(input('悦儿多大呢:')) if yueerage == yueer: print ...

  4. 笔记||Python3之循环

    循环:          循环概念:在一定条件下,重复做某件事情(代码)          while循环:1 - while 条件表达式: 循环体 2 - 当 条件表达式 == True   才执行 ...

  5. Python3+RobotFramewok 循环判断以及Evaluate用法(三)

    本章主要介绍RF的循环,判断以及关键字Evaluate. 1. for循环 在RF中通过 :FOR 编写循环 :FOR ${i} in range 10 log ${i} @{list} create ...

  6. python3.3while循环

    #while循环与for循环不同的是,while循环的停止条件是自己设置! i=0#初始值while i<=10:#循环条件 print(i)#while循环嵌套if条件 if i==5: pr ...

  7. python3.1for循环及应用

    #给定范围,进行循环for i in range (0,5): print(i) #对序列进行遍历list1=[1,2,3,4,5]for i in list1: print(i+1) #对元组进行遍 ...

  8. python3 while循环

    python不支持n++这样格式,因为python中变量不像c那样事先定义好变量类型,在内存中开辟指定的空间,然后赋值. python中以字符串为例,事先在内存划分空间来存放字符串,然后用变量名来指向 ...

  9. 全国计算机等级考试二级Python语言程序设计考试大纲

    全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...

随机推荐

  1. AJAX(XMLHttpRequest)进行跨域请求方法详解

    AJAX(XMLHttpRequest)进行跨域请求方法详解(三) 2010年01月11日 08:48:00 阅读数:24213 注意:以下代码请在Firefox 3.5.Chrome 3.0.Saf ...

  2. rtx 二次开发,查找所有部门

    1>rtx二次开发操作类 using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  3. Redis清理

    Redis登录: Redis目录: redis-cli.exe -h 127.0.0.1 -p 6739 login:  auth “password”      flushall

  4. IOS操作系统上执行monkey测试

    IOS操作系统上执行monkey测试 IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: htt ...

  5. 对max_allowed_packet这个参数的误解

    之前一篇文章知识对,这个参数一个泛泛的概念,但是并没有理解这个参数的真正意义,现在差不多有那么点儿感觉了,主要的意思是每一条记录是一个包,不可拆分,而且包括blob,text等大字段.

  6. 访问tomcat出现java.lang.IllegalStateException No output folder错误解决方法

    访问tomcat出现java.lang.IllegalStateException: No output folder错误解决方法 问题:tomcat分为安装版和解压缩版,解压缩版如果解压到安装盘,在 ...

  7. A*搜索 概念

    启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标.这样可以省略大量无畏的搜索路径,提到了效率.在启发式搜索中,对位置的估价是十分重要 ...

  8. C# WebService中任务处理线程创建子线程后

    protected void WriteLog(string message) { lock (lockObject) { var file = System.IO.File.AppendText(& ...

  9. SIP简介

    说明:以下内容来着之前下载的一份文档,现将概念部分摘录在BLog,如需要完整文档将放在文件中或留言. SIP简介,第1部分:SIP初探 时间:2006-04-07作者:Emmanuel Proulx浏 ...

  10. Dubbo的配置及启动

    Tomcat+Dubbo安装 1.将tomcat的webapps目录下的所有文件清空,讲Dubbo管理控制台的程序dubbo-admin-2.5.3.war放 到webapps中,并且解压命名为ROO ...