2013-12-10 2 views
2

Напишите программу, в которой содержится строка, содержащая первые, средние и последние имена человека, а затем отображаются их первые, средние и последние инициалы. Например, если пользователь входит в состав Джона Уильяма Смита, программа должна отображать J. W. S.User String Slicing

Это точные инструкции, и это то, что у меня есть до сих пор, но оно печатает их в списке, а не в строке.

def main(): 
my_string = input("Enter in your First, Middle and last name: ")  
word_list = my_string.split() 

for ch in word_list: 
    print(ch[0] + ".") 

main() 

Выходной ток:

Enter in your First, Middle and last name: Nolan Patrick Archer 
N. 
P. 
A. 
>>> 

я могу конвертировать Python 2 в Python 3, его просто понятие я не-в состоянии понять

+0

@TimothyChoi по умолчанию, 'str.split()' расщепляется на пробельных - пока явно определяя это прекрасно, это не обязательно – MattDMo

+0

@MattDMo Просто читать документы снова. Немного удивлен, но все в порядке :) – tyteen4a03

+1

'my_string' - это строка. Когда вы разделите строку с помощью 'my_string.split()', это приведет к списку из слов, разделенных пробелом. '['John', 'William', 'Smith']'. Затем, когда вы перебираете этот список, 'для ch в word_list: print (ch [0] +". ")', Он захватывает первую букву ('ch [0]') и печатает ее с помощью '.' и новой строки. [Документация] (http://docs.python.org/3/whatsnew/3.0.html) для изменения печати в Python 3.0. – MakeCents

ответ

6

Вы можете использовать join, чтобы получить одну строку с инициалами и p ечать что из:

print(". ".join(word[0] for word in word_list) + ".") 
+1

Это точно. Вы также можете сделать 'print (". ".join (слово [0] .upper() для слова в word_list) +". ")' Чтобы убедиться, что я нахожу «adam duncan smith», он по-прежнему читает мои инициалы как " ОБЪЯВЛЕНИЯ" –

+1

Если вы действительно хотите избежать этого метода по какой-либо причине, не делайте этого (потому что он очень читабельный и питонический). Однако, если вы ДОЛЖНЫ, то print() принимает «конец» kwarg, который указывает последний символ для печати. По умолчанию это '\ n', но вы можете установить его как пустую строку, если хотите. 'print (ch [0] .upper() +". ", end = '')' также будет решать, но выглядит более уродливым и менее понятным. –

+0

+1 для обоих, предлагающих включить 'upper' и предоставить дополнительную информацию о' end' kwarg. – itsjeyd

2

Распечатайте результат без переводов строк между компонентами:

for ch in word_list: 
    print(ch[0] + '.', end=' ') 
print()