2013-12-10 107 views
2

编写一个程序,获得包含一个人的名字,中间一个字符串,姓氏,然后显示他们的第一个,中间和最后一个字母。例如,如果用户输入约翰·威廉史密斯程序应显示J. W. S.用户输入字符串切片

这是确切的指示,这是我到目前为止,但它们打印在列表不是一个字符串。

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()'分割字符串时,它将产生一个由空格分隔的单词列表。 '''约翰','威廉','史密斯']'。然后,当你通过这个列表,'在WORD_LIST CH迭代: 打印( “” CH [0] +)',它抓住的第一个字母('CH [0]'),并打印出来了'.'和一个换行符。 [Documentation](http://docs.python.org/3/whatsnew/3.0.html)用于在Python 3.0中打印的更改。 – MakeCents

回答

6

您可以使用join来获取带有首字母和p的单个字符串RINT了这一点:

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

这正好。你也可以做'打印(“”。加入(字[0] .upper()在WORD_LIST字)+”。‘)',以确保如果我输入‘亚当·邓肯·史密斯’它仍然读取我的英文缩写为’ ADS” –

+1

如果你真的想避免因某种原因这种方法,没有(因为它是非常可读和Python的)。但是,如果您必须,则print()接受指定要打印的最后一个字符的kwarg'end'。默认情况下这是'\ n',但如果你愿意,你可以将它设置为一个空字符串。 'print(ch [0] .upper()+“。”,end ='')'也可以解决,但看起来更丑陋,不太清晰。 –

+0

+1,因为它们都暗示了将'upper'并且提供了关于'end' kwarg的更多信息。 – itsjeyd

2

打印你的结果,而不换行的组件之间:

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