Ответ 1
С Python2.6 или выше нет необходимости определять вашу собственную функцию; метод format может сделать все это для вас:
In [18]: '{s:{c}^{n}}'.format(s='dog',n=5,c='x')
Out[18]: 'xdogx'
Я должен определить функцию pad_with_n_chars(s, n, c)
, которая принимает
string 's', целое число 'n' и символ 'c' и возвращает
строка, состоящая из 's', дополненная 'c' для создания
строка с центрированным 's' длины 'n'. Например,
pad_with_n_chars("dog", 5, "x")
должен вернуть
строка "xdogx
".
С Python2.6 или выше нет необходимости определять вашу собственную функцию; метод format может сделать все это для вас:
In [18]: '{s:{c}^{n}}'.format(s='dog',n=5,c='x')
Out[18]: 'xdogx'
Похоже, вы ищете только указатели, а не полное решение. Итак, вот один:
Вы можете размножать строки в python:
>>> "A" * 4 'AAAA'
Кроме того, я бы использовал лучшие имена, вместо s я бы использовал текст, который намного яснее. Даже если ваш нынешний профессор (я полагаю, вы изучаете Python в университете) использует такие ужасные сокращения.
print '=' * 60
header = lambda x: '%s%s%s' % ('=' * (abs(int(len(x)) - 60) / 2 ),x,'=' * (abs(int(len(x)) - 60) / 2 ) )
print header("Bayors")
Хорошо, так как это вопрос домашней работы, вы, вероятно, не поймете, что происходит, если вы используете "батареи", которые включены.
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'
Да, просто используйте ljust или rjust для выравнивания по левому краю (правый правый) и правого выравнивания (pad left) с любым заданным символом.
Например... чтобы сделать '111' 5-значной строкой, дополненной 'x'es
В Python3.6:
>>> '111'.ljust(5, 'x')
111xx
>>> '111'.rjust(5, 'x')
xx111
>>> 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']
Я думаю, вы должны быть в состоянии определить первый ключ здесь...