#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. Я обновлю код