2016-07-20 3 views
1

Так что я пытаюсь сделать здесь три вещи. 1. Получите инструкцию для печати ниже 16 пробелов 2. Отрежьте лишние значки на стороне eiter имени, которые вызывают его длиннее 16. 3. Центрируйте текст так, чтобы равное количество знаков = либо сбоку от названияИспользование .format() для печати строки, которая не превышает определенное количество пробелов и центрируется?

Это моя попытка ...

import random 

name_list = ['Joe','Phil','Frank','Daniel'] 
name_choice = random.choice(name_list) 
name_string = '======| {0} |======'.format(name_choice) 
print('{0:.16}'.format(name_string)) 

======| Phil |== # Result 
====| Phil |==== # What I want 

ответ

0

Добавление | {0} | форматированию в simon.sim's answer дает желаемый выводе операционного Показанные на вопрос:

import random 

def extra_format(text): 
    return '{0:=^16}'.format(text) 

name_list = ['Joe','Phil','Frank','Daniel'] 
name_choice = random.choice(name_list) 
print(extra_format('| {0} |'.format(name_choice))) # ====| Phil |==== # What I want 
+0

Спасибо всем! – BigBoi

0

Вы можете определить функцию, которая будет возвращать ваш желаемый результат:

def heading(text): 
    return '{0:=^16}'.format(text) 
heading(name_choice) 

Обратите внимание, что если один из имена в списке длиннее 16 символов, эта функция вернет полное имя, без знаков =.

+0

Этот ответ работает очень хорошо, но выход '====== ====== Phil' отсутствует пробел и '' 'символы, окружающие name_choice, такие как OP, заданные в вопросе' ==== | Phil | ==== # Что я хочу? – davedwards

+0

Awesome Спасибо! – BigBoi

0

Вы должны изменить print('{0:.16}'.format(name_string)) на print('{0:16}'.format(name_string)), тогда он будет работать.

+0

Нет, ширина * минимальная *. Точность определяет максимум. –

 Смежные вопросы

  • Нет связанных вопросов^_^