Проблема с шаблонной программой, использующей циклы

#python #python-2.7 #design-patterns

#python #python-2.7 #дизайн-шаблоны

Вопрос:

Я пишу программу, которая принимает два входных сигнала, количество строк и количество приветствий в качестве входных данных. Количество строк — это количество строк, которые пользователь хочет распечатать, а количество приветствий — в формате, в котором 1 приветствие — это слово «GO», а два приветствия — это два «GO» … и это слово «ПРИЯТЕЛЬ» в пределах двух соседних GO. И каждая новая строка должна иметь отступ на 3 пробела больше, чем предыдущая. И это программа, которую я придумал:

 lines = input("Lines= ")
cheers = input("Cheers= ")
if cheers == 1:
    i = 1
    space = 0
    S = ""
    while i<=lines:
        S=S (" "*space) "GO n"
        i  = 1
        space =3
    print S
else:
    n = 1
    cheer1 = "GO BUDDY "
    cheer2 = "GO"
    space = 0
    while n<= cheers:
        print (" "*space) (cheer1*cheers) cheer2
        space =3
        n  = 1
  

Но проблема с этим заключается в том, что он не выводит нужное количество переходов в количестве приветствий. Как я могу изменить свой код, чтобы устранить эту проблему? Это выходной формат, который я хочу получить :

Это формат вывода, который я хочу получить

Ответ №1:

Часто в Python вам не нужны никакие циклы

 lines = int(input('Lines= '))
cheers = int(input('Cheers= '))

line = ' BUDDY '.join(['GO']*cheers)
for i in range(cheers):
     print(' '*(i*3)   line)
  

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

1. Да, вы правы, на самом деле меня специально попросили написать код с использованием циклов.

Ответ №2:

 def greet(lines, cheers):
    i = 0
    line_str = ""
    while i < cheers: # Build the line string
        i  = 1
        line_str  = "GO" if i == cheers else "GO BUDDY "

    i = 0 
    while i < lines: #Print each line
        print(" "*(i*3)   line_str)
        i  = 1

greet(2,1)
greet(4,3)
greet(2,4)
  

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

1. Это точно такой же результат, как и в моей программе. Мне нужно столько слов «GO» в одной строке, сколько указано в «cheers» … например; для строк = 3 и cheers = 3 вывод должен быть «GO BUDDY GO BUDDY GO» .. в котором есть 3 слова «GO».

2. Вы можете попробовать это сейчас @HogRider123

Ответ №3:

Попробуйте это.

 def greet(lines, cheers):
    for i in range (lines):
        output = (" ") * i   "Go"

        for j in range (cheers):
            if cheers == 1:
                print output
                break
            output  = "Budddy Go"
        print output
  

Надеюсь, это поможет.

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

1. поместите if cheer == 1 блок внутри цикла cheers. Я обновлю код