-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

これを使ってみてください - それはドキュメントにあります。ただし、既に取得している適用可能な他のフォーマットを適用する必要があります。

>>> format('123', '>30')
'                           123'
于 2013-02-01T02:29:17.913 に答える
0

この質問は、Align Left / Right in Pythonのほぼ複製です (次のコードは 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 に答える