2014-11-22 115 views
-7

問題: Python提供稱爲內置函數len返回字符串的長度,所以LEN(「艾倫」)的值是5 寫命名的函數right_justify將一個名爲s的字符串作爲參數,並用足夠的前導空格打印該字符串,以使字符串的最後一個字母位於顯示的第70列。練習從3.3認爲Python

>>> right_justify('allen') 
                   allen 

我試着寫一些代碼如下:

>>> def right_justify(s): 
...  print             s 
...  
>>> right_justify('allen') 
>>> allen 

結果是沒有通過運動所需的足夠的前導空格。而且我無法使用內置函數len來幫助解決它。

有關如何解決此問題的任何想法?

+2

假設的目的鍛鍊是讓你通過嘗試不同的東西來學習,你想要什麼樣的幫助?被給予答案不會幫助你。 – Stuart 2014-11-22 13:29:05

回答

-1

你可以這樣做只是這樣的:

在Python 3.X:

print(" "*(70 - len(s)) + s) 

而且像這樣在Python 2.x中:

print " "*(70 - len(s)) + s 
+1

非常感謝。真的行。 – sky112901 2014-11-22 15:42:01

+0

如果它適合你,請按下高按鈕。你只是給我一個不好的分數來回答我的問題。謝謝 – 2014-11-22 15:44:16

+1

這不是我。現在我沒有足夠的聲望來投票。 – sky112901 2014-11-22 15:50:39

2

只要加上N-len(s)prints之間的空格不會有幫助,因爲Python會簡單地忽略它們。你可以做到這一點使用字符串格式化:

>>> '{: >70}'.format('allen') 
'                 allen' 

rjust方法str對象:

>>> 'allen'.rjust(70) 
'                 allen' 

format功能(這是一樣的str.format,真的):

>>> format('allen', ' >70') 
'                 allen' 

儘管最直接的方法是

>>> s = 'allen' 
>>> ' ' * (70 - len(s)) + s 
'                 allen' 
0

什麼你正在做的是:

print (              s) 

帕拉姆 「S」 是一樣的。你可以使用String類的*只是方法或其他。 在here

1

空白更多信息的print後插入將被忽略,除非它是引號('")內。您可以使用*多次插入特定字符,例如要插入30個空格,您可以編寫' ' * 30。所以用這個插入所需數量的空格,你知道這個空格將由len(s)決定,並且所選的屏幕寬度爲70列。