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