2012-09-14 38 views
1

我正在尝试对齐输出中的文本。对齐打印的单独部分

purch_amt = float(input('Enter Amount of Purchase')) 
state_stax = purch_amt * 0.04 
county_stax = purch_amt * 0.02 
tax = state_stax + county_stax 
totalprice = purch_amt + tax 

Print("Purchase Price", "= $", %.2f % purch_amt) 
Print("State Sales tax", "= $", %.2f % state_stax) 
Print("County Sales tax", "= $", %.2f % county_stax) 
Print("Total Tax", "= $", %.2f % tax) 
Print("Total Price", "= $", %.2f % totalprice) 

......我希望它在运行时看起来像这样。

Purchase Price = $ 100.00 
State Sales tax = $  4.00 
County Sales tax = $  2.00 
Total Tax   = $  6.00 
Total Price  = $ 106.00 

我发现要做到这一点的唯一方法对于应该相当容易的事情来说是非常复杂的。

问题解决了,谢谢!

purch_amt = float(input('Enter Amount of Purchase')) 
state_stax = purch_amt * 0.04 
county_stax = purch_amt * 0.02 
tax = state_stax + county_stax 
totalprice = purch_amt + tax 

def justified(title, amount, titlewidth=20, amountwidth=10): 
    return title.ljust(titlewidth) + " = $ " + ('%.2f' % amount).rjust(amountwidth) 

print(justified('Purchase Price', purch_amt)) 
print(justified('State Sales Tax', state_stax)) 
print(justified('County Sales Tax', county_stax)) 
print(justified('Total Tax', tax)) 
print(justified('Total Price', totalprice)) 
+0

您输入的内容中有几处语法错误。 –

回答

3

String ljust, rjust, center是你想填充这样一个字符串。

def justified(title, amount, titlewidth=20, amountwidth=10): 
    return title.ljust(titlewidth) + " = $ " + ('%.2f' % amount).rjust(amountwidth) 

print(justified('Parts', 12.45)) 
print(justified('Labor', 100)) 
print(justified('Tax', 2.5)) 
print(justified('Total', 114.95)) 
+0

我想指出一些[最新的文档](http://docs.python.org/library/string.html#string.ljust)。另外,'print'foo''需要替换为Python 3的print('foo')'。 – Blender

+0

好的,谢谢。 – Omnikrys

+0

正是我在找的! –

1

您可以只使用内置string formatting

>>> column_format = "{item:20} = $ {price:>10.2f}" 
>>> print(column_format.format(item="Total Tax", price=6)) 
Total Tax   = $  6.00 

...等。

断裂下来:

  • {item}手段格式命名item
  • {item:20}参数装置格式化的结果应具有宽度20个字符
  • {price:>10.2f}意味着右对齐(>),10宽度(10 ),浮点精度为2位小数(.2f

顺便提一下,您可能需要查看用于货币工作的Decimal包。