похоже на условный оператор if. Однако в случае циклических операторов их тела могут выполняться далеко не один раз. В случае if, если логическое выражение в заголовке возвращает истину, то тело выполняется единожды. После этого поток выполнения программы возвращается в основную ветку и выполняет следующие выражения, расположенные ниже всей конструкции условного оператора.
В случае while, после того как его тело выполнено, поток возвращается к заголовку цикла и снова проверяет условие. Если логическое выражение возвращает истину, то тело снова выполняется. Потом снова возвращаемся к заголовку и так далее.
Цикл завершает свою работу только тогда, когда логическое выражение в заголовке возвращает ложь, то есть условие выполнения цикла больше не соблюдается. После этого поток выполнения перемещается к выражениям, расположенным ниже всего цикла. Говорят, "происходит выход из цикла".
from tkinter import *
import random
import time
def move(event):
if event.keysym == 'Up':
canvas.move(p, 0, -3)
elif event.keysym == 'Down':
canvas.move(p, 0, 3)
elif event.keysym == 'Left':
canvas.move(p, -3, 0)
elif event.keysym == 'Right':
canvas.move(p, 3, 0)
def mainloop():
while 1:
canvas.move(c, random.randint(-6, 6), random.randint(-6, 6))
tk.update_idletasks()
tk.update()
time.sleep(0.01)
colors=['black', 'white', 'red', 'yellow', 'blue', 'purple']
tk=Tk()
tk.geometry('400x400')
canvas=Canvas (tk, width=400, height=400)
canvas.pack(fill='both', expand=True)
p=canvas.create_rectangle(10, 10, 70, 150, fill=random.choice(colors), outline=random.choice(colors))
c=canvas.create_oval(190, 190, 210, 210, fill=random.choice(colors), outline=random.choice(colors))
canvas.bind_all('<KeyPress-Up>', move)
canvas.bind_all('<KeyPress-Down>', move)
canvas.bind_all('<KeyPress-Left>', move)
canvas.bind_all('<KeyPress-Right>', move)
mainloop()
Объяснение:
похоже на условный оператор if. Однако в случае циклических операторов их тела могут выполняться далеко не один раз. В случае if, если логическое выражение в заголовке возвращает истину, то тело выполняется единожды. После этого поток выполнения программы возвращается в основную ветку и выполняет следующие выражения, расположенные ниже всей конструкции условного оператора.
В случае while, после того как его тело выполнено, поток возвращается к заголовку цикла и снова проверяет условие. Если логическое выражение возвращает истину, то тело снова выполняется. Потом снова возвращаемся к заголовку и так далее.
Цикл завершает свою работу только тогда, когда логическое выражение в заголовке возвращает ложь, то есть условие выполнения цикла больше не соблюдается. После этого поток выполнения перемещается к выражениям, расположенным ниже всего цикла. Говорят, "происходит выход из цикла".