Python中的条件判断语句与循环语句用法小结


Posted in Python onMarch 21, 2016

if语句

>>通用格式
if语句一般形式如下:

if <test1>:
 <statements1>
elif <test2>:
 <statements2>
else:
 <statements3>

另外需要注意的是,Python中是没有switch/case语句的

while循环

while语句是Python语言中最通用的迭代结构,简而言之,只要顶端测试一直计算到真值,就会重复执行一个语句块。

>>一般格式

while <test>:
 <statements1>
else:
 <statements2>
>>break,continue,pass和循环else

break

跳出最近所在的循环(跳过整个循环语句)。

continue

跳到最近所在循环的开头处(来到循环的首行)。

pass

什么事也不做,只是空占位符语句。

循环else块

只有当前循环正常离开时才会执行(也就是没有碰到break语句)

>>一般循环格式
加入break和continue语句后,while的一般格式变为:

while <test1>:
 <statements1>
 if <test2>:break
 if <test3>:continue
else:
 <statements2>
>>pass

pass语句是无运算的占位符,当语法需要语句并且还没有任何实用的语句可写时,就可以使用它。

>>循环else
在while语句中加入else和C/C++中的语法不太一样,这里详细说明一下。else后面的代码只有当循环正常结束时才会执行,如果是用break跳出循环的,这部分代码就不会运行,具体看一个求质数的例子:

x = y // 2
while x > 1:
 if y % x == 0:
  print(y,'has factor',x)
  break
 x -= 1
else:
 print(y,'is prime')

再看一个对比的例子,没有使用else的情况:

found=False
while x and not found:
 if (matchx[0]):
  print('Ni')
  found=True
 else:
  x=x[1:]
if not found:
 print('not found')
使用else后的情况:

while x:
 if (match(x[0])):
  print('Ni')
  break
else:
 print('not found')

for循环

for循环在Python中是一个通用的序列迭代器:可以遍历任何有序的序列对象内元素。for语句可以用于字符串、列表、元组、其他内置可迭代对象。

>>一般格式

for <target> in <object>:
 <statements>
else:
 <statements>

此处的else的作用和while语句中的一样。另外需要注意的是,当Python运行for循环时,会逐个将序列对象中的元素赋值给目标,然后为每个元素执行循环体。

编写循环的技巧

内置range函数:返回一系列连续增加的整数,可作为for中的索引
内置zip函数:返回并行元素的元组的列表,可用于在for中遍历数个数列
>>循环计数器:while和range
range

当range函数只有一个参数时,会返回从零算起的整数列表,但其中不包括该参数的值。如果传进两个参数,那第一个参数是上边界,第二个参数是下边界。如果传进三个参数时,第三个参数表示步进值。

range提供了一种简单的方法,重复特定次数的动作:

for i in range(5):
 print(i,'Pythons')

相应的C++代码则是:

int i;
for(i = 0;i < 5;++i)
{
 std::cout<<i<<"Python";
}

>>并行遍历:zip和map
zip会取得一个或多个序列为参数,然后返回元组的列表,将这些序列中的并排的元素配成对。

L1=[1,2,3,4]
L2=[5,6,7,8]
list(zip(L1,L2))

上述代码的执行结果是:

[(1,5),(2,6),(3,7),(4,8)]

当参数的长度不同时,zip会以最短序列的长度为准来截断所得到的元组。

使用zip构造字典:

keys=['spam','eggs','totast']
values=[1,2,5]
D = dict(zip(keys,values))

>>产生偏移和元素:enumerate
enumerate函数一个比较新的内置函数,它能同时返回元素值和偏移值:

s='spam'
for (offset,item) in enumerate(s):
 print(item,'appears at offset',offset)
Python 相关文章推荐
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python中的复制操作及copy模块中的浅拷贝与深拷贝方法
Jul 02 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
Nov 22 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
Oct 14 Python
python检测文件夹变化,并拷贝有更新的文件到对应目录的方法
Oct 17 Python
python代码如何实现余弦相似性计算
Feb 09 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
May 10 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
django教程如何自学
Jul 31 Python
浅谈python锁与死锁问题
Aug 14 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
举例讲解Python中的迭代器、生成器与列表解析用法
Mar 20 #Python
深入解析Python中函数的参数与作用域
Mar 20 #Python
总结Python编程中函数的使用要点
Mar 20 #Python
两个命令把 Vim 打造成 Python IDE的方法
Mar 20 #Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 #Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 #Python
使用Python编写基于DHT协议的BT资源爬虫
Mar 19 #Python
You might like
微信开发之获取JSAPI TICKET
2017/07/07 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
JS验证日期的格式YYYY-mm-dd 具体实现
2013/06/29 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript模拟push
2016/03/06 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
浅谈JavaScript正则表达式-非捕获性分组
2017/03/08 Javascript
原生js实现吸顶效果
2017/03/13 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
Django小白教程之Django用户注册与登录
2016/04/22 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python运维开发之psutil库的使用详解
2018/10/18 Python
pyqt5 QlistView列表显示的实现示例
2020/03/24 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
如果NULL定义成#define NULL((char *)0)难道不就可以向函数传入不加转换的NULL了吗
2012/02/15 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
师范应届生语文教师求职信
2013/10/29 职场文书
航空大学应届生求职信
2013/11/10 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
高中体育教学反思
2014/01/24 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
KTV员工管理制度
2015/08/06 职场文书