python - python-block try/except - 显示一行文本
问题描述
我的代码:
fname = "text.txt"
text_file = open(fname, "r")
lines = text_file.readlines()
while True:
linenumber = int(input("Please enter a line number or press 0 to quit: "))
if linenumber == 0:
print("Thanks for using the program")
break
text_file.close()
如何添加异常(try/except)处理,这样在输入后,例如不存在的第30行的编号,就会出现异常,例如“此行不存在”,我有一个很大的问题它,有人可以帮忙吗?
提前致谢!!!
解决方案
你真的不需要try / except
那个;一个if
声明会做:
...
while True:
linenumber = int(input("Please enter a line number or press 0 to quit: "))
if linenumber == 0:
print("Thanks for using the program")
break
elif linenumber < 0 or linenumber > len(lines):
print("this line doesn't exist!)
...
(我猜你正在制作程序,以便用户输入基于 1 的索引,所以elif
条件有>
而不是>=
。)
但是,如果您确实需要try / except
,这是EAFP的一种方式:
...
while True:
linenumber = int(input("Please enter a line number or press 0 to quit: "))
if linenumber == 0:
print("Thanks for using the program")
break
try:
lines[linenumber-1]
except IndexError:
print("This line does not exist")
else:
print("this line exists, yes")
# do what you'd do when it exists
...
推荐阅读
- performance - Cloudflare 导致请求缓慢
- java - 将 imageView 放在另一个中间
- security - PasswordVault 如何保护密码?
- openshift - 启用 minishift/cdk 指标
- vba - VBA 中的后期绑定与早期绑定 - (CreateObject() vs New)
- machine-learning - ANNs CNNs 和 MLPs 中隐藏层之间的层间缩放或归一化
- html - 元素位置固定受限
- optimization - 使用 AVX2 指令选择性地异或列表的元素
- javascript - findIndex 返回 -1,但它应该返回 0
- security - 用于不安全 WebSocket 服务器的安全 WebSocket 代理