2015-03-28 3 views
0

Здравствуйте, я сейчас пишу игру на питоне, и в какой-то момент он помещает имя пользователя в тег имени, однако я столкнулся с проблемой.Модуль создания тегов имен

например.

def name_tag(name): 
printf("____________") 
printf("|## {} ##|".format(name)) 
printf("|__________|") 

Предполагая, что он работает

___________ 
|##Sarah##| 
|_________| 

Это не будет работать на слово, которое имеет длину длиннее или короче, чем «Сара»

___________ 
|##Joshua##| 
|_________| 

Это происходит потому, что дополнительные/меньше буквы вставляют и вводят границу. Кто-нибудь знает, как это исправить?

+0

Можете ли вы добавить соответствующий код? – belwood

ответ

1

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

def name_tag(name): 
    name_len = min(len(name), 80) 
    print '-' * (name_len + 8) 
    print '|## {} ## |'.format(name[:name_len]) 
    print '-' * (name_len + 8) 


>>> name_tag('Sarah') 
------------- 
|## Sarah ## | 
------------- 
>>> name_tag('JT') 
---------- 
|## JT ## | 
---------- 
>>> name_tag('An improbably long name for an example') 
---------------------------------------------- 
|## An improbably long name for an example ## | 
---------------------------------------------- 

Edit: адаптирование выше, чтобы соответствовать форматирование в коде, публикуемую:

def name_tag(name): 
    name_len = min(len(name), 80) 
    print '_' * (name_len + 8) 
    print '|## {} ## |'.format(name[:name_len]) 
    print '|{}|'.format('_' * (name_len + 6))