Step 8 (S-14662)

From Stepik Wiki
Revision as of 14:38, 13 August 2017 by Valeriy Shagur (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/3364/step/8


Предыдущую задачу можно решить без использования умножения строки на число. Для этого сделаем очевидное наблюдение - в каждой следующей строчке число звездочек на одну больше, чем в предыдущей. Поэтому вместо того, чтобы хранить счетчик количества выведенных звездочек для текущей строки, будем хранить саму строку, состоящую из звездочек. Заведем переменную strars, в которою изначально запишем одну звездочку. На каждой итерации цикла мы будем выводить значение переменной strars и "приписывать" к ней еще одну звездочку. Цикл будет выглядеть следующим образом:

1  n = int(input())
2  stars = "*"
3  while (условие):
4      print(stars)
5      stars += "*"

Пока мы не написали условие цикла, о нем мы поговорим чуть позже. На первой итерации будет выведена одна звездочка, на второй - две и так далее. Когда нужно будет остановить цикл? Остановить нужно будет тогда, когда будет выведено n звездочек. Как это проверить в цикле? У нас есть строка, мы можем узнать количество символов в ней с помощью функции len. Поэтому условие продолжения цикла у нас будет таким: пока длина строки, хранящейся в переменной strars меньше, либо равна, чем n

S-14662-1.png

Проверим, что это работает. Вводим число, допустим, 5. Получается такой замечательный треугольник.