【问题标题】:Why does my code print twice the amount of spaces I expect?为什么我的代码打印的空格量是我预期的两倍?
【发布时间】:2014-03-26 18:36:52
【问题描述】:

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。

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

【问题讨论】:

  • 这些代码之间有什么不同吗?你的意思是除了它们实际上是不同的吗?
  • 您期望的输出是什么,您的代码给出的输出是什么?

标签: python


【解决方案1】:

问题在于您的打印语句

print " ",

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

顺便说一句,定义right_justify 函数的另一种方法是

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      print " ",
      

      ...添加一个空格。你想要的是:

      print "",
      

      【讨论】:

        【解决方案4】:

        我更喜欢函数 str.rjust(70," ") ,我认为它可以解决问题,如下所示: strng.rjust(70," ")

        【讨论】:

          猜你喜欢
          • 2013-08-20
          • 2011-08-14
          • 2023-03-20
          • 2023-01-05
          • 2015-05-22
          • 1970-01-01
          • 2018-04-30
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多