Вывести слово в рамку из звездочек Python

Не могу понять в чём у меня ошибка. Задание следующее:

Создайте программу, которая запрашивает у пользователя слово и выводит слово в звездочках со словом посередине. Ширина рамок составляет 30 знаков, и вы можете предположить, что слово поместится в рамки.

Примечание! Если слово нечетной длины, вы можете напечатать слово в любом из возможных центров.

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

Мой код :

 a = input("word: ")
    b=30
    print("*" * b)
    if len(a) <= b:
        print("*", " " * (b//2 -len(a)) + a," " * (b//2 - len(a)), "*") 
    print("*" * b) 

Выводит как то неправильно...Спасибо...


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

Автор решения: entithat
s = input('Word: ')
w = int(input('Width: '))  

print('*' * w + '\n' + '*' + s.center(w-2) + '*' + '\n' + '*' * w)
# либо
print(f"{'*'*w}\n*{s.center(w-2)}*\n{'*'*w}")
→ Ссылка
Автор решения: Andy Pavlov

Можно в одну строку вывести через join и format

s = 'example'
w = 30

print('\n'.join(['*' * w, '*{:^{wid}}*'.format(s, wid=w-2), '*' * w]))
→ Ссылка