Помогите понять, не могу рзобраться с f-строками

product = input()
price = int(input())
weight = int(input())
money = int(input())
cost = str(weight) + "кг * " + str(price) + "руб/кг"
print("================Чек================")
print(f"Товар:{product:>29}")
print(f"Цена:{cost:>30}")
print(f"Итого:{price * weight:>26}руб")
print(f"Внесено:{money:>24}руб")
print(f"Сдача:{money - (price * weight):>26}руб")
print("=" * 35)

Этот код работает, но я не могу понять, почему нужно для "Цены" создавать отдельную переменную, чтобы f-строка выводила ответ, потому что следующий код выходит за границы:

name = input()
price = int(input())
weight = int(input())
cash = int(input())

a = weight*price


print('=' * 16 + 'Чек' + '=' * 16)
print(f'Товар:{name:>29}')
print(f'Цена:{weight:>19}кг * {price}руб/кг')
print(f'Итого:{a:26}руб')
print(f'Внесено:{cash:>24}руб')
print(f'Сдача:{cash - a:>26}руб')
print('=' * 35)

Это задача из Хенбука "основы питона" от яндкес


Ответы (1 шт):

Автор решения: S. Nick

В первом случае вы четко посчитали сколько символов надо после
Цена: и это будет тридцать - {cost:>30}

Во втором случае вы не знаете какая длина будет у переменной price,
поэтому надо вставить дополнительный блок расчета.

product = input('Введите наименование товара: ')
price = int(input('Введите Цену: '))
weight = int(input('Введите Количество: '))
money = int(input('Сумма внесенных средств: '))
cost = str(weight) + "кг * " + str(price) + "руб/кг"

print("================Чек================")
print(f"Товар:{product:>29}")
print(f"Цена:{cost:>30}")
print(f"Итого:{price * weight:>26}руб")
print(f"Внесено:{money:>24}руб")
print(f"Сдача:{money - (price * weight):>26}руб")
print("=" * 35)

print()
name = input('Введите наименование товара: ')
price = int(input('Введите Цену: '))
weight = int(input('Введите Количество: '))
cash = int(input('Сумма внесенных средств: '))

total = weight * price

print('=' * 16 + 'Чек' + '=' * 16)
print(f'Товар:{name:>29}')


#print(f'Цена:{weight:>19}кг * {price}руб/кг')

len_weight = len(str(weight))                          # +
len_price = len(str(price))                            # +
x = 30 - len_weight - len_price - 11                   # +; 11 = 'кг * руб/кг'
space = ' '                                            # +
# ----------> vvvvvvvvv <----------------------------------------------------
print(f'Цена:{space * x}{weight}кг * {price}руб/кг')
print(f'Итого:{total:26}руб')
print(f'Внесено:{cash:>24}руб')
print(f'Сдача:{cash - total:>26}руб')
print('=' * 35)


print()

введите сюда описание изображения

→ Ссылка