2017-01-04 8 views
1

私はPythonの初心者ですが、次の例を実行しましたが、私は好奇心が私の最高を得たので、私はそれを試し始めました。実際には2つの関連する質問があり、それらを理解することは.format()が実際に何をしているのか、そしてその限界を理解するのに役立ちます。私は、ドキュメントに見てきたが、私の具体的な例は、.format()in Pythonケイパビリティ

に言及されなかった私は、このコードをいじる開始:

出力を生成
print 'The diameter of {planet} is {measure} kilometers'.format(planet="Earth", measure=12742.34) 

The diameter of Earth is 12742.34 kilometers

しかし、その後、私は始めました自分自身に尋ねなさい... "この柔軟性はどのように柔軟性がありますか?"


質問1

どのように私は私が{}対策数学出力されることを選択したときのpythonで行う丸めを避けるのですか?

print 'The diameter of {planet} is {measure}'.format(planet="Earth", measure=10/3) 

The diameter of Earth is 3 kilometers

質問2

どのように私は{}対策のフロートを強制できますか?それはあなたがPythonの2.xのを使用していて、整数のデフォルトの整数の除算結果なぜなら、多くのオプションを持っていることを意味し 擬似(私はそれが動作しません知っているが、参考としてここに置く)

print 'The diameter of {planet} is {0:.2f}{measure}'.format(planet="Earth", measure=10/3) 
+0

'from __future__ import division' – Natecat

+0

これはあなたの質問には答えませんが、文字列フォーマットを理解するための素晴らしいリソースです:https://pyformat.info/ – elethan

答えて

0

あなたはmeasure = 10/ float(3)を行うことによってfloatにキャストすることができます。分子または分母が浮動小数点数の場合、結果も同じになります。

とPython 3.xでは

は、単一のスラッシュ(/)が常に真(非切り捨て)分割を意味します。 Python 2.x(2.2以降)では、これと同じ動作を得ることができます。from __future__ import division

1

オプション1:分割ライブラリ

from __future__ import division 

オプション2インポート:浮遊する要因のいずれかを変更したり、別の方法としては、これに0.0をadingによりフロート(小数点)に3を変更することができるのかmultipl 1.0

print 'The diameter of {planet} is {measure:.2f}'.format(planet="Earth", measure=10/3.0) 
+0

どちらの方法でも、 'format'は関係しません。式自体ではなく、 'measure'に割り当てられた式の* result *を取得しています。 – chepner

+0

はいmeasureの値は、書式設定に供給されるときに既に計算されています。 –

+0

{planet}の直径は{0:.2f} {measure} 'です。フォーマット(planet = "Earth"、measure = 10/3。0) 'しかし、それは私に次のエラーを与えます:IndexError:タプルのインデックスが範囲外 – treefiddy

-1

によってyはまた、単に行うことができます:

print 'The diameter of {} is {}'.format("Earth",10/3) 
+0

10/3 = 3(python 2.)ここのポイントです。 –