2013-03-25 61 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