2013-03-25 62 views
-1

在Python 3中,我试图写一个函数format_list(items)是采用含有1个或2串元素的列表items并返回包含元素的字符串。 假设被传递的列表将总是包含一个或两个元素(即,它不会是空的,它不会包含两个以上的元素)。蟒蛇 - 条件列表格式

的条件是:

  1. 如果列表中包含一个单一的元素,该元素是由函数返回,持平。
  2. 如果列表中包含两个元素,它们是在一个单一的字符串与第一元件返回左对齐在宽度10,然后由垂直杆(“|”)的字段之后是第二元件中的一个字段右对齐宽度10.您可以假定元素是每个字符最多10个字符的字符串。

所以print(format_list(['abc']))会产生:

abc 

而且print(format_list(['Dave', '14']))会产生:

Dave | 14 

我不知道在哪里甚至开始....

+1

可以用[Python文档]启动(http://docs.python.org/ 3.3 /库/ stdtypes.html) – Serdalis 2013-03-25 22:00:03

+1

更具体地,['format'](http://docs.python.org/3.3/library/stdtypes.html#str.format) – georg 2013-03-25 22:03:30

+0

谢谢,我以前但也许读它我需要一个复习... – jevans 2013-03-25 22:34:53

回答

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

不正确的第二个列表项目的理由。 – 2013-03-25 22:06:19

+0

现在它的中心... – 2013-03-25 22:13:33

+0

@EthanFurman:像你一样,我不想看它。固定 – dawg 2013-03-25 22:16:32

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

这失败了第一个条件:它应该返回单个元素,而不是列表本身。 – 2014-02-12 20:55:13