来自Think Python的练习3.3

时间:2014-11-22 13:20:28

标签: python function

问题: Python提供了一个名为 len 的内置函数,它返回一个字符串的长度,因此len(' allen')的值为5。 编写一个名为 right_justify 的函数,它将一个名为 s 的字符串作为参数,并打印带有足够前导空格的字符串,以便字符串的最后一个字母位于第70列的显示。

>>> right_justify('allen')
                                                                allen

我尝试编写如下代码:

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

结果是练习不需要足够的前导空间。我无法使用内置函数 len 来帮助解决它。

有关如何解决此问题的任何想法?

4 个答案:

答案 0 :(得分:2)

prints之间添加 N - len(s)空格不会有帮助,因为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'

答案 1 :(得分:1)

print之后插入的空格将被忽略,除非它在引号内('")。您可以使用*多次插入特定字符,例如要插入30个空格,您可以编写' ' * 30。因此,使用此选项可插入所需数量的空格,您知道这些空格将由len(s)确定,并且所选的屏幕宽度为70列。

答案 2 :(得分:0)

你在做什么:

print (                                                        s)

param“s”是一样的。您可以使用String类的* just方法或其他方法。 here

中的更多信息

答案 3 :(得分:-1)

你可以这样做:

在Python 3.x中:

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

在Python 2.x中就像这样:

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