【问题标题】:Output Formatting Python 3.2输出格式 Python 3.2
【发布时间】:2011-07-12 19:02:49
【问题描述】:

我有一个关于程序输出的问题。

 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 美分”,美元和美分这样拼写?

谢谢!

【问题讨论】:

    标签: formatting python-3.x


    【解决方案1】:

    这可行:

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

    【讨论】:

      【解决方案2】:

      如果您将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 模块。

      【讨论】:

      • 我不断收到以下类型错误文件“C:\Python32\FinalProject\main.py”,第 38 行,在主要输出中Water = str(“d 美元 %d 美分”%(费用,(收费 * 100 % 100))) TypeError: 不支持的操作数类型 *: 'module' 和 'int' >>>
      • 我无法完全掌握这些 cmets 的窍门......和换行符 :(
      • @Alli,您是否包含了一个名为charges 的模块?这不是我的代码中的错误;在 Python 提示符下试一试。
      • 我已经包含了一个名为收费的模块,是的。我想我应该想到这一点......我将更新我的变量名并重试。谢谢
      【解决方案3】:

      在 Python 3(所有 3.x?)中,您可以编写“简单”浮点数:

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

      输出:

      '123 dollars 45 cents'
      

      显然,str() 会搞砸像1.0000000001e-15这样的浮点数

      【讨论】:

        猜你喜欢
        • 2021-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-04
        • 2014-01-29
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多