2016-10-31 16 views
2
print("%-10s %-15s $%8.2f %8.2f %10.2f" % (first_name[i], last_name[i], 
       pay_rate[i], hours[i], calculate_pay(hours[i], pay_rate[i]))) 

これは既に解決済みの場合は丁寧に記述してください。私はそれを見つけることができなかったし、Pythonとプログラミングに新しいです。変換指定子のパディング内にシンボルを配置する

私は数字(浮動小数点数)の横にドル記号を表示しようとしています。これは、 '$'と数字の間にスペースを入れる代わりに、パディングの内側にあります。

所望の出力:

Please enter your first name(leave blank to quit): daniel 
Please enter your last name: johnson 
Please enter your hourly pay: 15 
Please enter your hours: 40 
Please enter your first name(leave blank to quit): 
John  Smith    $10.00 40.00  $400.00 
Daniel  Johnson   $15.00 40.00  $600.00 
+2

出力例が役立ちます。 – Marcin

+0

最初に '$'(つまり '$ 25.00')で文字列を作成し、後でそれをあなたのフォーマット文字列の引数として使用します。 – furas

答えて

0

山車が右に揃えているので、あなたがそのスペースを持っています。新しいスタイルのフォーマットで

>>> '$%8.2f' % 4.0 
'$ 4.00' 
>>> # left align to remove space 
>>> '$%-8.2f' % 4.0 
'$4.00 ' 

>>> '${:<8.2f}'.format(4.0) 
'$4.00 ' 
+0

ありがとう。これは機能します。 %$ 8.2fのような%の中に$を入れる方法はありませんか? – Derrick

+0

@Derrick Nope。 1つは新しいスタイルを使用してパッドすることができますが、それは我々がここで欲しいものではありません。 –

2
フロートを作るための幅指定子は、彼らがすぐ隣に空白なし $記号に座ってますので、左詰めする前に、一流 -を追加することができます

私はちょうどヘルパー機能を作るでしょう。また、その%formatではなく、古いスタイルのPythonの整形を使用することをお奨め:中

def my_format(fn, ln, pr, h, cp): 
    return "{:10s} {:>10s} {:>8s} {:8>.2f} {:<8s}".format(
     fn, ln, '$'+'{:0.2f}'.format(pr), h, '$'+'{:0.2f}'.format(cp)) 


print(my_format('John', 'Smith', 10, 40, 400.00)) 
print(my_format('Daniel', 'Johnson', 15, 50, 60)) 

結果:

John   Smith $10.00 40.00 $400.00 
Daniel  Johnson $15.00 50.00 $60.00 

あなたは、あなたのニーズに整形番号とフォーマットのthemselfsを調整することができます。

関連する問題