2

別の関数から既に作成されたパラメーターとしてリストを受け入れる関数があります。リストは列行形式で印刷されます。この関数は、リストの最初の項目に列タイトルが含まれ、リストの残りの部分に値が含まれていると想定する必要があります。このshowList()関数は、スペースまたはタブで区切られた 2 ~ 5 列のリストをきれいに表示できる必要があります。ほとんどの場合、かなりうまく機能しますが、一覧表示する国が複数ある場合は、一覧表示されるのは 1 つだけです。これがどのように見えるかの例です:

Country  Gold   Silver Bronze
(this space is actually a sequence of equal signs to represent a heading line)
United States 765    555    780
Great Britain 600  200      950
def showList(returned_List):
    header = '     '
    line = ''
    entries = ''
    for i in returned_List[0]:
        header += i + (' ')*5
    for k in range(len(header)):
        line += '='
    for j in returned_List[1]:
        entries += j +(' ')*5
    print(header, '\n', line, '\n', entries)
    return(returned_List)
4

2 に答える 2

1

returned_listハードコーディングする代わりに、行をループするだけで済みますreturned_list[0]

def showList(returned_List):
    header = '     '
    line = ''
    entries = ''
    for row in returned_list:
        for i in row:
            header += i + (' ')*5
        for k in range(len(header)):
            line += '='
        for j in returned_List[1]:
            entries += j +(' ')*5
        print(header, '\n', line, '\n', entries)
        return(returned_List)

あなたのコメントから、私はあなたが探しているものをちょっと見ます。これは、私がしばらく前に書いたスクリプトの適応であり、あなたを助けるでしょう:

def tabularize(inData, outfilepath):
    """ Return nothing
        Write into the file in outfilepath, the contents of inData, expressed in tabular form.
        The tabular form is similar to the way in which SQL tables are displayed.
    """

    widths = [max([len(row) for row in rows])+2 for rows in izip_longest(*inData, fillvalue="")]

    with open(outfilepath, 'w') as outfile:
        outfile.write("+")
        for width in widths:
            outfile.write('-'*width + "+")
        outfile.write('\n')
        for line in lines:
            outfile.write("|")
            for col,width in izip_longest(line,widths, fillvalue=""):
                outfile.write("%s%s%s|" %(' '*((width-len(col))/2), col, ' '*((width+1-len(col))/2)))
            outfile.write('\n+')
            for width in widths:
                outfile.write('-'*width + "+")


outfile.write('\n')

if __name__ == "__main__":
    print 'starting'

    tabularize(infilepath, outfilepath, '...', False)

    print 'done'

お役に立てれば

于 2013-07-18T21:24:47.620 に答える