首页 > 解决方案 > 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行的编号,就会出现异常,例如“此行不存在”,我有一个很大的问题它,有人可以帮忙吗?

提前致谢!!!

标签: pythonloopsfor-loopexceptiontry-catch

解决方案


你真的不需要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

...

推荐阅读