Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的代码打印的空间是我预期的两倍?_Python - Fatal编程技术网

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

Python 为什么我的代码打印的空间是我预期的两倍?,python,Python,Python提供了一个名为len的内置函数,该函数返回字符串的长度,因此len('allen')的值为5。编写一个名为right\u justify的函数,该函数将名为s的字符串作为参数,并打印具有足够前导空格的字符串,以便字符串的最后一个字母位于显示的第70列 作者的解决方案: def right_justify(s): print (' '*(70-len(s))+s) >>> right_justify('allen') def right_justif

Python提供了一个名为
len
的内置函数,该函数返回字符串的长度,因此
len('allen')
的值为5。编写一个名为
right\u 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)
我的解决方案:

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


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

打印“行实际上打印了两个空格(一个来自
,一个来自
)。您可以将其替换为“
print”“”
,使函数的工作方式与原始函数相同。

问题在于您的print语句

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

另一方面,定义
right\u justify
函数的另一种方法是

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

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

print " ",
…添加了一个空格。你想要的是:

print "",

我更喜欢str.rjust(70,“”)函数,我认为它可以实现以下功能:
这些代码之间有什么不同吗?你的意思是除了字面上的不同之外?你期望的输出是什么?你的代码给出的输出是什么?