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 相关文章推荐
Python多进程编程技术实例分析
Sep 16 Python
使用pdb模块调试Python程序实例
Jun 02 Python
Python爬取京东的商品分类与链接
Aug 26 Python
Django自定义用户认证示例详解
Mar 14 Python
Python 3.7新功能之dataclass装饰器详解
Apr 21 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
PyTorch实现ResNet50、ResNet101和ResNet152示例
Jan 14 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
python开发入门——set的使用
Sep 03 Python
Python中的None与 NULL(即空字符)的区别详解
Sep 24 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 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
造势之举?韩国总统候选人发布《星际争霸》地图
2017/04/22 星际争霸
PHP mkdir()定义和用法
2009/01/14 PHP
一个PHP的QRcode类与大家分享
2011/11/13 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
JS实现支持多选的遍历下拉列表代码
2015/08/20 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
vue 中的动态传参和query传参操作
2020/11/09 Javascript
Python验证码识别的方法
2015/07/10 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
python怎么判断模块安装完成
2020/06/19 Python
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
.NET面试问题集
2015/12/08 面试题
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
Shell脚本如何向终端输出信息
2014/04/25 面试题
J2EE面试题集锦(附答案)
2013/08/16 面试题
本科生职业生涯规划书范文
2014/01/21 职场文书
小学语文教学反思
2014/02/10 职场文书
领导干部民主生活会自我剖析材料范文
2014/09/20 职场文书
大学学习委员竞选稿
2015/11/20 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
总结一些Java常用的加密算法
2021/06/11 Java/Android