猿问

无法捕获 IndexError 并打印语句,也循环回输入

我可以循环 ValueError,但只有 ValueError 会打印语句


IndexError 将停止代码,我想继续向用户询问“行号”。


def file_content(file_name):

    user_file = open(file_name, 'r')

    content = user_file.readlines()

    user_file.close()

    return content


def main():

    file_name = input('Enter the name of the file: ')


    try:

        content = file_content(file_name)

    


    except IOError:

        print ('File can not be fount. Program will exit.')

        exit()


    while True:

    

        try:

            line_number = input('Enter a line number: ')

            line_number = int(line_number)

            break

        

        

        except IndexError:

            print ('That is not a valid line number. Try again.')

        

        except ValueError:

            print ('You need to enter an integer for the line number. Try again.')

        

    

        

    

    print ('The line you requested:')

    print (content[line_number-1])


    

main()

这是我运行代码时发生的情况


Enter the name of the file: datas.txt

Enter a line number: w

You need to enter an integer for the line number. Try again.

Enter a line number: 99

The line you requested:

Traceback (most recent call last):

File "/Users/yenvivian/Desktop/Python HW/hw04.py", line 40, in <module>

main()

File "/Users/yenvivian/Desktop/Python HW/hw04.py", line 37, in main

print (content[line_number-1])

IndexError: list index out of range

谢谢


MM们
浏览 145回答 1
1回答

温温酱

要捕获异常,引发异常的代码必须在try:try:&nbsp; &nbsp; line_number = input('Enter a line number: ')&nbsp; &nbsp; line_number = int(line_number)&nbsp; &nbsp; print ('The line you requested:')&nbsp; &nbsp; print (content[line_number-1])&nbsp; # Inside the try&nbsp; &nbsp; break&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;except IndexError:&nbsp; &nbsp; print ('That is not a valid line number. Try again.')&nbsp; &nbsp;&nbsp;except ValueError:&nbsp; &nbsp; print ('You need to enter an integer for the line number. Try again.')
随时随地看视频慕课网APP

相关分类

Go
我要回答