Как преобразовать этот код, который печатает полый бриллиант, в сплошной бриллиант?

#python #python-3.x

#python #python-3.x

Вопрос:

Здравствуйте, я довольно новичок в Python, и у меня есть вопрос, на котором я застрял:

Это исходный код для печати полого алмаза:

 def print_diamond(height):
    """prints hollow diamond"""
    print("{:^{}}".format("*", height))
    for i in range(1, height // 2):
        print("{:^{}}".format("*"   " " * (2*i - 1)   "*", height))
    for i in range(height // 2, 0, -1):
        print("{:^{}}".format("*"   " " * (2*i - 1)   "*", height))
    
    print("{:^{}}".format("*", height))
    
#test code
print_diamond(5)

print_diamond(3)

print_diamond(7)
  

Это выводит:

   *  
 * * 
*   *
 * * 
  *  
 * 
* *
 * 
   *   
  * *  
 *   * 
*     *
 *   * 
  * *  
   *   
  

Как бы вы преобразовали этот код для печати сплошного алмаза?

 *
 *
***
 *
  *
 ***
*****
 ***
  *
   *
  ***
 *****
*******
 *****
  ***
   *
  

Используя эти тесты:

 print_diamond(1)
print_diamond(2)
print_diamond(3)
print_diamond(4)
  

Я попытался изменить форматирование, добавив » * «, но это отодвигает другой » * » в сторону. Спасибо.

Добавление » * » к пробелам » » не устраняет проблему, поскольку форматирование не работает с тестовым кодом solid diamond.

В настоящее время это не должно выводиться:

 *
*
* 
***
* 
 * 
***
 * 
  

Комментарии:

1. Найдите места в вашей функции, которые печатают пробелы между звездочками.

2. Добро пожаловать, Шейли, вам следует поискать в Google руководства, подобные этому, от gfg , прежде чем отправлять вопрос

3. Посмотрите на мою новую правку

Ответ №1:

Просто замените " " на "*" в следующих строках :

 print("{:^{}}".format("*"   "*" * (2*i - 1)   "*", height))
  

Комментарии:

1. Использование тестового кода print_diamond(2) делает все звездочки слева также print_diamond(1) печатает звездочку в двух строках