2016-03-06 124 views
0

所以我必須創建一個代碼,它讀取每個第三個字母,並在每個字母之間創建一個空格,我的代碼創建空間,但在最後一個字母后面也有一個空格,這是我的代碼:Python編程 - 初學者

msg = input("Message? ") 
length = len(msg) 
for i in range (0, length, 3): 
x = msg[i] 
print(x, end=" ") 

我的產量爲:

信息?

我進入:

cxohawalkldflghemwnsegfaeap 

我回來

c h a l l e n g e 

時,並不意味着輸出到有最後的 「」 電子之後。

我已閱讀加入print(" ".join(x))應該給我輸出我需要,但是當我把它放在它只是給了我一個錯誤。請和謝謝你

+0

你能告訴我們使用的第二個版本'加入'但失敗了? 'join'需要一個列表或序列,你可能不會先建立列表。 – tdelaney

+1

使用標題來描述具體問題。目前的標題沒有什麼信息。 –

回答

1

嘗試

>>> print " ".join([msg[i] for i in range(0, len(msg), 3)]) 
'c h a l l e n g e' 
6

在Python中,字符串是一種叫做序列的數據結構。序列支持切片,這是一種簡單而奇特的做法,如「從第n個」到「第n個」和「每個第n個」。語法是sequence[from_index:to_index:stride]。一個人甚至一個for循環做that.ago

我們可以通過省略from_indexto_index輕鬆獲得每3TH性格,並有3大步:

>>> msg = input("Message? ") 
cxohawalkldflghemwnsegfaeap 
>>> every_3th = msg[::3] 
>>> every_3th 
'challenge' 

現在,我們只需要插入空格每封信後。 separator.join(iterable)將按照與給定的separator之間的順序將來自iterable的元素連接在一起。一個字符串是一個可迭代的元素,它的元素是獨立的字符。

因此,我們可以這樣做:

>>> answer = ' '.join(every_3th) 
>>> answer 
'c h a l l e n g e' 

對於最終的代碼,我們可以省略中間變量,有仍然有相當的可讀性兩班輪:

>>> msg = input('Message? ') 
>>> print(' '.join(msg[::3]))