2017-01-19 4 views
3

私はPython(3.x)の初心者です。これは私の最初の投稿です。タプルを解凍して特定の形式で印刷しようとしています。かなり正しい)。ここで私が持っているものです。タプルを解凍して印刷する方法

w = 45667.778 
x = 56785.55 
y = 34529.4568 
z = 789612.554 

nums = (w, x, y, z) 
hdr62 = '{:>15} {:>15} {:>15} {:>15}' 

print(tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums)) 

何/どのように私は解凍してからタプルを印刷するhdr62形式を使用するように変更しますか?

+0

hdr62形式の説明へのリンクを追加できますか? – glibdud

+0

hdr62はスペーシング形式で、上の "nums"のすぐ下に定義されています。 – Dennis

+0

Heh ...ここで私は聞いたことがないいくつかの標準だと思ってhdr62をグーグルしています。早すぎる... – glibdud

答えて

1

以下の質問とコメントに基づいて、まずタプルの理解を使用して数字を書式設定してから、書式設定を呼び出すことができます。 formatコールがそのように、アスタリスク(*)で行うことができます。

nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums) 
print(hdr62.format(*nums2)) 

関数を呼び出すと、アスタリスクを使用する場合は、カーテンの後ろに(シーケンスでなければなりません)パラメータは、Pythonはシーケンスとフィードをアンパックそれ別のパラメータとして、この場合はよう:

nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums) 
print(hdr62.format(*nums2)) 

と同等です:

nums2 = tuple('${:,.0f}'.format(num).rjust(12, ' ') for num in nums) 
print(hdr62.format(nums[0],nums[1],nums[2],nums[3])) 
+0

申し訳ありませんが、私はあまりにも多くの初心者のあなたの答えを理解しています。上記のprintステートメントを使用して4つの変数を出力しようとしていますが、スペースhdr62を使用しています。 – Dennis

+0

@Dennis:更新プログラムが助けてくれることを祈っていますか? –

+0

印刷する番号の正しい書式を得るには、どこに '$ {:、.0f}'を追加しますか? – Dennis

3

たぶん私は欠けているものが、あなたの場合J USTはhdr62フォーマットに従ってタプルnumsをフォーマットしたい場合、あなたはそれにstr.formatを呼び出し、アンパックタプルとして数字に渡すことができます。

>>> print(hdr62.format(*nums)) 
     45667.778  56785.55  34529.4568  789612.554 

あなたが実際に最初のタプル項目に別のフォーマットを実行する場合

>>> ['${:,.0f}'.format(n) for n in nums] 
['$45,668', '$56,786', '$34,529', '$789,613'] 
>>> print(hdr62.format(*['${:,.0f}'.format(n) for n in nums])) 
     $45,668   $56,786   $34,529  $789,613 
+0

poke - perfect !!!すべて1行のコードで - ありがとう – Dennis

関連する問題