Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 23, 2019 11:16:58

Nakiri
Зарегистрирован: 2019-10-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница

    left = wall_is_on_the_right()
    down = wall_is_above()
    for i in range(9):
        if left:
            move_left()
        else:
            move_right()
        if down:
            move_down()
        else:
            move_up()
Не могу понять, почему данный код работает, а код ниже нет.
  for i in range(9):
        if wall_is_on_the_right():
            move_left()
        else:
            move_right()
        if wall_is_above():
            move_down()
        else:
            move_up()
Разве создание переменной даёт принципиальную разницу?

Отредактировано Nakiri (Окт. 23, 2019 11:18:18)

Офлайн

#2 Окт. 23, 2019 11:35:53

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Разница

Nakiri
Разве создание переменной даёт принципиальную разницу?
Дает, потому что переменная создается ДО цикла, а функцию вы вызываете на каждой иттерации цикла, и каждый раз функция может давать разный результат.



Офлайн

#3 Окт. 23, 2019 11:43:39

Nakiri
Зарегистрирован: 2019-10-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница

FishHook
каждый раз функция может давать разный результат
Получается в переменной фиксируется значение True и переменная подставляется с конкретным значением. Тогда если я делаю так
 if wall_is_on_the_right() == True:
это будет эквивалентно той переменной?

Отредактировано Nakiri (Окт. 23, 2019 11:45:14)

Офлайн

#4 Окт. 23, 2019 11:57:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Разница

Nakiri
это будет эквивалентно той переменной?
С какой радости?



Офлайн

#5 Окт. 23, 2019 12:03:15

Nakiri
Зарегистрирован: 2019-10-23
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Разница

FishHook
С какой радости?
Неправильно выразил мысль, не эквивалентно, а условия одинаковые.
Т,е
 if wall_is_on_the_right() == True:
Если справа стена, делай то.
 if left:
Если справа стена, ибо если стена возвращает True, делай то.

И еще один вопрос если можно.
 while not wall_is_on_the_left():
это равно?
  while wall_is_on_the_left() == False:
.

Отредактировано Nakiri (Окт. 23, 2019 12:13:32)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version