Найти - Пользователи
Полная версия: Графический исполнитель "Робот"
Начало » Python для новичков » Графический исполнитель "Робот"
1 2 3 4 None 14 15 16 17 18 19 20 21 None 28 29 30 31
Mike.Nek
Salavatulin
Здравствуйте уважаемые. Вопрос по обсуждаемой тут практике “исполнитель робот”. Прочитал всё ветку не нашёл подсказки.Задача №16, task_8_22. Не могу понять почему робот не поворачивает в тупике. Хотя условие вроде явно прописано.
move_right и move_left пропущены () в 9 и 12 строках
Salavatulin
Mike.Nek
Как глупо( Спасибо большое. Сколько раз уже из-за таких мелочей кучу времени тратил впустую.
riomenx
Задача №26: task_2_4
Подсказка:
Возьмите функции cross() и row_cross(n) из предыдущей задачи.
Напишите функцию rect_cross(n, m), которая закрашивает m рядов по n крестов в ряд.
Используя эту функцию закрасьте клетки, как на рисунке.
На выходе должно получиться rect_cross(10, 5) примерно
Я использовал один параметр. С двумя никак не доходит до меня. Я не понимаю как задействовать второй параметр. Использовать метод присвоения к переменой? Вот мое решение:
 from pyrob.api import *
import time
def make_cross():
    move_right()
    fill_cell()
    move_down()
    fill_cell()
    move_right()
    fill_cell()
    move_left()
    move_down()
    fill_cell()
    move_up()
    move_left()
    fill_cell()
    move_up()
def row_cross(n):
    while n > 0:
        make_cross()
        move_right()
        move_right()
        if wall_is_on_the_right():
            move_left()
            move_left()
        else:
            move_right()
            move_right()
        n -= 1
def rect_cross(m):
    row_cross(10)
    move_left(36)
    while m > 0:
        move_down(4)
        row_cross(10)
        move_left(36)
        m -= 1
@task(delay=0.02)
def task_2_4():
    rect_cross(4)
if __name__ == '__main__':
    run_tasks()
py.user.next
Mike.Nek
Задача №9: task_8_2
Mike.Nek
Вот мой вариант:
  
#!/usr/bin/python3
from pyrob.api import *
@task
def task_8_2():
    x=True
    while x==True:
        if wall_is_above()==False:
            fill_cell()
        if wall_is_on_the_right()==False:
            move_right()
        else:
            x=False
if __name__ == '__main__':
    run_tasks()
Ты использовал переменную-флаг, а они разрешены там с задачи №27 только.
py.user.next
riomenx
Задача №26: task_2_4
riomenx
Я использовал один параметр. С двумя никак не доходит до меня.

Задача

программа закрасить крест
шагнуть вправо
закрасить ячейку
шагнуть вниз
закрасить ячейку
шагнуть вправо
закрасить ячейку
шагнуть влево
шагнуть вниз
закрасить ячейку
шагнуть вверх
шагнуть влево
закрасить ячейку
шагнуть вверх
конец программы

программа закрасить ряд крестов <вх:n:Z+>
цикл пока n > 0 выполнять
закрасить крест
шагнуть вправо
шагнуть вправо
если справа_есть_стена то
шагнуть влево
шагнуть влево
иначе
шагнуть вправо
шагнуть вправо
конец если
n.уменьшить на 1
конец цикла
конец программы

программа закрасить прямоугольник крестов <вх:n:Z+,вх:m:Z+>
цикл пока m > 0 выполнять
закрасить ряд крестов <вх:n>
цикл пока слева_нет_стены выполнять
шагнуть влево
конец цикла
шагнуть вниз
шагнуть вниз
если снизу_есть_стена то
шагнуть вверх
шагнуть вверх
иначе
шагнуть вниз
шагнуть вниз
конец если
m.уменьшить на 1
конец цикла
конец программы

закрасить прямоугольник крестов <вх:10,вх:5>

[guest@localhost pyrob]$ python3 task_26.py 
INFO:pyrob:Starting task task_2_4
INFO:pyrob:Task task_2_4 finished: +
INFO:pyrob:Total: 1/1
[guest@localhost pyrob]$
riomenx
py.user.next
Все довольно просто и понятно. А вот по поводу следующих задач. Использование переменных-флагов и переменных-счётчиков в каких лекциях упоминается. Что то я не припомню. Если где то упоминается,то ткните пожалуйста
py.user.next
riomenx
спользование переменных-флагов и переменных-счётчиков в каких лекциях упоминается. Что то я не припомню. Если где то упоминается,то ткните пожалуйста
Флаг - это древнее понятие.

флаг 1
флаг 2
флаг 3

Сам я с флагами познакомился плотно при чтении книги K&R2 (книга по языку C). Во всех материалах говорится, что флаг - это переменная с двоичным значением, которое может быть равно только 0 или 1 (оно же False или True). Но, как оказалось потом, есть ещё “флаги”, которые могут принимать тысячи значений. И их значения обозначаются числами, а числа обозначаются именами в словесной форме.

переменная состояния
FishHook
А роги у этого понятия растут отсюда
PythonSun
Задача 18
def task_8_28():
if not wall_is_above():
while not wall_is_above():
move_up()
if wall_is_above():
while not wall_is_on_the_left():
move_left()


elif wall_is_above() and wall_is_on_the_left():
while wall_is_above():
move_right()
else:
if not wall_is_above():
while not wall_is_above():
move_up()
if wall_is_above():
while not wall_is_on_the_left():
move_left()


elif wall_is_above() and wall_is_on_the_right():
while wall_is_above():
move_left()
else:
if not wall_is_above():
while not wall_is_above():
move_up()
if wall_is_above():
while not wall_is_on_the_left():
move_left()



elif wall_is_above():
while wall_is_above():
move_right()
if wall_is_on_the_right():
while wall_is_above():
move_left()
else:
if not wall_is_above():
while not wall_is_above():
move_up()
if wall_is_above():
while not wall_is_on_the_left():
move_left()
if __name__ == ‘__main__’:
run_tasks()


Уверен, что можно было сделать код короче, может кто знает как?
py.user.next
PythonSun
Задача 18
PythonSun
Уверен, что можно было сделать код короче, может кто знает как?
Здесь делал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB