[英]how to get rid of the whitespace at the end?
我只是 python 的初學者,我被要求解決一個問題,你的程序必須解碼一個代碼,在這個代碼中,它需要每 3 個字母並將它們放在一起,每個字母之間有一個間隙,抱歉,這是一個錯誤的解釋但看看我的代碼:
m=input("Message? ")
for c in m[::3]:
print(c,end=' ')
問題是在最后一個字母之后有一個空格,我不知道如何去掉它,我已經試過了。rstrip 但這不起作用。 我也試過 [::-1]after the end=' ' 但這不起作用。
您可以在列表推導式而不是循環中使用str.join
:
" ".join(m[::3])
這將在每個字母之間放置一個空格,不包括路徑。
我不確定問題到底是什么,但我假設你的意思是說在你最后一次打印時你不想要 end=' ' 空白。 要生成您想要的字符串,您可以像lltt所說的那樣在空白處加入切片,減去冗余列表理解。
m = "123456789"
print(" ".join(m[::3]))
Output:
"1 4 7"
如果你真的想維護你的 for 循環打印功能,你需要一種方法來確定你是否在最后一個循環中。 這是一個有多種解決方案的一般問題,例如先行 function。但是您可以簡單地將 for 循環分成兩部分。
m="123456789"
for c in m[::3][:-1]:
print(c,end=' ')
print(m[::3][-1], end='')
Output:
1 4 7
當然你不需要最后打印的end=''
; print(m[::3][-1])
很好。 它只是為了可讀性。
如果你的意思是說解碼后的消息不能有空格作為最后一個字符,那么你可以使用 .rstrip()。 例如,當輸入的最后一個、第三個字符是空格時。
m = "input with trailing whitespace "
print(" ".join(m[::3]))
Output:
"i u w h r l g h e a "
在這里您可以鏈接 rstrip() 方法。
m = "input with trailing whitespace "
print(" ".join(m[::3]).rstrip())
Output:
"i u w h r l g h e a"
使用字符串時,您應該避免效率低下且通常不正確的手工解決方案。 使用字符串方法.join()
將字母與空格連接起來:
m = "Hello, world!"
print(" ".join(m[::3]))
#'H l w l'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.