Python, использующий строку в формате '% x.xf'% - PullRequest
0 голосов
/ 18 сентября 2018

Я работаю над программой и выписал упрощенную версию того, чего я пытаюсь достичь.Я хочу расположить знаки доллара на левой стороне, сохраняя при этом десятичные дроби, расположенные справа.Вот мой код до сих пор -

money = float(input("Enter  amount: "))
random = float(input("Enter a random number"))
print()

print("Random number: ", '%12.0f' % random) #I just want this to line up
print("Money each month: ", '%12.2f' % ((money) / 12.0))
print("Total money: ", '%17.2f' % money)`

Выходные данные выстраиваются так, что все десятичные дроби находятся в строке, а случайное число находится прямо перед десятичным.Проблема в том, что когда я пытаюсь добавить знак доллара к equation( '%12.2f' % "$", ), он говорит, что он не совместим, потому что форматирование не работает со строками. Есть ли другой формат, который я должен использовать, или другойспособ это устроить?Любая помощь будет оценена.Я только что создал учетную запись здесь сегодня, и я программировал только несколько недель, извините, если это плохо написано.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Это

money = float(input("Enter  amount: "))
random = float(input("Enter a random number"))
print()

randomFormatted = f"{random:.0f}"
money12Formatted = f"{(money/12.0):.2f}"
moneyFormatted = f"{money:.2f}"
print(f"Random number:{' ':3}{randomFormatted.rjust(6)}")
print(f"Money each month:{' ':2}${money12Formatted.rjust(6)}")
print(f"Total money:{' ':7}${moneyFormatted.rjust(6)}")

Дает вывод:

Random number:       32
Money each month:  $  4.17
Total money:       $ 50.00

Я не знаю, как вложить форматирование числа в тот же оператор, что и для заполнения строк.

0 голосов
/ 18 сентября 2018

Есть несколько вещей, которые вы можете сделать, чтобы улучшить это:

  1. Методы форматирования строки не требуют отделения строки форматирования от окружающего текста. «Правильный» способ их использования состоит в том, чтобы встроить коды форматирования в более длинную строку, а затем присоединить значения в конце.

  2. Вы используете более раннее форматирование в стиле "printf", но считается предпочтительным , чтобы использовать более новый метод str.format() для нового кода.

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

Имея это в виду, вот код, который должен выполнять эту работу:

money = 12323.45
random = 2278

# format with decimals and dollar sign (variable width)
money_formatted = '${:.2f}'.format(money)
monthly_money_formatted = '${:.2f}'.format(money/12.0)

print()
print("Random number:    {:9.0f}".format(random))
# pad to 12 characters if needed
print("Money each month: {:>12}".format(monthly_money_formatted))
print("Total money:      {:>12}".format(money_formatted))

# output:
# Random number:         2278
# Money each month:     $1026.95
# Total money:         $12323.45
...