簡體   English   中英

如何擺脫最后的空白?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM