在其他程序语言中,else 似乎只是与 if 关键字有缘分。而与其他的关键字没有联系,不能搭配使用,而在python中,else 除了与 if 匹配外, 还可以与for、while/ try等关键字匹配使用。

for

  只有当 for 循环进行完毕时,也就是说 for 循环中没有关键字 break 来终止循环,else 中的代码才能执行,在java 、C++等语言中,我们通常通过一个标示来判断循环有没有执行完,而在Python中,通过 else 代码块可以很简单的实现这个功能,如寻找一个字符串是否在列表中,java 写法如下:

find = ‘Python’

array = ['Beijing', 'Shanghai', 'Wuhan']

found = False

for arr in array:

    if find == arr:

        print('Found')

        found = True

        break

if not found:

    print('Not Found!')

而使用 else 块,则会使得代码更简洁,这里一定要注意,else 需要与 for关键字对齐:

find = 'java'

array = ['I', 'LOVE', 'YOU']

for arr in array:

    if find == arr:

    print 'Found'

    break

elsle:  # else执行  表示没有break语句没有终止循环

    print('Not Found!!!')

while

  只有当while 循环运行完毕时, 也就是说 while 的循环条件为假而退出,没有关键字 break 来终止循环 while 循环,else 中的代码快才能够运行 这与 for 循环中 else 的用法类似的,如寻找一个字符串是否在一个列表中, java 写法如下:

find = 'Python'

array = ['I', 'LOVE', 'yOU']

found = False

i = 

while i < len(array):

    if find == array[i]:

        print('Found')

        found = True

        break

    i += 

if not found:

    print('Not found!!!')

而使用 else 块,则会使得diamante更简洁:

find = 'java'

array = ['I', 'LOVE', 'YOU']

i = 

while i < len(array):

     if find == array[i]:

        print('Found!')

        break

    i += 

else:

    print('Not found!!')

try

只有当 try 快中的代码没有捕获到任何一种异常时,才执行 else 块中代码,其中的语法结构为:

try:

    <Code1>

except:

    <Code2>

else;

    <Code3>

当Code1代码执行的过程中捕获到 name 类型的异常时,就会执行 Code2 代码快。如果没有异常,会执行Code3代码块, 注意是没有异常,如果存在异而 except 模块没捕获到,那么 else 代码块中的代码不会执行,同时也要注意, else 代码块中的异常时没有捕获的,这可以应用在读取文件过程中,如果打开文件翊异常(可能有文件不存在等)就执行except中的代码块,若无异常,则执行 else 中的代码块,Python 代码如下:

filename = ‘Python.txt’

try:

    file = open(filename, 'r')

except Exception as error:

    print('File Open Error', error)

else:

    for line in file:

        print(line)

    file.close()

Python 中的else的更多相关文章

  1. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  2. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  3. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  4. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  5. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

  6. python中的迭代、生成器等等

    本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...

  7. python2.7高级编程 笔记二(Python中的描述符)

    Python中包含了许多内建的语言特性,它们使得代码简洁且易于理解.这些特性包括列表/集合/字典推导式,属性(property).以及装饰器(decorator).对于大部分特性来说,这些" ...

  8. python cookbook 学习系列(一) python中的装饰器

    简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓 ...

  9. 用 ElementTree 在 Python 中解析 XML

    用 ElementTree 在 Python 中解析 XML 原文: http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python- ...

  10. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

随机推荐

  1. rsyslog日志服务部署

    rsyslog简介 rsyslog是CentOS6和CentOS7默认的记录日志的服务 支持特性: UDP, TCP, SSL, TLS, RELP MySQL, PGSQL, Oracle实现日志存 ...

  2. jquery-1.10.2_d88366fd.js和jquery-3.1.0.min.js 在用touch事件时候, event.changedTouches[0]报错的问题。

    1.animation动画:(注意如果这个动画是一开始就执行的,在pc端就要用px,在手机端用rem,如果在pc端展示页面,但用的是rem为单位,这时候动画一开始就执行,因为根字体大小还没准备好,动画 ...

  3. $.isEmptyObject() 判断对象是否为空

    $.isEmptyObject(obj):为空 返回true不为空 返回 false: isEmptyObject: function( obj ) { var name; for ( name in ...

  4. MySQL8.0.11安装后,使用CMD无法启动mysql服务

    首先,先把mysql的bin路径添加到系统环境变量 这样做可以,直接进入CMD后执行mysql服务,不需要进入mysql的bin文件路径去执行. 第一步:在MySQL的安装文件的bin目录(例如:C: ...

  5. java -jar命令运行jar包时指定外部依赖jar包 linxux or windows

    前尘回顾: setup.bat [chenquan@hostuser tartest]$ cat ../setup.sh javac -encoding UTF-8 -Djava.ext.dirs=. ...

  6. Coursera-吴恩达机器学习课程笔记-Week4+5

    Neural networks non-linear hypotheses 非线性假设 Neural model:logistic unit 第一层 Input layer 最后一层 Outer la ...

  7. idea中springboot静态资源及页面跳转问题

    1,静态资源放在resources/static下,html页面放在resources/templates下 2,在html中引入静态资源时,不用带static(对于路径来说是透明的) 3, 配置ht ...

  8. tkinter学习(1)

    1.hit_me的一个简单tk窗口学习1.1 代码: import tkinter as tk win = tk.Tk() win.title('my first window') #定义标题,如果未 ...

  9. 19 JavaScript数组 &数组增删&最值&排序&迭代

    关联数组(散列) 关联数组又叫做散列,即使用命名索引. JavaScript数组只支持数字索引. JavaScript对象使用命名索引,而数组使用数字索引,JavaScript数组是特殊类型的对象. ...

  10. linux--网络管理-ifconfig,route,netstat,ip,ss,dns,主机名网卡名修改bond

    cat /etc/services 查看常见端口对应的服务 查一查某个端口号,是哪个进程在用  lsof  -i :6010 49152-65535:动态端口或私有端口,客户端程序随机使用的端口  其 ...