В вашей программе используется одна и та же переменная цикла i
для итерации в циклах while
и for
.
Это сбивает с толку, и поэтому, чтобы получить ответ, они ввели случайное break
.
Этот break
бесполезен и может работать без внешней петли while
.Вы можете просто иметь цикл for
, и он будет работать:
def triangle(num):
for i in range(num):
print(i*"*")
Таким образом, разрыв просто забирает вас во внутренний цикл for и завершает работу, как только это будет сделано.
Честно говоря, ваша программа выглядит как программа, залатанная обезьяной.Хотя это работает, его трудно читать и поддерживать из-за необычной логики.
Теперь, как работает приведенный выше код?
Давайте рассмотрим проблему под рукой:
- Мы должны создать треугольную последовательность "*".
- Число "*" должно увеличиваться и в конечном итоге равняться числу
num
, отправляемому в качестве параметра. - В python любая строка
x
, умноженная на целое число n
, создает строку с n
повторениями x
.
Так что если у меня есть x = "abc"newX = x * 3 print (newX) # печатает abcabcabc
Таким образом, все, что вам нужно сделать, это иметь переменную, которая может идти от
1 to num
, умножить «*» и вывести то же самое.Это было указано в цикле
for
и операторе печати внутри.
Редактировать:
Если вы вынуждены использовать два цикла, это хороший способ имитировать это:
def triangle(n):
for i in range(n):
for j in range(i):
print("*")
Или другой странный способ:
def triangle(n):
i=0
while(i<n):
for j in range(n):
print(i*"*")
i += 1