2011-07-12 56 views
1

我有一個有關程序輸出的問題。輸出格式化Python 3.2

def writeOutput(): 
    output.write(str(gallons) + '\n') 
    output.write(str(usage) + '\n') 
    output.write(str(sewer) + '\n') 
    output.write(str(tax) + '\n') 
    output.write(str(total) + '\n') 
    output.write('_______________________' + '\n') 

這是我寫的文件功能。 有沒有人知道我在哪裏可以找到如何寫123.45爲「123美元45美分」與美元和美分這樣拼寫出來?

謝謝!

回答

1

如果你有amount存儲爲float(*),你可以使用%格式化操作如下:

"%d dollars %d cents" % (int(amount), int(amount * 100 % 100)) 

dollars = int(amount) 
"%d dollars %d cents" % (dollars, int((amount - dollars) * 100)) 

(*),你應該永遠不會做一個真正的金融應用程序,因爲浮點數容易出現舍入誤差;改爲使用Decimal模塊。

+0

我一直收到以下類型的錯誤文件「C:\ Python32 \ FinalProject \ main.py」,第38行,主要爲 outputWater = str(「d dollars%d cents」%(charges,(charges * 100% 100))) TypeError:不支持的操作數類型爲*:'module'和'int' >>> –

+0

我不能完全理解這些註釋的意義......並且換行符:( –

+0

@ Alli,你有沒有包含一個叫'收費'的模塊?這不是我的代碼中的錯誤;在Python提示符下嘗試它。 –

2

這會工作:

>>> amount = 123.45 
>>> '{} dollars {:.0f} cents'.format(int(amount), (amount - int(amount)) * 100) 
'123 dollars 45 cents' 
0

在Python 3(?所有3.X)爲 「簡單」 的花車,你可以寫:

'{} dollars {} cents'.format(*str(amount).split('.')) 

輸出:

'123 dollars 45 cents' 

顯然,str()會使用浮點數,如1.0000000001e-15