前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【我问 Crossin】python程序一闪而过,是我的打开方式不对?

【我问 Crossin】python程序一闪而过,是我的打开方式不对?

作者头像
Crossin先生
发布2018-04-17 12:06:00
9380
发布2018-04-17 12:06:00
举报

除了在公众号、交流群组或论坛上提问,大家有想问的问题也可以直接在本栏目文章下留言,接受以下提问:

  • 与编程相关的问题
  • 工作咨询、学习方向建议
  • 程序猿的日常
  • Crossin 多大年龄?
  • 助教小哥长得帅不帅?有没有女朋友?

1. 双击py文件后,程序一闪而过,是怎么回事?要想正常运行怎么办?

原因是因为程序执行完毕后自动关闭了。

方法一:

通过 shell / 命令行 / ide 运行

代码语言:javascript
复制
# 以命令行为例
C:\Users\Administer>python yourfile.py

方法二:

在文件结尾添加一句 input(),让程序等待你输入后再结束。

2. 异常处理的 finally 语句有什么作用?写在 finally 中的代码和直接写在 try…except 外部有什么不同?

区别在于:finally 下的语句无论是否出现异常,均会被执行。

代码语言:javascript
复制
try:
  dfdg = xidfg  # 定义一个错误变量
  f = 2/0  # 除0错误
except ZeroDivisionError as e:
  print(e)
finally:
  print('程序结束')
运行结果
代码语言:javascript
复制
程序结束
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 外部的语句,在程序发生异常而中断后是不能保证执行的。

代码语言:javascript
复制
try:
  dfdg = xidfg  # 定义一个错误变量
  f = 2/0  # 除0错误
except ZeroDivisionError as e:
  print(e)
print('程序结束')
运行结果
代码语言:javascript
复制
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 未能捕捉变量定义错误,直接报错,不会执行最后的打印。

3. 教程里的“猜数字”游戏,answer=raw_input(),然后比较answer和答案num的大小,为什么总是显示“too big”?

这个在昨天的直播中有提到。

因为 raw_input 得到的输入是字符串,无法直接和数字去比较大小。但在python2里,你这样做了,也不会报错,而是产生不可预知的结果。在python3里,则会直接报错。

Python2 中应改为:

代码语言:javascript
复制
answer = input()

Python3 中可使用:

代码语言:javascript
复制
answer = eval(input())

以上就是每周的内容。

哦,对了,助教小哥挺帅的?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-03-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Crossin的编程教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 双击py文件后,程序一闪而过,是怎么回事?要想正常运行怎么办?
  • 2. 异常处理的 finally 语句有什么作用?写在 finally 中的代码和直接写在 try…except 外部有什么不同?
    • 运行结果
      • 运行结果
      • 3. 教程里的“猜数字”游戏,answer=raw_input(),然后比较answer和答案num的大小,为什么总是显示“too big”?
      相关产品与服务
      云直播
      云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档