Возможно, есть и более питонские способы сделать это, но для минимального изменения кода все, что вам нужно сделать, это добавить строку и напечатать ее после зацикливания.Таким образом, вместо вывода z[0]
вы бы добавили его в строку, которую нужно было бы создать до цикла.Затем вы можете добавить к нему фамилию, прежде чем напечатать всю строку.то есть
name=input()
name=name.split(' ')
lname = name[-1]
fname= name[:-1]
result = ""
for z in fname:
result = result + z[0] + ". "
result = result + lname
print(result)
Вместо этого я бы сделал следующее:
name=input()
name=name.split(' ')
print('. '.join([n[0] if i != len(name) - 1 else n for i, n in enumerate(name)]))
, что дало Stack Over Flow
возвращает S. O. Flow
Это не заглавные буквы для вас,поэтому, если указано stack over flow
, будет возвращено s. o. flow
.
Чтобы разбить предоставленный мною код, '. '.join(<list>)
берет список строк и объединяет их вместе, используя строку '. '
.Это означает, что код внутри объединения предоставляет ['s', 'o', 'flow']
.
Код внутри объединения называется списком.Это фактически плоский цикл for, который добавляет каждый результат цикла for в список. Раздел 5.1.3 учебника по питону охватывает списочные понимания.
Это понимание списка принимает первую букву имени, если только индекс (i) этой строки не равен последнему индексусписок.Это означает, что при вводе Stack Over Flow
len () равно 3. Последний индекс равен 2 (считая от 0 -> 0 == 'Stack', 1 == 'Over', 2 == 'Flow').Как только индекс == 2, он берет полное имя вместо первой буквы.
Перечисление дает вам и его индекс в списке, и элемент списка, поэтому мой *Цикл 1030 * равен for i, n
, а не просто for n
.
Преимущество в том, что нет жесткого кодирования значения, такого как: == 2
, для других входов.Что делать, если у человека нет отчества?Например, John Doe
должно быть J. Doe
.При жестко заданном значении 2 результат будет J. D.
.Или что, если вход был для Мэри Сью Элизабет Смит?Ее результатом должен быть MSE Smith, но он не приведет к такому выводу, если количество имен жестко закодировано в вашем решении.