Понимание метода .format - PullRequest
0 голосов
/ 16 мая 2018

Как часть задания, я написал небольшую программу для поддержания баланса банка:

def setBalance(amt):    # Defines but does not print the value of the starting balance
    global balance
    balance = amt

def printBalance():      # Displays current balance as a money value with a heading
    global balance
    print("---------------------------")
    print("Current balance is $%.2f" % balance)

def printLedgerLine(date, amount, details):  # with items (and the balance) spaced and formatted
    global balance
    print("{0:<15}{2:<20}${1:>8.2f}           ${3:>8.2f}".format(date, details, amount, balance))

def deposit (date, details, amount):  # Alter the balance and print ledger line
    global balance
    balance += amount
    printLedgerLine(date, details, amount)

def withdraw(date, details, amount): # Alter the balance and print ledger line
    global balance
    balance -= amount
    printLedgerLine(date, details, amount)

#"""
setBalance(500)
printBalance()
withdraw("17-12-2012", "BP - petrol", 72.50)
withdraw("19-12-2012", "Countdown", 55.50)
withdraw("20-12-2012", "munchies", 1.99)
withdraw("22-12-2012", "Vodafone", 20)
deposit ("23-12-2012", "Income", 225)
withdraw("24-12-2012", "Presents", 99.02)
#deposit("25-12-2012", "Holiday pay", 102.22)
printBalance()
#"""

Я запутался в выражении print в функции printLedgerLine.Он работает нормально, как есть, печатая

---------------------------
Current balance is $500.00
17-12-2012     BP - petrol         $   72.50           $  427.50
19-12-2012     Countdown           $   55.50           $  372.00
20-12-2012     munchies            $    1.99           $  370.01
22-12-2012     Vodafone            $   20.00           $  350.01
23-12-2012     Income              $  225.00           $  575.01
24-12-2012     Presents            $   99.02           $  475.99
---------------------------
Current balance is $475.99

с оператором print, равным

print("{0:<15}{2:<20}${1:>8.2f} ${3:>8.2f}".format(date, details, amount, balance)).

Но я думаю, что путь .formatкаждый метод работ {0}, {1} и т. д. сопоставлялся с каждым аргументом в .format().Так почему же

print("{0:<15}{1:<20}${2:>8.2} ${3:>8.2f}".format(date, details, amount, balance))

print

---------------------------
Current balance is $500.00
17-12-2012     72.5                $      BP           $  427.50
19-12-2012     55.5                $      Co           $  372.00
20-12-2012     1.99                $      mu           $  370.01
22-12-2012     20                  $      Vo           $  350.01
23-12-2012     225                 $      In           $  575.01
24-12-2012     99.02               $      Pr           $  475.99
---------------------------
Current balance is $475.99

?Это как-то связано с порядком аргументов в определении printLedgerLine(date, amount, details)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...