2016-10-04 2 views
1

То, что я пытаюсь сделать, это создать строковый объект со звездочками, который можно масштабировать с помощью ввода пользователем. Пример, Пользовательский ввод 4:Комбинация функций

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

Таким образом я имел 2 отдельные функции, один, который создает верхнюю и нижнюю часть «****» и один, который создает середину. Это сработало, когда я их разделил, я просто напечатал topbottom, печатный середин, печатный тоботтот. Но я хочу использовать печать только один раз, поэтому я объединил 3 функции в код ниже.

user = input("How many times?") 
def hollow(user): 
    # top 
    var = "" 
    for s in range(user): 
     var += "*" 

    # middle 
    output = "" 
    middle = "*" 
    for x in range(1, user - 1): 
     middle += " " 
    middle += "*" 
    amount = user - 2 
    for i in range(0, amount): 
     if i == (amount - 1): 
      output += middle 
     else: 
      output += middle 
      output += "\n" 

    # bottom 
    var2 = "" 
    for z in range(user): 
     var2 += "*" 

    final = var + output + var2 
    print(final) 

hollow(user) 

Это выход я получаю с этим кодом:

How many times?4 
***** * 
* ***** 

Таким образом, вопрос состоит в следующем: как я могу получить этот код, чтобы запустить форму я показал в начале этого поста?

+2

Так что же это вопрос? – Mureinik

+0

Если вы хотите использовать '' 'print''' only * once *, вы считали * возвращающие строки *? –

ответ

0

Вы должны добавить разрывы строк в вашей окончательной переменной:

final = var + '\n' + output + '\n' + var2 

Обратите внимание, что ваш код может быть уменьшен до этого:

def hollow(user): 
    print ('*' * user + '\n' + ('*' + ' ' * (user-2) + '*\n') * (user-2) + '*' * user) 

hollow(4) 
+0

Вы правы, я упустил разломы строк сверху и снизу, потому что я думал, что уже реализовал их. – Vitalynx

Смежные вопросы