2017-02-28 8 views
-6

私はこのコードブロックを使用して、データベースから取得したデータを見やすく整理された形式に並べ替えます。しかし、私はどのようにそれがきちんとしたテーブルとして表示されるように追加する間隔を見つけるのか分かりませんし、説明が欲しいです。このコードはどのように情報を並べて表示しますか?

誰かが行ごとに行を移動して、各行が何をしているかを明示的に教えてください。

def record_disp(info): 
a=[list(x) for x in info] 
table=[]  
lens=[] 
for x in range(len(a[0])): 
    maxlen=0 
    for y in range(len(a)): 
     maxlen=len(str(a[y][x])) if len(str(a[y][x]))>maxlen else maxlen 
    lens.append(maxlen) 
for x in range(len(a)): 
    for y in range(len(a[x])): 
     print(str(a[x][y])+(" "*(lens[y]-len(str(a[x][y])))),end=" |") 
    print() 
+6

SOはチュートリアルサービスではないため、このトピックをトピックとしてクローズすることにしました。 – TigerhawkT3

+1

"すぐに"ボランティアに対処する方法はないので、私はこの質問をd​​ownvotingしています。 – halfer

+1

スタックオーバーフローは、特定のプログラミング問題やソフトウェアアルゴリズム、またはプログラマーが一般的に使用するソフトウェアツールについて質問するためのもので、ソフトウェア開発に特有の実用的で解決しやすい問題です。 これがあなたの望みでない場合は、http://codereview.stackexchange.com/ –

答えて

1

、および:行が

にライン13をラインアップ未使用行を削除する:

def record_disp(info): #define a function that takes the input data, info 
    a=[list(x) for x in info] #turn the input list into a list of lists 
    lens=[]  # make an empty list to store max lengths 

    #loop with x values from 0 to length of first list 
    for x in range(len(a[0])): 
     # get the longest item 
     maxlen=0 
     for y in range(len(a)): 
      maxlen=max(len(str(a[y][x])), maxlen) 
     lens.append(maxlen) 
    #for every item print it out table, formatting with spaces 
    for x in range(len(a)): #for each row 
     for y in range(len(a[x])): # for each column index in the row 
      # the previously calculated column width (lens[y]) 
      # is used to work out the number of spaces needed 
      spacing_needed = lens[y]-len(str(a[x][y])) 
      # print one cell, spacing it out and delimiting with | 
      print(str(a[x][y])+" "*spacing_needed,end=" |") 
     print() # adds a newline at the end of the row 
0

この質問は実行されないため、形式が正しくありません。とにかく、行1行ずつ

それを取ること:コード

ライン2を通じて実行できる機能を定義しています

3行& 4リストにリスト情報にオブジェクトxをキャストします。テーブルとレンズと呼ばれる空のリストを作成します

行5:forループを作成します。 range関数は、数値そのもの(例えば、range(4)= [0,1,2,3])の上にリストを作成します。 LENリスト

ライン6のlegnthを与える:ライン5

様ループの別の行8:一時vairable MAXLEN = 0(反復ごとにリセットされる)

ライン7を設定

ライン9:レンズリスト上にMAXLENを追加

行10:forループ別 - 上記と同じ考え方が、この時、リストの長さではなく、[0]

行11:各変数をループ

行12:最大文字列の長さから現在の文字列の長さ( "")プラス追加の "|"最後に。これは基本的にすべてを得る大規模なファッジです|私は、複雑なコードを分割し、理解しやすくなり、これを書き換えてきました。このコードは、各1

の間にスペースを印刷することは不必要に複雑である...

+0

誰かが上記の回答(特にダウン投票者)をどのように向上させることができると言いたいのですか?私はそれを聞いてみたいと思います。ありがとうございました! –

+0

私は、不必要に複雑であることに同意します。主に、単純にリストアイテムを反復するのではなく、インデックスを介して間接的に反復するためです。私はOPで書かれていないコードの説明を求める質問は一般的に歓迎されていないので、あなたがdownvoteを持っていると思う。 –

関連する問題