Больше информации об ошибке + более длинная программа или меньше информации об ошибке + более короткая программа?

1
def question():
    original = input("Enter a word: ")
    if " " in original:
        print("\n**Please only enter one word.**")
        question()

    elif len(original) <= 0:
        print("\n**It seems as though you did not enter a word.**")
        question()

    elif not original.isalpha():
        print("\n**Please only use letters.**")
        question()

    else:
        print(original)

question()

VS.

def question():
    original = input("Enter a word: ")
    if len(original) > 0 and original.isalpha() and " " not in original:
        print(original)
    else:
        print("**Make sure you enter a word, only use letters, and only enter single word.**")
        question()

question()

Эти две программы в основном одно и то же. Но верхняя программа длиннее и дает больше информации о том, что пошло не так, когда пользователь вводит неверный ответ. Нижняя программа намного короче, но не дает столько информации для недействительных ответов. В реальном мире кодирование, как и в профессиональном программировании, какая из программ будет предпочтительнее другой?

Теги:

1 ответ

0
Лучший ответ

За несколькими исключениями (например, для входа в систему) больше информации, как правило, лучше (но это очень субъективно и зависит от специфики). При этом мы можем немного улучшить ваш первый подробный вариант, например:

# Allow multiple, simultaneous errors
def question():
    while True:
        original = input("Enter a word: ")
        errors = []

        if " " in original:
            errors.append("\n**Please only enter one word.**")
        if len(original) <= 0:
            errors.append("\n**It seems as though you did not enter a word.**")
        if not original.isalpha():
            errors.append("\n**Please only use letters.**")
        # if <another test>:
        #     errors.append(<test message>)

        if not errors: break

        # If we get here, there were some errors -- print them and repeat
        print("".join(errors))

    # We've broken from the while loop, the input is good   
    print(original)

Или же

# Don't allow multiple errors
def question():
    while True:
        original = input("Enter a word: ")
        err = None

        if " " in original:
            err = "\n**Please only enter one word.**"
        elif len(original) <= 0:
            err = "\n**It seems as though you did not enter a word.**"
        elif not original.isalpha():
            err = "\n**Please only use letters.**"
        # elif <another test>:
        #     err = <test message>

        if err is None: break

        # If we get here, there was an error -- print it and repeat
        print(err)

    # We've broken from the while loop, the input is good   
    print(original)
  • 0
    Хорошо спасибо. Хотя есть одна проблема с изменениями, которые вы внесли. Я действительно столкнулся с этим сам. Вот почему в моей текущей программе нет операторов while . while это делается так, что вы даже не можете ввести свой ответ. Это просто пропускает это.
  • 0
    ваше условие while True - другими словами, является ли ваша строка while True: ?
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню