2012-03-13 6 views
0

私はPythonで在庫を計算するためのプログラムを作成しましたが、レイアウト出力の書式設定に問題があります。私がこれまで行ってきたことは次の通りです。forループまたは別のPythonメソッドで出力を整形する

def summary(a,b,c,row,col,tot): 
    d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"} 
    for i in range(row): 
     for j in range(col): 
      print "%6d" %(a[i][j]), 
     print "%s%6d\n" %(d[i],(b[i])), 
    print "\n" , 
    for j in range(col): 
     print "%6d" %(c[j]), 
    print "%6d\n" %tot 

出力は7 x 4マトリックスになり、合計は右側と合計になります。しかし、私は辞書を使いましたが、私は何を得ているのかは、行の合計の直前に右手側にあるように、小さなものなどの特定の名前を表すために左手にいくつかの名前を入れたいと思います。私は数字と同じ行の左手にどのように置くことができるのか分かりません。私は数(行列)から離れて1つは中央の最初の一番左の列のサイズになり、次に二番目の列名にはuが辞書で使用されている指定を見ることができます。同じ行

ご協力いただきありがとうございます。私は、Pythonで在庫を計算するプログラムを行ったが、私はレイアウトの出力をフォーマットする問題があります。私がこれまでに行っていることである。

def summary(a,b,c,row,col,tot): 
    d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"} 
    for i in range(row): 
     for j in range(col): 
      print "%6d" %(a[i][j]), 
     print "%s%6d\n" %(d[i],(b[i])), 
    print "\n" , 
    for j in range(col): 
     print "%6d" %(c[j]), 
    print "%6d\n" %tot 

ので、出力は右側に、列の合計で7×4行列との合計が来ます。しかし、私は辞書を使いましたが、私は何を得ているのかは、行の合計の直前に右手側にあるように、小さなものなどの特定の名前を表すために左手にいくつかの名前を入れたいと思います。私は数字と同じ行の左手にどのように置くことができるのか分かりません。私は数(行列)から離れて1つは中央の最初の一番左の列のサイズになり、次に二番目の列名にはuが辞書で使用されている指定を見ることができます。同じ行

ご協力いただきありがとうございます。

私はそれが1 1 1 1 1 1 1 7

xlarge 1 1 1 1 1 1 1 7 
     4 4 4 4 4 4 4 28 

大この

small 1 1 1 1 1 1 1 7 
medium 1 1 1 1 1 1 1 7 

サイズに見えるようにしたいと私は

1 1 1 1 1 1 1小さなを取得7

1111111111媒体7

1 1 1 1 1 1 1大7

1 1 1 1 1 1 1 XLARGE 7

十分以前に特定されていないため申し訳ありません。

+0

実際に手作業で作成し、実際に得られたものと比較することで、出力をどのように見せたいかを表示できますか? –

+0

ええ、これが何であるか、a、b、c、行、col、およびtotが何を参照しているか説明してください。彼らの文脈は何ですか?これはいつ呼び出されますか? –

答えて

0

::これは、あなたが最初の列は左揃えたいと仮定し

def summary(a,b,c,row,col,tot): 
    d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"} 
    for i in range(row): 
     print d[i].ljust(6), 
     for j in range(col): 
      print "%6d" %(a[i][j]), 
     print "%6d\n" %(b[i]), 
    print "\n" , 
    for j in range(col): 
     print "%6d" %(c[j]), 
    print "%6d\n" %tot 

のようにフォーマットする前に、説明 - 「」の名前は、あなたが追加する必要があり、調整したまま。右寄せ(rjust())とセンタリング(center())も利用できます。

また、連続した数値インデックスを使用しているだけなので、辞書の代わりにリストを使うこともできます。

補助的な変数は決して悪いことではありません。また、thisによれば、%フォーマットは廃止されており、新しいプログラムではformat()メソッドを使用する必要があります。

0

あなただけの「%s」は、正しい位置に適切な変数を移動する必要があります(あなたがそれらを交換します、これは単なるテストの数字であることに注意して、これを呼び出すとき

def summary(a,b,c,row,col,tot): 
    d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"} 
    for i in range(row): 
     print "%8s" % d[i], 
     for j in range(col): 
      print "%6d" %(a[i][j]), 
     print "%6d\n" % ((b[i])), 
    print "\n" , 
    print "%8s" % " ", 
    for j in range(col): 
     print "%6d" %(c[j]), 
    print "%6d\n" %tot 

をあなたがしたい場合

Small  1  2  3  4  5  6  7  12 
    Medium  1  2  3  4  5  6  7  13 
    Large  1  2  3  4  5  6  7  14 
    Xlarge  1  2  3  4  5  6  7  15 

      22  23  24  25  26  27  28 7777 

:本物):

summary([[1, 2, 3, 4, 5, 6, 7], 
     [1, 2, 3, 4, 5, 6, 7], 
     [1, 2, 3, 4, 5, 6, 7], 
     [1, 2, 3, 4, 5, 6, 7]], [12, 13, 14, 15], 
     [22, 23, 24, 25, 26, 27, 28], 4, 7, 7777) 

あなたのような何かを得ますただ、行の前にそれを印刷

  print "%-8s" % d[i],