Условные циклы необходимы для повторения каких-либо действий в зависимости от логического значения условия. Если значение условия всегда остаётся положительным, то цикл может быть бесконечным, если оно с самого начала отрицательно, то цикл не будет выполнен. В Python условные циклы создаются с помощью оператора while
.
word = ''
sentence = ''
print('Please enter some words.')
print('Include a period (.) when you are finished.')
while '.' not in word:
word = input('next word: ')
sentence = word + ' ' + sentence
print()
print('Aha! You said:')
print(sentence)
We call this part of the code the ‘conditional’: '.' not in word
Whether the conditional return True or not determines whether the code inside
the while
loop runs.
Прочитай расположенный выше код и попробуй разобраться, что он делает (т. е. что будет сделано в результате его работы).
Затем скопируй этот код в файл (например, sentence.py
), запусти, и проверь свои догадки.
Примечание
Если ты используешь Python 2, замени input
на raw_input
для корректной работы программы.
The turtle has been up to its usual tricks again, robbing liquor stores and building up huge gambling debts. It’s time for turtle to be put into a cell that it can’t get out of.
Давайте сделаем новую версию forward()
, которая будет поворачивать черепашку, если она слишком далеко (более, чем на 100) отойдёт от начала координатной сетки. . Нам понадобится цикл while
и несколько новых функций для черепашки:
turtle.distance(0,0)
- Расстояние до черепашки от начала координат
turtle.towards(0,0)
- Градусная мера угла для возвращения к началу координат
turtle.setheading(angle)
- Ручная установка направления черепашки
You could try playing with a turtle in the interpreter and using these functions to check exactly what they do, if you like.
Now you will need to implement the prison logic using these turtle
functions, perhaps a while
loop and a bit of conditional logic.
It’s a bit of a stretch but keep at it! Don’t be afraid to talk it out
with a coach or another student.
def forward(distance):
while distance > 0:
if turtle.distance(0,0) > 100:
angle = turtle.towards(0,0)
turtle.setheading(angle)
turtle.forward(1)
distance = distance - 1
Циклы могут быть прерваны командой break
. Она особенно полезна, если ты пишешь бесконечный цикл, т.е. цикл, условие которого всегда истинно.
Напиши while
-цикл для рисования спирали, условие которого всегда будет выполняться (т.е. бесконечный цикл), с прекращением выполнения по достижении черепашкой определённого расстояния от центра. Используй функцию turtle.distance(x, y)
, чтобы получить расстояние от черепашки до заданной точки.
Чтобы сделать это, понадобятся функции turtle.xcor()
и turtle.ycor()
, которые возвращают координаты (черепашки) X и Y соответственно.
Примечание
Чтобы нарисовать спираль, черепашка должна поворачиваться на неизменяемую величину и двигаться вперёд на постоянно увеличивающееся расстояние
def draw_spiral(radius):
original_xcor = turtle.xcor()
original_ycor = turtle.ycor()
speed = 1
while True:
turtle.forward(speed)
turtle.left(10)
speed += 0.1
if turtle.distance(original_xcor, original_ycor) > radius:
break
Can you make a conditional for this loop, so you don’t need the
infinite loop while True
or the break
? Which version do you find
easier to understand?