-2

大家好,我在 Python 课程的介绍中有一个作业,我的老师指出(他还没有解释)输出的某些部分必须通过 format() 函数右对齐。

到目前为止,我已经了解了一些有关格式的知识,例如:

print(format(12345.6789,'.2f'))
print(format(12345.6789,',.2f'))
print('The number is ',format(12345.6789,'10,.3f'))
print(format(123456,'10,d'))

我理解这些很好,但这就是我的教授在我的程序中想要的。

这需要正确的理由:

    Amount paid for the stock:      $ 350,000
    Commission paid on the purchase:$  27,000
    Amount the stock sold for:      $ 350,000 
    Commission paid on the sale:    $   30,00
    Profit (or loss if negative):   $ -57,000

这些数字不正确^我忘记了实际值,但你明白了。

这是我已经拥有的代码。

#Output
print("\n\n")
print("Amount paid for the stock:      $",format(stockPaid,',.2f'),sep='')
print("Commission paid on the purchase:$",format(commissionBuy,',.2f'),sep='')
print("Amount the stock sold for:      $",format(stockSold,',.2f'),sep='')
print("Commission paid on the sale:    $",format(commissionSell,',.2f'),sep='')
print("Profit (or loss if negative):   $",format(profit,',.2f'),sep='')

那么如何让这些值右对齐打印,而每个之前的字符串的其余部分左对齐呢?

谢谢你们的帮助,你们一如既往的棒!

4

2 回答 2

0

这个问题几乎是Python 中 Align Left / Right 的重复,有一个修改可以让它为你工作(以下代码是 Python 3.X 兼容的):

# generic list name with generic values
apples = ['a', 'ab', 'abc', 'abcd']

def align_text(le, ri):
    max_left_size = len(max(le, key=len))
    max_right_size = len(max(ri, key=len))
    padding = max_left_size + max_right_size + 1

    return ['{}{}{}'.format(x[0], ' '*(padding-(len(x[0])+len(x[1]))), x[1]) for x in zip(le, ri)]

for x in align_text(apples, apples):
    print (x)

"".format()语法用于将字符串中的占位符替换为您提供的参数,它的文档是Python Docs String Formatter。当您创建混入变量的字符串时,我怎么强调都不过分。

这将要求您将左右值放在单独的列表中,但是,从您的示例来看,它将是:

left_stuff = [
        "Amount paid for the stock:      $",
        "Commission paid on the purchase:$",
        "Amount the stock sold for:      $",
        "Commission paid on the sale:    $",
        "Profit (or loss if negative):   $"]

right_stuff = [
        format(1,',.2f'),
        format(1,',.2f'),
        format(1,',.2f'),
        format(1,',.2f'),
        format(1,',.2f')]

输出是:

Amount paid for the stock:      $ 1.00
Commission paid on the purchase:$ 1.00
Amount the stock sold for:      $ 1.00
Commission paid on the sale:    $ 1.00
Profit (or loss if negative):   $ 1.00

您可以通过删除+1函数中的 $ 或将 $ 放在右侧来消除 $ 之间的空格。

于 2013-02-01T02:45:15.413 回答
0

尝试使用它 - 虽然它在文档中。您将需要应用您已经拥有的任何其他适用的格式。

>>> format('123', '>30')
'                           123'
于 2013-02-01T02:29:17.913 回答