0

プログラムは何行で起動しますか?何列ですか?各列の配置?(左(L)、中央(C)、右(R))。次に、ユーザーからのエントリ(テーブル内のデータ)を受け入れます。エントリは、ユーザーが指定した形式で印刷する必要がありますか?これが私がこれまでにしたことです:

rows = input("How many rows?")
coloumns = input("How many coloumns?")
alignment = raw_input("Enter alignment of each table?")
entry = raw_input("Enter rows x cols entries:")
print entry

ユーザーが望む通りに出てくるようにエントリーをフォーマットする必要があると思います。どうすればいいですか?ありがとう

4

1 に答える 1

0

http://ginstrom.com/scribbles/2007/09/04/pretty-printing-a-table-in-python/から参照されているこのコードブロックが役立ちます。

import locale
locale.setlocale(locale.LC_NUMERIC, "")
def format_num(num):
    """Format a number according to given places.
    Adds commas, etc. Will truncate floats into ints!"""

    try:
        inum = int(num)
        return locale.format("%.*f", (0, inum), True)

    except (ValueError, TypeError):
        return str(num)


def get_max_width(table, index):
    """Get the maximum width of the given column index"""
    return max([len(format_num(row[index])) for row in table])

def pprint_table(out, table):
    """Prints out a table of data, padded for alignment
    @param out: Output stream (file-like object)
    @param table: The table to print. A list of lists.
    Each row must have the same number of columns. """
    col_paddings = []

    for i in range(len(table[0])):
        col_paddings.append(get_max_width(table, i))

    for row in table:
        # left col
        print >> out, row[0].ljust(col_paddings[0] + 1),
        # rest of the cols
        for i in range(1, len(row)):
            col = format_num(row[i]).rjust(col_paddings[i] + 2)
            print >> out, col,
        print >> out


table = [["", "taste", "land speed", "life"],
    ["spam", 300101, 4, 1003],
    ["eggs", 105, 13, 42],
    ["lumberjacks", 13, 105, 10]]

import sys
out = sys.stdout
pprint_table(out, table)

あなたの場合、行、列、配置、およびエントリの入力をテーブルに収集しているので、それらをプラグインしてtable変数を作成できます。

  • len(table [0])は、列の数に相当します(「y軸」ラベルでカウントされないように-1、テーブルインデックスとも呼ばれます)。
  • len(table)は、行数に相当します(テーブルヘッダーでカウントされないように-1)。
  • col_padding(alignment)は、特定の列を計算する際に、メソッドを使用して動的に計算さrjustljustます。
  • また、テーブルリストの各要素は、標準のPythonリスト構文を使用して更新できます。
于 2012-11-05T02:35:08.143 に答える