Обновление переменной внутри цикла
ЗАДАЧА: Напишите функцию who_are_you_and_hello(), которая читает имя пользователя из стандартного ввода, пока он не введет его в правильном формате, а затем здоровается. Приветствие должно быть в форме: "Привет, {имя}!". После вывода надо не забыть перевести курсор на новую строку.
Если пользователь ввёл имя в неправильной форме, функция должна считать его снова. Корректным считается имя, состоящее из одного слова, в котором нет символов кроме букв, первая буква заглавная, остальные — строчные.
После вывода приветствия функция должна завершить свою работу.
Обратите внимание: в вашей программе должна быть функция who_are_you_and_hello, но она не должна вызываться. Следите за тем, чтобы имя функции было написано верно.
Формат ввода:
who_are_you_and_hello()
C клавиатуры вводится:
Зачем тебе это знать?
Хорошо, записывай
Василий Пупкин
Василий 1
Вася1
Вася!
ВАСЯ
Вася
И тебе привет
Михаил?
Михаил
Формат вывода:
Привет, Вася!
Мой код:
def who_are_you_and_hello():
a = 0
name = input()
while a == 0:
if ' ' not in name and name.isalpha() and name.istitle() and name[1:].islower():
a += 1
else:
name = input()
print('Привет, ', name, '!', sep='')
Тест проходит
Вопрос: пока переменная name находилась внутри цикла, т. е.:
while a == 0:
name = input()
Выходила ошибка: Ожидаемый результат:
Привет, Вася!
Вывод:
Привет, Михаил!
С чем это связано?
Ответы (1 шт):
самое главное в вашем коде нет повтора запроса ввода и нет сообщений о неправильном формате
def who_are_you_and_hello():
while True:
name = input("Введите ваше имя: ")
if ' ' in name or not name.isalpha() or not name.istitle():
print("Неправильный формат имени. Попробуйте снова.")
else:
print(f"Привет, {name}!")
break
print() # переход на новую строку
who_are_you_and_hello()