为什么我的代码打印的空间量是我预期的两倍?

时间:2014-02-24 21:04:17

标签: python

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

作者的解决方案:

def right_justify(s):
        print (' '*(70-len(s))+s)
>>> right_justify('allen')

我的解决方案:

def right_justify(s):
            space_count=70-len(s)
            for i in range(0,space_count,1):
                       print " ",
            print s
strng=raw_input("Enter your desired string:")
print len(strng)
right_justify(strng)

我的代码输出与作者代码的输出不同:我得到两倍的空格,例如130而不是65。

但在我看来,这两段代码在逻辑上是等价的。我在俯瞰什么?

4 个答案:

答案 0 :(得分:2)

问题在于您的打印声明

print " ",

将为循环的每次迭代打印两个空格。使用逗号终止print语句时,后续调用将以空格分隔。

另外,另一种定义right_justify功能的方法是

def right_justify(s):
    print '%70s' % s

答案 1 :(得分:0)

print " ",行实际上会打印两个空格(一个来自" ",一个来自,)。您可以将其替换为print "",,以使您的功能与原始功能完全相同。

答案 2 :(得分:0)

您的代码有130个空格,作者的代码有65个空格。这是因为

print " ",

...增加一个空间。你想要的是:

print "",

答案 3 :(得分:0)

我更喜欢str.rjust(70,“”)这个功能,我认为这样做是这样的:  strng.rjust(70,“”)