我只是python的初学者,有人问我要解决一个问题,即您的程序必须解码一个代码,该代码中需要每个第3个字母并将它们与每个字母之间的间隔放在一起,对不起一个不好的解释,但看看我的代码:
m=input("Message? ")
for c in m[::3]:
print(c,end=' ')
问题是最后一个字母后面有一个空格,我不知道该如何摆脱它,我尝试过.rstrip,但这不起作用。我还尝试过[::-1]在end =''之后,但这不起作用。
答案 0 :(得分:2)
您可以在列表理解而不是循环上使用<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<div>
<i class="material-icons">forward</i>
<label for="c">
<input type="checkbox" id="c">
<span>1 year warranty</span>
</label>
</div>
:
str.join
这将在每个字母之间留一个空格,不包括结尾。
答案 1 :(得分:2)
我不确定问题到底出在哪里,但我假设您的意思是说,在您上一次打印时,您不希望使用end =''空格。要生成所需的字符串,您可以按照lltt的说明在空白处加入切片,减去多余的列表理解。
m = "123456789"
print(" ".join(m[::3]))
输出:
"1 4 7"
如果您确实要维护for loop打印功能,则需要一种方法来确定您是否处于最后一个循环中。这是一个普遍问题,具有多种解决方案,例如超前功能。但是您可以简单地将for循环分为两部分。
m="123456789"
for c in m[::3][:-1]:
print(c,end=' ')
print(m[::3][-1], end='')
输出:
1 4 7
当然,您不需要在上一次打印中使用end=''
; print(m[::3][-1])
很好。只是为了提高可读性。
如果您要说解码后的消息不能以空格作为最后一个字符,则可以使用.rstrip()。例如,当输入的最后一个,第三个字符为空格时。
m = "input with trailing whitespace "
print(" ".join(m[::3]))
输出:
"i u w h r l g h e a "
在这里您可以链接rstrip()方法。
m = "input with trailing whitespace "
print(" ".join(m[::3]).rstrip())
输出:
"i u w h r l g h e a"
答案 2 :(得分:0)
在处理字符串时,应避免使用效率低下且通常不正确的手工解决方案。使用字符串方法.join()
将字母与空格连接起来:
m = "Hello, world!"
print(" ".join(m[::3]))
#'H l w l'