@BorisRad

Почему код из книги Эрика Метиза «Изучаем Python» не работает?

Изучаю Пайтон по книге Эрика Метиза "Изучаем Python" и в главе 8 "функции " тема "Использование функции в цикле while" выполнение кода не совпадает с тем что написанно в самой книге, вот код:

def get_formatted_name(first_name, last_name):
    """Return a full name, neatly formatted."""
    full_name = f"{first_name} {last_name}"
    return full_name.title()
while True:
    print("\nPlease tell me your name:")
    print("(enter 'q' at any time to quit)")
    f_name = input("First name: ")
    if f_name == 'q':
        break
    l_name = input("Last name: ")
    if l_name == 'q':
        break
formatted_name = get_formatted_name(f_name, l_name)
print(f"\nHello, {formatted_name}!")

код должен выдать:

Please tell me your name:
(enter 'q' at any time to quit)
First name: eric
Last name: matthes

Hello, Eric Matthes!

Please tell me your name:
(enter 'q' at any time to quit)
First name: q

что выдает код у меня:

Please tell me your name:
(enter 'q' at any time to quit)
First name: Eric
Last name: Matthes

Please tell me your name:
(enter 'q' at any time to quit)
First name:

Как вы видите сообщения "Hello, Eric Matthes!" нету. Почему?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 2
@sand3001
Всего по немногу
Проблема в том, что Вы последние две строки написали без отступов, тем самым выдернув их из цикла. И если бы Вы оформили вопрос в соответствие с правилами и обернули Ваш код в теги code, ответ был бы раньше
Ответ написан
@dima20155
you don't choose c++. It chooses you
С вашим форматированием сложно сказать что у вас происходит.

Но код 100% рабочий
def get_formatted_name(first_name, last_name):
    """Return a full name, neatly formatted."""
    full_name = f"{first_name} {last_name}"
    return full_name.title()

while True:
    print("\nPlease tell me your name:")
    print("(enter 'q' at any time to quit)")
    f_name = input("First name: ")
    if f_name == 'q':
        break
    l_name = input("Last name: ")
    if l_name == 'q':
        break
    formatted_name = get_formatted_name(f_name, l_name)
    print(f"\nHello, {formatted_name}!")


Output:
Please tell me your name:
(enter 'q' at any time to quit)
First name: Boris
Last name: Rad
Hello, Boris Rad!

Please tell me your name:
(enter 'q' at any time to quit)
First name: q


Вероятно, вы не добавили отступы для последних двух строк:
formatted_name = get_formatted_name(f_name, l_name)
print(f"\nHello, {formatted_name}!")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы