Как использовать try, кроме записи в файл - PullRequest
2 голосов
/ 04 августа 2020

Я пытаюсь написать функцию с помощью try и except. Я создал файл с именем «file», который содержит всю личную информацию студентов. Я хочу распечатать личную информацию, когда я ввожу имя студента и записываю его в новый файл с именем «new_file». Если введенное имя студента не включено в «файл», я хочу напечатать «Имя не найдено». Поскольку это задание, и я должен использовать блоки try. Кто-нибудь может помочь? Вот мой код.

введите здесь описание изображения

find_info = input("Please input the student name that you want to search:")

def write_file():
    try:
        for student in student_list:
            if (find_info == student.name):
                print("Find Personal Information of:", student.name)
                with open("/Users/ada/Desktop/new_file.txt", "w") as new_file:
                    new_file.write("Name: " + student.name + ", Student_id: " + student.student_id \
                                   + ", College: " + student.college + ", Citizenship:" + 
                                   student.citizenship \
                                   + ", Phone_number:" + student.phone_number + ", Address:" 
                                   + student.address)
            print("\n")
            print("Student Personal Information Created")
            print("\n")
            break
    except:
        print("\n")
        print("Student Name Not Found")

Ответы [ 2 ]

0 голосов
/ 05 августа 2020

В вашем коде нет исключений, вы можете удалить try..exept, но, поскольку вам необходимо иметь try and except, я рекомендую изменить ваш оператор if на assert (find_info == student.name), который выдаст AssertionError if предложение не оценивается как True. Другой вариант - добавить оператор else после вашего оператора if и raise с исключением. надеюсь, это может быть полезно.

0 голосов
/ 05 августа 2020

Вы написали свой код, чтобы проверить, соответствует ли имя ученика тому, что вы ищете, прежде чем что-либо делать с ним, что является хорошей практикой! Однако если вы хотите, чтобы он генерировал исключение, вы должны позволить ему сломаться или сломать его самостоятельно. В этом случае ваш if (find_info == student.name): проверяет, существует ли он, но вы никогда не говорите ему, что делать else:. Я бы предложил добавить оператор else, который вызовет исключение [raise NameError("Breaking my stuff!")], которое затем может быть перехвачено вашим except. В духе домашних заданий я оставлю точное место на ваше усмотрение. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...