Цикл Python while без выражений - PullRequest
0 голосов
/ 07 октября 2018

Возможно ли иметь цикл while в Python без выражений?Я знаю, что на других языках вы можете сделать что-то вроде:

while(flag) {};

Я пытаюсь сделать что-то подобное в Python, но не могу найти ответ.Вот что у меня есть до сих пор:

import turtle
from random import randrange

def is_in_screen(t, w): #CHECKS TO SEE IF STILL IN SCREEN
    flag = True
    r = w.window_width() / 2
    l = r * -1
    u = w.window_height() / 2
    d = u * -1

    x_cor = t.xcor()
    y_cor = t.ycor()

    if (x_cor < l or x_cor > r or y_cor < d or y_cor > u):
        flag = False
    return flag

def move_to(t, w): #MOVE IN RANDOM DIRECTION AND RANDOM DISTANCE
    t.forward(randrange(1, 100))
    if (randrange(1, 2) == 1):
        t.left(randrange(1, 180))
    else:
        t.right(randrange(1, 180))
    return is_in_screen(t, w)

def random_movement(t1, t2, w):
    while (move_to(t1, w) and move_to(t2, w)): #<<<<<<<<LOOP IN QUESTION
        i = 0 

def main():
    t1 = turtle.Turtle()
    t2 = turtle.Turtle()
    w = turtle.Screen()

    t1.color("green")
    t2.color("purple")

    random_movement(t1, t2, w)

    w.exitonclick()

main()

Причина, по которой я пытаюсь не выражать свои мысли, заключается в том, что я хочу, чтобы вторая черепаха не двигалась, если первая черепаха выходит за пределы.Также я не хочу возвращать операторы в функцию.

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Ниже приведена доработка вашего кода с while expr: pass, который все предлагают вместе с некоторыми другими стилями и идиомами, чтобы улучшить код:

from turtle import Screen, Turtle
from random import randrange

def is_in_screen(turtle, screen):
    r = screen.window_width() / 2
    u = screen.window_height() / 2

    x, y = turtle.position()

    return -r < x < r and -u < y < u

def move_to(turtle, screen):
    turtle.forward(randrange(1, 100))

    turtle.left(randrange(-180, 180))  # negative left turn is a right turn

    return is_in_screen(turtle, screen)

def random_movement(turtle_1, turtle_2, screen):
    while move_to(turtle_1, screen) and move_to(turtle_2, screen): pass

screen = Screen()

t1 = Turtle()
t1.color("green")

t2 = Turtle()
t2.color("purple")

random_movement(t1, t2, screen)

screen.exitonclick()
0 голосов
/ 07 октября 2018

Вы ищете ключевое слово pass.

while (flag):
    pass
...