【パイソン3.1】
編集:元のコードの間違い。
表を印刷する必要があります。最初の行はヘッダーで、タブで区切られた列名で構成されます。次の行にはデータが含まれている必要があります (これもタブ区切り)。
明確にするために、「速度」、「パワー」、「重量」の列があるとしましょう。以前に尋ねた関連する質問の助けを借りて、最初に次のコードを作成しました。
column_names = ['speed', 'power', 'weight']
def f(row_number):
# some calculations here to populate variables speed, power, weight
# e.g., power = retrieve_avg_power(row_number) * 2.5
# e.g., speed = math.sqrt(power) / 2
# etc.
locals_ = locals()
return {x : locals_[x] for x in column_names}
def print_table(rows):
print(*column_names, sep = '\t')
for row_number in range(rows):
row = f(row_number)
print(*[row[x] for x in component_names], sep = '\t')
しかし、可能であれば使用を避けるlocals()
べきであることを学びました。
今、私は立ち往生しています。すべての列名のリストを複数回入力したくありません。f()
内部で作成するすべての辞書が同じ順序でキーを反復処理する可能性が高いという事実に依存したくありません。そして、私は使いたくありませんlocals()
。
print_table()
関数とf()
は他の多くのことを行うことに注意してください。だから私はそれらを別々に保つ必要があります。
コードはどのように書けばよいですか?