问题描述
我正在开发一个程序,并且写了我要实现的目标的简化版本。 我想在左侧排列美元符号,同时仍然保持小数在右侧排列。 到目前为止,这是我的代码-
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' % "$", )
添加美元符号时equation( '%12.2f' % "$", )
它说它不兼容,因为格式不适用于字符串。.是否有其他格式我应该使用的选项,还是有其他安排方式?
任何帮助,将不胜感激。
我今天才在这里创建一个帐户,而我仅编程了大约几个星期,如果编写得不好,请您谅解。
1楼
您可以采取一些措施来改善这一点:
字符串格式化方法不需要将格式化字符串与周围的文本分开。 使用它们的“正确”方法是将格式代码嵌入更长的字符串中,然后将值附加在末尾。
您使用的是较旧的“ printf”样式格式,但将较新的
str.format()
方法用于新代码。如果您想将货币符号放置在您的数字附近,而且还要在其左侧填充一定的宽度,则需要分两个步骤进行操作(首先用货币符号格式化数字,然后填充到左),如在 。
考虑到这一点,下面的一些代码可以完成这项工作:
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
2楼
这个
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
我不知道如何将数字格式嵌套在与字符串填充相同的语句中。