2016-03-06 125 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]))