2013-12-10 156 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()