Python使用'%x.xf'%格式的字符串

时间:2018-09-18 00:22:41

标签: python string string-formatting

我正在开发一个程序,并且已经写出了我要实现的目标的简化版本。我想在左侧排列美元符号,同时仍然保持小数在右侧排列。到目前为止,这是我的代码-

money = float(input("Enter  amount: "))
random = float(input("Enter a random number"))
print()

print("Random number: ", '%12.0f' % random) #I just want this to line up
print("Money each month: ", '%12.2f' % ((money) / 12.0))
print("Total money: ", '%17.2f' % money)`

输出会排成一行,以便小数点都在一行中,而随机数恰好在小数点前。问题是,当我尝试在equation( '%12.2f' % "$", )上添加美元符号时,它说它不兼容,因为格式不适用于字符串。.是否应该使用其他格式选项?另一种安排方式?任何帮助,将不胜感激。我今天刚刚在这里创建了一个帐户,而我仅编程了大约几个星期,如果编写得不好,请您谅解。

2 个答案:

答案 0 :(得分:1)

您可以采取一些措施来改善这一点:

  1. 字符串格式化方法不需要将格式化字符串与周围的文本分开。使用它们的“正确”方法是将格式代码嵌入更长的字符串中,然后将值附加在末尾。

  2. 您正在使用较旧的“ printf”样式格式,但对于新代码,将更新的str.format()方法用于preferable

  3. 如果要将货币符号放置在靠近数字的位置,但又要在其左侧填充一定的宽度,则需要分两步进行操作(首先用货币对数字进行格式设置符号,然后向左滑动),如this answer中所述。

考虑到这一点,下面的一些代码可以完成这项工作:

money = 12323.45
random = 2278

# format with decimals and dollar sign (variable width)
money_formatted = '${:.2f}'.format(money)
monthly_money_formatted = '${:.2f}'.format(money/12.0)

print()
print("Random number:    {:9.0f}".format(random))
# pad to 12 characters if needed
print("Money each month: {:>12}".format(monthly_money_formatted))
print("Total money:      {:>12}".format(money_formatted))

# output:
# Random number:         2278
# Money each month:     $1026.95
# Total money:         $12323.45

答案 1 :(得分:0)

money = float(input("Enter  amount: "))
random = float(input("Enter a random number"))
print()

randomFormatted = f"{random:.0f}"
money12Formatted = f"{(money/12.0):.2f}"
moneyFormatted = f"{money:.2f}"
print(f"Random number:{' ':3}{randomFormatted.rjust(6)}")
print(f"Money each month:{' ':2}${money12Formatted.rjust(6)}")
print(f"Total money:{' ':7}${moneyFormatted.rjust(6)}")

给出输出:

Random number:       32
Money each month:  $  4.17
Total money:       $ 50.00

不过,我不知道如何将数字格式嵌套在与字符串填充相同的语句中。