Задача "Украшение чека" от яндекса, python
Вот мой код, но я не понимаю как правильно выровнять по краям числа, т.к. если написать большое число, оно выйдет за рамки. Переделывал код, в итоге ничего не получилось, выдает ошибку. Также есть закоменченная часть кода которая работает но нужно как то выравнивать по краю. Вот код:
a = str(input()) # Название
b = int(input()) # Цена
c = int(input()) # Вес
d = int(input()) # Кол-во денег
#print(f'{"Чек":=^32}\nТовар:{"": >30}{a}\nЦена:{"": >30}{c}кг * {b}руб/кг\nИтого:{"": >30}{(b*c)}руб\nВнесено:{"": >30}{d}руб\nСдача:{"": >30}{(d-b*c)}руб\n{"":=^35}')
print(f'{"Чек":=^32}')
print(f'Товар:{"": ^{(a)}}{a}')
print(f'Цена:{"": ^{(b)}}{(c)}кг * {(b)}руб/кг')
print(f'Итого:{"": ^{(b*c)}}{(b*c)}руб')
print(f'Внесено:{"": ^{(d)}}{(d)}руб')
print(f'Сдача:{"": ^{(d-b*c)}}{(d-b*c)}руб')
print(f'{"":=^32}')
UPD: Изменил код но всё равно не выравнивается
a = str(input()) # Название
b = int(input()) # Цена
c = int(input()) # Вес
d = int(input()) # Кол-во денег
print(f'{"Чек":=^35}')
print(f'{"Товар:": <35}{a}')
print(f'{"Цена:": <35}{c}кг * {b}кг/руб')
print(f'{"Итого:": <35}{b*c}руб')
print(f'{"Внесено:": <35}{d}')
print(f'{"Сдача": <35}{d-b*c}')
print(f'{"":=^35}')
Ответы (3 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Что-то такое сработает. Самый хитрый момент в строке "цена" - две вложенные форматные строки.
name = input()
price = int(input())
weight = int(input())
amount = int(input())
print(f'{"Чек":=^35}')
print(f'Товар:{name:>29}')
print(f'Цена:{f"{weight}кг * {price}руб/кг":>30}')
print(f'Итого:{price * weight:>26}руб')
print(f'Внесено:{amount:>24}руб')
print(f'Сдача:{amount - price * weight:>26}руб')
print('=' * 35)
Автор решения: ZxNuClear
→ Ссылка
Хоть автор уже и написал, что решил с помощью rjust, но я все равно решил опубликовать этот ответ. Возможно кому то пригодится:
a = input() # Название
b = int(input()) # Цена
c = int(input()) # Вес
d = int(input()) # Кол-во денег
print(f'{"Чек":=^35}')
print("Товар:" + a.rjust(29))
print("Цена:" + f'{c}кг * {b}кг/руб'.rjust(30))
print("Итого:" + f'{b*c}руб'.rjust(29))
print("Внесено:" + f'{d}'.rjust(27))
print("Сдача:" + f'{d - b * c}'.rjust(29))
print("=" * 35)
Вывод:
================Чек================
Товар: Проверка
Цена: 5кг * 100кг/руб
Итого: 500руб
Внесено: 2500
Сдача: 2000
===================================
Автор решения: Алексей Р
→ Ссылка
def just(text1, text2, width):
return f'{text1}:{text2: >{width - len(text1) - 1}}'
goods = 'Яблоко красное'
weight = 5
price = 119.99
total = weight * price
pay = 1000
width, fmt = 35, '.2f' # можно регулировать ширину чека и формат чисел в нем
print(f"""{"Чек":=^{width}}
{just('Товар', goods, width)}
{just('Цена', f'{weight:{fmt}}кг * {price:{fmt}}руб/кг', width)}
{just('Итого', f'{total:{fmt}}руб', width)}
{just('Внесено', f'{pay:{fmt}}руб', width)}
{just('Сдача', f'{pay - total:{fmt}}руб', width)}
{"":=^{width}}""")
================Чек================
Товар: Яблоко красное
Цена: 5.00кг * 119.99руб/кг
Итого: 599.95руб
Внесено: 1000.00руб
Сдача: 400.05руб
===================================
