Выведите «вывод нескольких функций» [не просто печать строк] в одной строке в Python - PullRequest
0 голосов
/ 10 января 2020

Поэтому я пытаюсь напечатать вывод нескольких функций в одной строке, а не в строках, я знаю, что мы могли бы использовать end = "в python 3.0 и выше, но это другой сценарий, я пытался перебирать функции, но безуспешно, я пытался, но я хочу получить представление о том, как подойти к этому, я все еще новичок, так что что-нибудь помогает, а также, пожалуйста, проверьте мой код и пример вывода

class Costco:

 def __init__(self,n):
   self.n=n

 def letterC(self):
  print('*'*self.n)
  for i in range(self.n-2):
    print('*')
  print('*'*self.n)



 def letterO(self):
  print('*'*self.n)
  for i in range(self.n-2):
    print('*'+' '*(self.n-2)+'*')
  print('*'*self.n)


 def letterS(self):
  print('*'*self.n)
  for i in range(int(self.n/2)):
    print('*')
  print('*'*self.n)
  for i in range(int(self.n/2)):
    print(' '*(self.n-1)+'*')
  print('*'*self.n)


 def letterT(self):
  print('*'*self.n)
  for i in range(self.n-1):
    print(' '*int(self.n/2)+'*')


c1=Costco(int(input('please enter an odd number:\n')))
while c1.n%2==0:
   print('you entered an even number,please enter only odd number')
   c1=Costco(int(input('please enter an odd number:\n')))

def cost(c1):
  for i in [c1.letterC,c1.letterO,c1.letterS,c1.letterT,c1.letterC,c1.letterO]:
    i()


cost(c1)

так пример вывода выглядит как

please enter an odd number:
7
*******
*
*
*
*
*
*******
*******
*     *
*     *
*     *
*     *
*     *
*******
*******
*
*
*
*******
      *
      *
      *
*******
*******
   *
   *
   *
   *
   *
   *
*******
*
*
*
*
*
*******
*******
*     *
*     *
*     *
*     *
*     *
*******

Но я хочу больше, как в одной строке, как

COSTCO 

, но не

C
O
S
T
C
O

1 Ответ

0 голосов
/ 10 января 2020

Эта функция печати вставляет разрыв строки в конце того, что вы просите напечатать, поэтому каждый раз, когда вы вызываете print (), вы в конечном итоге переместитесь на один уровень ниже. Один из способов справиться с этим - сохранить каждый символ в виде массива строк, каждая из которых содержит строку, которую вы хотите напечатать.

, поэтому C [0] будет "*******", а c [1] будет "*", а c [6] будет "******"

Затем используйте a для l oop, чтобы печатать каждый слой символов по одному, вставляя символ пробела между каждым компонентом. вроде как print (c [i] + o [i] + s [i] + t [i] + c [i] + o [i])

Единственный улов - вы должны определить каждый слой символов за слоем заранее, а также измените способ печати 'S' так, чтобы у него было то же количество слоев, что и у остальных символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...