Эффективность кода проверки фамилии - Python

Я написал while оператор ниже, чтобы проверить поле фамилии и вывести логическое значение, чтобы увидеть, произошли ли какие-либо ошибки. Программа будет хранить все сообщения об ошибках в переменной errors, Я добавил break после каждой проверки ошибок, потому что я не хочу, чтобы программа продолжала проверять ошибки после их обнаружения.

Я не уверен, является ли этот код эффективным или нет - это while Выписка нужна в этом случае?

Как вы думаете?

valcheck = True

# validate surname
while valcheck == True :

    try :
        surname = str(e2.get())
    except :
        errors += "\nSurname not valid - must be a string."      
        valcheck = False
        break

    # check if surname is not empty
    if len(surname) <= 0 :
        errors += "\nSurname cannot be blank."      
        valcheck = False

    # check if surname is alphabetical
    for i in str(surname) :
        # also, allow for hyphens and apostrophes
        if not(i.isalpha() or i == "'" or i == '-') :
            errors += "\nSurname not valid - must be alphabetical."
            valcheck = False

    # if there are no errors, exit the statement
    break

Заранее спасибо.

1 ответ

Это кажется лучше?

try :
    surname = str(e2.get())

    # check if surname is not empty
    if len(surname) <= 0 :
        errors += "\nSurname cannot be blank."      
    else :
        # check if surname is alphabetical
        for i in str(surname) :
            # also, allow for hyphens and apostrophes
            if not(i.isalpha() or i == "'" or i == '-') :
                errors += "\nSurname not valid - must be alphabetical."

except :
    errors += "\nSurname not valid."      
Другие вопросы по тегам