除了在公众号、交流群组或论坛上提问,大家有想问的问题也可以直接在本栏目文章下留言,接受以下提问:
原因是因为程序执行完毕后自动关闭了。
方法一:
通过 shell / 命令行 / ide 运行
# 以命令行为例
C:\Users\Administer>python yourfile.py
方法二:
在文件结尾添加一句 input()
,让程序等待你输入后再结束。
区别在于:finally 下的语句无论是否出现异常,均会被执行。
try:
dfdg = xidfg # 定义一个错误变量
f = 2/0 # 除0错误
except ZeroDivisionError as e:
print(e)
finally:
print('程序结束')
程序结束
Traceback (most recent call last):
File "E:\github\counter\learning\test.py", line 3, in <module>
dfdg = xidfg
NameError: name 'xidfg' is not defined
由上面的代码可以看到,由于执行顺序的原因, 虽然 except 不能处理变量定义错误,但最终仍然执行了 finally 语句。
而写在 try…except 外部的语句,在程序发生异常而中断后是不能保证执行的。
try:
dfdg = xidfg # 定义一个错误变量
f = 2/0 # 除0错误
except ZeroDivisionError as e:
print(e)
print('程序结束')
Traceback (most recent call last):
File "E:\github\counter\learning\test.py", line 12, in <module>
dfdg = xidfg
NameError: name 'xidfg' is not defined
except
未能捕捉变量定义错误,直接报错,不会执行最后的打印。
这个在昨天的直播中有提到。
因为 raw_input 得到的输入是字符串,无法直接和数字去比较大小。但在python2里,你这样做了,也不会报错,而是产生不可预知的结果。在python3里,则会直接报错。
Python2 中应改为:
answer = input()
Python3 中可使用:
answer = eval(input())
以上就是每周的内容。
哦,对了,助教小哥挺帅的?