Как заполнить n символов в Python

Я должен определить функцию pad_with_n_chars(s, n, c), которая принимает string 's', целое число 'n' и символ 'c' и возвращает строка, состоящая из 's', дополненная 'c' для создания строка с центрированным 's' длины 'n'. Например, pad_with_n_chars("dog", 5, "x") должен вернуть строка "xdogx".

Ответы

Ответ 1

С Python2.6 или выше нет необходимости определять вашу собственную функцию; метод format может сделать все это для вас:

In [18]: '{s:{c}^{n}}'.format(s='dog',n=5,c='x')
Out[18]: 'xdogx'

Ответ 2

Похоже, вы ищете только указатели, а не полное решение. Итак, вот один:

Вы можете размножать строки в python:

>>> "A" * 4
'AAAA'

Кроме того, я бы использовал лучшие имена, вместо s я бы использовал текст, который намного яснее. Даже если ваш нынешний профессор (я полагаю, вы изучаете Python в университете) использует такие ужасные сокращения.

Ответ 3

print '=' * 60
header = lambda x: '%s%s%s' % ('=' * (abs(int(len(x)) - 60) / 2 ),x,'=' * (abs(int(len(x)) - 60) / 2 ) )
print header("Bayors")

Ответ 4

Хорошо, так как это вопрос домашней работы, вы, вероятно, не поймете, что происходит, если вы используете "батареи", которые включены.

def pad_with_n_chars(s, n, c):
    r=n - len(s)
    if r%2==0:
       pad=r/2*c
       return pad + s + pad
    else:
       print "what to do if odd ? "
       #return 1
print pad_with_n_chars("doggy",9,"y")

В качестве альтернативы, когда вы больше не учитесь.

>>> "dog".center(5,"x")
'xdogx'

Ответ 5

Да, просто используйте ljust или rjust для выравнивания по левому краю (правый правый) и правого выравнивания (pad left) с любым заданным символом.

Например... чтобы сделать '111' 5-значной строкой, дополненной 'x'es

В Python3.6:

>>> '111'.ljust(5, 'x')
111xx

>>> '111'.rjust(5, 'x')
xx111

Ответ 6

>>> dir(string)

['Formatter',
 'Template',
 '_TemplateMetaclass',
 '__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 '_float',
 '_idmap',
 '_idmapL',
 '_int',
 '_long',
 '_multimap',
 '_re',
 'ascii_letters',
 'ascii_lowercase',
 'ascii_uppercase',
 'atof',
 'atof_error',
 'atoi',
 'atoi_error',
 'atol',
 'atol_error',
 'capitalize',
 'capwords',
 'center',
 'count',
 'digits',
 'expandtabs',
 'find',
 'hexdigits',
 'index',
 'index_error',
 'join',
 'joinfields',
 'letters',
 'ljust',
 'lower',
 'lowercase',
 'lstrip',
 'maketrans',
 'octdigits',
 'printable',
 'punctuation',
 'replace',
 'rfind',
 'rindex',
 'rjust',
 'rsplit',
 'rstrip',
 'split',
 'splitfields',
 'strip',
 'swapcase',
 'translate',
 'upper',
 'uppercase',
 'whitespace',
 'zfill']

Я думаю, вы должны быть в состоянии определить первый ключ здесь...