Знак доллара для форматирования строки Python - PullRequest
0 голосов
/ 10 марта 2020

Итак, я пытаюсь, чтобы знак доллара отображался слева от цифр под столбцом «Стоимость». У меня проблемы с выяснением этого, и любая помощь приветствуется.

# Question 5

print("\nQuestion 5.")

# Get amount of each type of ticket to be purchased

adultTickets = input("\nHow many adult tickets you want to order: ")

adultCost = int(adultTickets) * 50.5

childTickets = input("How many children (>=10 years old) tickets: ")

childCost = int(childTickets) * 10.5

youngChildTickets = input("How many children (<10 years old) tickets: ")

# Display ticket info

print ("\n{0:<17} {1:>17} {2:>12}".format("Type", "Number of tickets", 
"Cost"))

print ("{0:<17} {1:>17}${2:>12.2f}".format("Adult", adultTickets, adultCost))

print ("{0:<17} {1:>17}${2:>12.2f}".format("Children (>=10)", childTickets, 
childCost))

print ("{0:<17} {1:>17} {2:>12}".format("Children (<10)", youngChildTickets, 
"free"))

#Calculate total cost and total amount of tickets

totalTickets = (int(adultTickets) + int(childTickets) + 
int(youngChildTickets))

totalCost = adultCost + childCost

print ("{0:<17} {1:>17}${2:>12.2f}".format("Total", totalTickets, totalCost))

Я также хочу, чтобы столбец стоимости был правильно отформатирован, чего не происходит при запуске программы.

(Мой вывод):

enter image description here Редактировать: я также не могу отформатировать '$' в стоимости, так как я должен сохранить 2 десятичных знака в формате

1 Ответ

1 голос
/ 10 марта 2020

Если я правильно понимаю, вы хотите отформатировать число с плавающей запятой в строку, и в выходных данных должен появиться знак доллара между числом и отступом, который вы используете для разметки в строке. Например, вы хотите иметь возможность создавать эти две строки с одинаковым кодом форматирования (только с разными значениями):

foo:    $1.23
foo:   $12.34

К сожалению, вы не можете сделать это с помощью только одной операции форматирования строки. Когда вы применяете отступы к числу, между ними и любым префиксным текстом появляются символы дополнения, такие как знаки доллара в вашем текущем коде. Вам, вероятно, нужно отформатировать число в два этапа. Сначала превратите числа в строки с префиксом со знаками доллара, затем снова отформатируйте, чтобы вставить строки доллара в окончательную строку с соответствующим заполнением.

Вот как я получу приведенные выше примеры строк:

a = 1.23
b = 12.34

a_dollars = "${:.2f}".format(a)  # make strings with leading dollar sign
b_dollars = "${:.2f}".format(b)

a_padded = "foo:{:>8}".format(a_dollars)  # insert them into strings with padding
b_padded = "foo:{:>8}".format(b_dollars)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...