2011-07-12 81 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