2013-03-25 3 views
-1

На Python 3 Я пытаюсь написать функцию format_list(items), которая принимает список items, содержащий 1 или 2 строковых элемента, и возвращает строку, содержащую элементы. Предположим, что передаваемый список всегда будет содержать один или два элемента (т. Е. Он не будет пустым и не будет содержать более двух элементов).python - форматирование условного списка

условия являются:

  1. Если список содержит один элемент, этот элемент возвращается функцией, без изменений.
  2. Если список содержит два элемента, они возвращаются в одной строке с первым элементом, который выравнивается в поле шириной 10, за которым следует вертикальная полоса ('|'), за которой следует второй элемент, который выравнивается справа в поле width 10. Вы можете предположить, что элементы представляют собой строки длиной не более 10 символов.

Так print(format_list(['abc'])) будет производить:

abc 

И print(format_list(['Dave', '14'])) будет производить:

Dave | 14 

Я понятия не имею, где даже начать ....

+1

вы можете начать с [Python документации] (http://docs.python.org/ 3.3/library/stdtypes.html) – Serdalis

+1

, в частности, ['format'] (http://docs.python.org/3.3/library/stdtypes.html#str.format) – georg

+0

Спасибо, я прочитал его раньше, но, возможно, Мне нужно обновить ... – jevans

ответ

0
def format_list(l): 
    if len(l)==1: return l[0] 
    else: 
     return '{:<10}|{:>10}'.format(l[0],l[1]) 

for l in [['abc'],['Dave', '14']]:   
    print(format_list(l)) 

печать:

abc 
Dave  |  14 

Посмотрите на метод .format и .format mini language.

+0

Не правильно выравнивает второй элемент списка. –

+0

Теперь это центрирование ... –

+0

@EthanFurman: Как и я, я не хотел его искать. Исправлено: – dawg

1

Это звучит как домашнее задание, так что пару подсказок, чтобы вы собираетесь:

  • % formatting (например "Hello %s!" % some_var ->"Hello World!" если some_var == "World")

  • len(some_list) -> количество элементов в списке

О, и так как я не хочу его искать:

"%10s" % 'word' ->......word (точка является пространством)

"%-10s" % 'word' ->word......

-1
def format_list(my_list) 
    try: 
     return my_list[0].ljust(10) + '|' + my_list[1].rjust(10) 
    except IndexError: return my_list 
+0

Это не дает первого условия: он должен возвращать единственный элемент, а не сам список. –

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