本节主要介绍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. 【BZOJ4566】找相同字符【后缀自动机】

    题意 给定两个字符串,求两个字符串相同子串的方案数. 分析 那么将字符串s1建SAM,然后对于s2的每个前缀,都在SAM中找出来,并且计数就行. 我一开始的做法是,建一个u和len,顺着s2跑SAM, ...

  2. 【POJ1509】Glass Beads 【后缀自动机】

    题意 给出一个字符串,求它的最小表示法. 分析 这个题当然可以用最小表示法做啦!但是我是为了学后缀自动机鸭! 我们把这个字符串长度乘二,然后建SAM,然后在SAM上每次跑最小的那个字母,找出长度为n的 ...

  3. Mysql 使用触发器,把插入的数据在插入到宁一张表里

    CREATE TRIGGER tgr_tablea_insert AFTER //触发器名字 动作在插入数据之后 ON alertinfo //监听哪个表之后触发 FOR INSERT //监听的表的 ...

  4. fastDFS配置及日志查看 所遇到的问题

    FastDFS的配置文件在/usr/local/webserver/fastdfs/etc目录下,其中包括 client.conf    客户端上传配置文件 storage.conf    文件存储服 ...

  5. ServiceStack.redis用法

    using System; using System.Collections.Generic; using ServiceStack.Redis; namespace SysBuild { class ...

  6. javascript中的replace()方法

    javascript中有很多很好用的操作字符串和数组的方法,replace()就是其中一个. 看看基本用法 var str = '1234512345'; var newStr = str.repla ...

  7. Python和JavaScript间代码转换4个工具

    Python 还是 JavaScript?虽然不少朋友还在争论二者目前谁更强势.谁又拥有着更为光明的发展前景,但毫无疑问,二者的竞争在 Web 前端领域已经拥有明确的答案.立足于浏览器平台,如果放弃 ...

  8. fgetc()

    fgetc() 函数从文件指针中读取一个字符.

  9. 电脑破解wifi密码(至少连过1次的才可以)

    电脑破解wifi密码(至少连过1次的才可以) 连过的wifi密码忘记了怎么办? 只要你电脑连过的都能破解. cmd输入以下内容查看电脑连接过的wifi名字. netsh wlan show profi ...

  10. IO引脚复用和映射

    1.端口复用 这些外设包括ADC,DAC以及串口等等. 查找STM32F429数据手册可以找到相关IO口的复用功能引脚. 注意:除ADC和DAC要配置成模拟通道外,其他的所有外设都要配置成复用功能.