鱼C论坛

 找回密码
 立即注册
查看: 3118|回复: 11

关于 try-except-else-finally中else的作用

[复制链接]
发表于 2016-5-21 15:48:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一直不明白 try-except-else-finally语句中,
  1. # -*- coding:utf-8 -*-
  2. try:
  3.     print "try 为开始语句"

  4. except:
  5.     print "如果try语句错误,执行相应的except语句"

  6. else:
  7.     print "如果try不出错,执行else"

  8. finally:
  9.     print "无论上面怎么是否出错,都要执行finally语句"
复制代码


finally 可以用来关闭文件之类的操作,那么else语句有什么作用,感觉他要实现的功能直接放到try中就行了。
求解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-21 17:42:45 | 显示全部楼层

回帖奖励 +5 鱼币

因为try里面的程序不一定会运行啊,只要python运行try里的内容检测到错误,就不会继续运行try里剩余的内容,而是直接开始运行except了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-27 08:50:11 | 显示全部楼层
leozyre 发表于 2016-5-21 17:42
因为try里面的程序不一定会运行啊,只要python运行try里的内容检测到错误,就不会继续运行try里剩余的内容 ...

try和except我知道,但是为什么要添加一条else呢,不是多此一举吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-28 09:07:06 | 显示全部楼层
林斌 发表于 2016-5-27 08:50
try和except我知道,但是为什么要添加一条else呢,不是多此一举吗

else是当try能完成的时候才会运行啊,而except还有finally效果都是不同的啊、、
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-28 09:26:05 | 显示全部楼层

回帖奖励 +5 鱼币

林斌 发表于 2016-5-27 08:50
try和except我知道,但是为什么要添加一条else呢,不是多此一举吗

execpt后面是可以接错误信息的如:typeerror,当运行try出现该错误时就运行except的代码,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-28 15:19:32 | 显示全部楼层
leozyre 发表于 2016-5-28 09:07
else是当try能完成的时候才会运行啊,而except还有finally效果都是不同的啊、、

else在try完成后才能运行,如果try不成功则不运行,那么为什么不直接放在 try语句中,
如果try失败了 也是直接跳出,不运行else
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-28 15:20:03 | 显示全部楼层
小剑剑 发表于 2016-5-28 09:26
execpt后面是可以接错误信息的如:typeerror,当运行try出现该错误时就运行except的代码,

我问的是 else什么时候有用处,确定不是来骗鱼币的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-28 17:35:49 | 显示全部楼层
本帖最后由 小剑剑 于 2016-5-28 18:04 编辑
林斌 发表于 2016-5-28 15:20
我问的是 else什么时候有用处,确定不是来骗鱼币的


如果没出现了错误,不就执行else了?
我差5个鱼币?

  1. a=[0]
  2. b=input("")
  3. try:
  4.       b=int(b)
  5.       a[b]
  6. except ValueError:
  7.       print("不是整数")
  8. else:
  9.       print("没有异常")
  10.             
复制代码

分别输入 0,与字母
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-28 18:22:00 | 显示全部楼层
林斌 发表于 2016-5-28 15:20
我问的是 else什么时候有用处,确定不是来骗鱼币的

我看懂你意思了,
现在假设有个列表a,要求输入一个数字,如果不超出索引就对应位变为1
超出就补充0,再变为1,
不是数字输出错误
  1. a=[0]
  2. b=input("")
  3. try:
  4.       b=int(b)
  5. except ValueError:
  6.       print("不是整数")
  7. else:
  8.       c=len(a)
  9.       while c<b:
  10.             a.append(0)
  11.             c+=1
  12.       a[c-1]=1
  13.             
复制代码

你试试都放在try里面要怎么做?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-30 18:10:11 | 显示全部楼层
小剑剑 发表于 2016-5-28 18:22
我看懂你意思了,
现在假设有个列表a,要求输入一个数字,如果不超出索引就对应位变为1
超出就补充0, ...

之前说你骗鱼币,抱歉  因为一直都没得到问题想要的答案,还是说声抱歉。
但是你这次这个答案,把else放入try中,然后任意输入数字,输出的结果还是相同的呀?
是我输入的b不正确么?还是 依然没有理解你的意思
求告知,b输入应当输入什么数
  1. a=[2,3,4]
  2. b=input("")
  3. try:
  4.       b=int(b)
  5.       c = len(a)
  6.       while c < b:
  7.           a.append(0)
  8.           c += 1
  9.       a[c - 1] = 1
  10.       print a
  11. except ValueError:
  12.       print("不是整数")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-5-31 10:36:44 | 显示全部楼层
本帖最后由 小剑剑 于 2016-5-31 10:38 编辑
林斌 发表于 2016-5-30 18:10
之前说你骗鱼币,抱歉  因为一直都没得到问题想要的答案,还是说声抱歉。
但是你这次这个答案, ...

  1. a=[0]*10
  2. b=input('')
  3. c=input('')
  4. try:
  5.       int(b)
  6.       c=float(c)
  7. except ValueError:
  8.       print ("索引不是数字")

  9.             
复制代码


这个例子把列表a的第b+1个元素改为浮点数c
但我们想处理c是分数的情况
这时候如果c是分数那么他也会出现ValueError的错误信息
  1. try:
  2.       代码1
  3.       代码2#可能出现与代码1一样的错误信息
  4. except Error:#处理代码1的错误
  5.       处理代码1的错误




  6. try:
  7.       代码1
  8. except:
  9.       处理代码1的错误
  10. else:
  11.       try:
  12.             代码2
复制代码

这是我个人理解
之前的例子我有搞错了
捕获.PNG

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
林斌 + 5 + 5 + 3 very 感谢!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-31 17:29:22 | 显示全部楼层
小剑剑 发表于 2016-5-31 10:36
这个例子把列表a的第b+1个元素改为浮点数c
但我们想处理c是分数的情况
这时候如果c是分数那么他 ...

不怎么懂,不过还是谢谢了,下次遇到再来探讨
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 01:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表