其他语言中else只可以和if进行组合,也就是我们常见的if...else,但是python为else赋予了新的声明。它可以和while 、for 、try一起串联使用。

  下面我们介绍和while串联使用时的效果。

count=0
while count>12:
if (11>0):
print("成立")
break
count+=1
else:
print('不成立') #当while条件不成立,直接跳到该处输出

  for 循环和while用法一样的

def forelse():
c = [1,2]
for i in c:
print(i)
else:
print("输出") #当for循环结束会输出该语句

  try 的用法

def tryelse():
try:
sum = 1+1
except TypeError as reason:
print("报错")
else:
print("到我这里了") #当try块中的语句正常执行完毕会执行该方法。

  with ...:用法

# 第一种写法
def withas():
try:
f = open("文字.txt")
print(f.read())
f.close()
except OSError as reason:
print("读取错误")
else:
print("完成")
# 第二种写法 with,一定不要忘记 : 哦
def withas2():
try:
with open("文字.txt") as f:
print(f.read())
f.close()
except OSError as reason:
print("读取错误")
else:
print("完成")

  为什么会用到with,是因为有的时候我们可能在使用open(file)打开一个文件的时候,可能这个文件并不存在,那么这个时候就会报错,而我们可能会将这种方法卸载一个try except finally这样的语句里,并且在finally里边可能添加了f.close()这样的语句,但是我们这个时候并没有打开一个f的文件,因为这个文件并不存在,所以没有必要关闭这个文件。这时候我们就用到了with。

  错误代码展示:

def withas1():
try:
f = open("文字1.txt") #该文件不存在哦
print(f.read())
except OSError as reason:
print("读取错误")
finally:
f.close() #--------------错误输出
读取错误
Traceback (most recent call last):
File "E:/python/day-2/whileelse.py", line 46, in <module>
withas1()
File "E:/python/day-2/whileelse.py", line 44, in withas1
f.close()
UnboundLocalError: local variable 'f' referenced before assignment
>>>

  从错误输出我们就可以看到,报的错误是局部变量错误,说的就是f并不存在,也就是没有打开这个文件。

python,中使用while...else 和 for...else 还有try...else,另外就是运用with关键字的更多相关文章

  1. 【转载】Python中如何高效实现两个字典合并,三种方法比较。

    本文转载自:http://www.pythoner.com/13.html Python中将两个字典进行合并操作,是一个比较常见的问题.本文将介绍几种实现两个字典合并的方案,并对其进行比较. 对于这个 ...

  2. python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍

    目录 python学习第六讲,python中的数据类型,列表,元祖,字典,之列表使用与介绍. 二丶列表,其它语言称为数组 1.列表的定义,以及语法 2.列表的使用,以及常用方法. 3.列表的常用操作 ...

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

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

  4. python中的Ellipsis

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

  5. python中的默认参数

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法

    登陆数据库后,右键打开表提示:目录名无效,执行SQL语句也提示有错误,现在把解决方法分享给大家 1.新建查询 2.点工具栏中[显示估计的查询计划],结果提示Documents and Settings ...

  2. 如何修改const常量值

    总结:这个跟计算机语言类别和编译器有关,本文是在linux环境下说明的. 分两种情况: 1. C语言: 2. C++语言: /*! * \Description: * \author scictor ...

  3. 【清北学堂2018-刷题冲刺】Contest 4

    Task 1:序列 [问题描述]  小H原本有一个由连续的正整数组成的序列,如{4,5,6}或{10,11,12,13,14,15,16},但是她最近睡眠不足,只能记得其中的一些数字.她想知道,她最少 ...

  4. node(基础三)_模块系统基础

      一.前言                                                                                         这篇文章主 ...

  5. 把菜单栏变成万能工具箱,让你的 Mac 更酷炫

    文章来源:知乎 文章收录于:风云社区 www.scoee.com,提供上千款各类mac软件下载 为了彰显存在感,各路 Mac 应用都喜欢在菜单栏上安置一个图标:其中有的只是用来召唤主界面,也有一些应用 ...

  6. maven依赖包下载地址

    http://maven.org http://mvnrepository.com/

  7. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  8. git中tag的使用

    1.获取tags $ git tag 2.新建tag 有记录信息 $git tag -a releases-1.0.1 -m 'add i.sh file.'    没有记录信息  $git tag ...

  9. Linux系统中用户组、文件权限浅解

    用户组 在linux中的每个用户必须属于一个组,不能独立于组外.在Linux中每个文件有所有者.所在组.其它组的概念. [所有者] 一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者,用& ...

  10. DataTabe使用Linq实现 Group

    DataTable dt = dataSet.Tables[]; var query = from t in dt.AsEnumerable() group t by new { t1 = t.Fie ...