2016-03-20 14 views
2

Kodumda, boşluk ile ilgili bir sorun yaşıyorum ve ayrıca her satırın uzunluğunu yeni bir satıra sahip olduğumu bildiğim şekilde belirlemek için bir yol buluyorum. Sütunlar tek bir dikey çubukla ayrılır '|'; ve dikey çubuktan önce ve sonra tam olarak bir boşluk olmalıdır; o Her satır bir dikey çubukla başlar ve biter; ve orada lider bar sonra tam olarak bir boşluk olmalı ve bitiş çubuğu önce bu var bugüne kadar benim kodudur gerekir:işlev def gösterisi show_table oluşturun ve 2B tablosunu temsil eden biçimlendirilmiş bir dizgi döndürün

def show_table(table): 
    string = '' 
    for i in table: 
     for j in range(len(i)): 
      line = i[j] 
      string += "{}".format(line) + "|" 

    return "|" + string +"\n" 

tek Kısıtlama yok: Eğer dize biçimlendirme, ya veya% .format kullanmalıdır(). Aşağıda bir örnek listelerinin Bu bir listesi örneği olduğunu:

>>> show_table([['A','BB'],['C','DD']]) 
'| A | BB |\n| C | DD |\n' 
>>> print(show_table([['A','BB'],['C','DD']])) 
| A | BB | 
| C | DD | 
+0

görünüyor:

def show_table(table): string = '' for line in table: for item in line: string += '| {} '.format(item) string += '|\n' return string 

bir daha kompakt bir yol liste anlama kullanmaktır. Bu tamamen isteğe bağlı olsa da, lütfen sorunuzun gelecekteki okuyucularına yardımcı olmak için özelliği kullanmayı düşünün. – timgeb

cevap

2

Kodunuz oldukça yakın olmakla birlikte, dikey çubuklar etrafında uygun boşluk yok ve sen işlememesi Tablodaki her satırın sonu.

Sütunların genişliği hakkında endişelenmenize gerek yoktur çünkü ödev tanımlamanız liste öğeleri ile dikey çubuklar arasında tam olarak bir boşluk bırakacak.

Aşağıda, kodunuzun en az değişiklikle onarılmış bir sürümü verilmiştir.

def show_table(table): 
    string = '' 
    for i in table: 
     for j in range(len(i)): 
      line = i[j] 
      string += '| {} '.format(i[j]) 
     string += '|\n' 

    return string 

print(show_table([['A','BB'],['C','DD']]))  

çıkış

| A | BB | 
| C | DD | 

Oldukça dolaylı yineleme listesi dizini kullanmak yerine, bir liste üzerinde doğrudan yinelemenizi fazla Pythonic bu. Eğer sorulara herhangi bir cevap asla kabul gibi

def show_table(table): 
    return ''.join(['| {} |\n'.format(' | '.join(row)) for row in table]) 
+0

Geçmediğim başka bir test vakam var, buna benziyor '| A | B | \ n | CCC | DDD | \ n ', A ve B'nin dikey çubukun sonuna kadar olan harf arasında en az üç boşluk bulunduğu. Bunu nasıl ayarlayabilirim? – brian012

+0

@ brian012: "Dikey çubuktan önce ve sonra tam olarak bir boşluk olmalı; her satır dikey bir çubukla başlayıp bitiyorsa ve çıkış çubuğundan önce ve bitiş çubuğundan önce tam olarak bir boşluk olmalı" . –

İlgili konular