3

Python 提供了一个名为 len 的内置函数,它返回字符串的长度,因此 的len('allen')值为5

编写一个名为的函数right_justify,它接受一个名为的字符串s作为参数,并打印带有足够前导空格的字符串,以便字符串的最后一个字母在显示的第 70 列中。

>>> right_justify('allen')
                                                       allen

我是这样解决的:

def right_justify(s):
    print "                                                                 " + s    

right_justify('allen')

这样对吗?

是否有内置的 Python 方法来做我需要做的事情?

4

15 回答 15

8

字符串格式化很容易:

def right_justify(s):
    print "%70s" % s
于 2012-11-18T13:20:20.990 回答
3

使用format

In [60]: strs="allen"

In [61]: format(strs,">70s")
Out[61]: '                                                                 allen'

In [62]: format(strs,">70s").index('n')
Out[62]: 69

或使用str.format

In [68]: "{0:>70s}".format(strs)
Out[68]: '                                                                 allen'
于 2012-11-18T13:24:58.313 回答
3

当然,您可以在这里应用一个巧妙的小技巧:

def right_justify(s, total_length=70):
    return ' ' * (total_length - len(s)) + s

如果不是很清楚,这将打印出 total_length - s 个空格的长度。

于 2012-11-18T13:19:27.853 回答
1
def right_justify(s):
    print ('')
    print ('Number of chars: ' + str(len(s)))
    print ('')
    print (' '* (70 - len(s)) + s)

word = input('Enter any word: ')
right_justify(word)
于 2017-05-30T11:34:14.907 回答
1
def right_justify(s):
    print len(s)
    print ' '* (70 - len(s)) + s

word = raw_input('enter any word')
right_justify(word)
于 2016-11-18T00:02:04.807 回答
0
     def right_justify(s):
         print((70-len(s))*' '+s)
于 2013-06-15T19:52:44.360 回答
0

我不会为你做作业,但这里有一个简单的算法:

  1. 找出你的字符串有多长(提示:)len()

  2. 找出你需要打印多少个空格(提示:如果你的字符串是 5 个字符并且总长度应该是 70,你想打印 65 个空格)。

  3. 打印空格。

  4. 打印字符串。

于 2012-11-18T13:17:14.777 回答
0

这是工作代码

    def right_justify(s):

    length = len('s')

    spaces = 70 - length 
    print "required space is",spaces

    print(" " * spaces) + s

right_justify('allen')

输出

required  space is  69
                                                                     allen
于 2018-03-11T18:10:02.410 回答
0
def right_justify(s):
    length =len(s)
    spaces = 70-length
    print((" " * spaces) + s)

word = "monty"
right_justify(word)

定义后,长度取决于选择的单词,而不是(s)......所以你创建了公式。长度、空格和打印应缩进。必须发明一个变量,以便单词可以从 str 转换为变量格式。

于 2017-11-28T11:42:47.967 回答
0

为了让最后一个字母出现在第 70 列中,您需要s从 70 中减去 的长度,如下所示

def right_justify(s):
    print(" " * (70 - (len(s)) + s)
于 2018-08-18T21:22:38.653 回答
0
def right_justify (s):
    x = ' '
    w = (70-len(s))*x + s
    print (w)
于 2017-10-04T02:26:03.827 回答
0

也许我误读了这个问题,但如果变量是一个字符长,似乎给出的答案只会给出正确的结果。我对编码也很陌生,所以这可能有点离谱。

def right_justify(s):
        length = len(s)
        adjustedLength = len(s) -1
        spaces = 70 - length + adjustedLength
        print(spaces * " " + "s")


s = "whatever you want to enter"
right_justify(s)

我这样做了,所以无论 s 被定义为什么,你都会得到 69 个空格,然后是“s”。

如果这是错误的,请告诉我,以便我可以调整我的思维方式。

于 2017-10-17T19:33:23.880 回答
0
def right_justify(s):
...  length=len(s)
...  spaces=70-length
...  print (' ' * spaces) + s
...
>>> right_justify('allen')
于 2017-02-11T06:12:16.087 回答
0

我会做这样的事情,这是许多简单的方法之一:

def right_just(s):    
    print(s.rjust(70))

right_just('allen')
于 2018-06-30T04:26:02.140 回答
0

Just thought of yet another way to make it more dynamic :)

Function

def right_justify(s,num):

print(s.rjust(num))

Call Function

right_justify("Allen",50)

于 2018-06-30T04:32:10.243 回答