Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 25, 2020 21:17:01

viktor_kalina
Зарегистрирован: 2020-02-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
выход из цикл
не могу понять цикл выполнять вы имеете ввиду while ?
чет у меня не получается все равно

Офлайн

#2 Фев. 26, 2020 14:00:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

viktor_kalina
не могу понять цикл выполнять вы имеете ввиду while ?
Это псевдокод. Псевдокод пишется для того, чтобы не нужно было соблюдать синтаксис языков программирования. Сам питон тоже близок к псевдокоду, поэтому на нём часто демонстрируют примеры кода.

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



Офлайн

#3 Фев. 26, 2020 17:19:47

viktor_kalina
Зарегистрирован: 2020-02-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
сказал бы сразу что while True )))))))

Офлайн

#4 Фев. 27, 2020 21:54:19

viktor_kalina
Зарегистрирован: 2020-02-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

подскажите плиз почему не идет вправо
задача 17

 #!/usr/bin/python3
from pyrob.api import *
@task
def task_8_27():
    while not cell_is_filled():
        move_up()
    if cell_is_filled():
        move_left()
    if not cell_is_filled():
        move_rigth(2)
if __name__ == '__main__':
    run_tasks()

Офлайн

#5 Фев. 28, 2020 01:56:58

DislocationSH
От: Шостка
Зарегистрирован: 2020-02-28
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

viktor_kalina
подскажите плиз почему не идет вправо задача 17
попробуй так:

 def task_8_27():
    while not cell_is_filled():
        move_up()
    if cell_is_filled():
        move_left()
        if not cell_is_filled():
            move_right(2)

Отредактировано DislocationSH (Фев. 28, 2020 01:57:38)

Офлайн

#6 Фев. 28, 2020 07:44:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

viktor_kalina
сказал бы сразу что while True )))))))
В разных языках это по-разному записывается, а на псевдокоде оно записывается одинаково для всех языков. Для того он и существует. Если посмотришь Википедию, там часто алгоритмы приводятся в виде псевдокода, потому что читающие могут на разных языках программировать и не знать синтаксис других языков.



Отредактировано py.user.next (Фев. 28, 2020 07:44:38)

Офлайн

#7 Фев. 28, 2020 07:46:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

viktor_kalina
подскажите плиз почему не идет вправо
задача 17
Здесь решал.



Офлайн

#8 Март 9, 2020 19:42:36

Romanteg
Зарегистрирован: 2020-03-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next
Привет.
Прочитал всю ветку, над задачей def task_7_5(): № 27 мучаюсь несколько дней. Не говоря про №30: task_9_3 с треугольниками. Бегло посмотрел Основы информатики и вычислительной техники и Программирование для математиков, ответ не нашел, только про близкий к тексту пример о решении по числовому ряду Фибоначчи.

Не хватает понимания использования двух переменных в вашем примере.
Могли бы вы пояснить по пунктам зачем вводится nn = n?
Что это за условие if n < nn и почему использовано оно? Это похоже на 2ой пример, который я написал ниже (счетчик перехода на +n клеток в арифметической последовательности).
Почему идет сразу условие else (а не elif) и что в нем записано?

Благодарю за ответ.

Моих навыков хватило на составление 2 вариантов. 1 рабочий, 2 нет. Прошу не обращать внимание на правильность конструкции и применимость к другим языкам программирования…
1.
 a = 0
    while not wall_is_on_the_right():
        move_right()
        a += 1
    if 37 < a < 41:
        while not wall_is_on_the_left():
            move_left()
            if wall_is_on_the_left():
                for a in range(1):
                    move_right()
                    fill_cell()
                    move_right()
                    b = 2
                    for a in range(7):
                        fill_cell()
                        move_right(b)
                        fill_cell()
                        b += 1
                while not wall_is_on_the_right():
                    move_right()
            if wall_is_on_the_right():
                break
    if 30 <= a <= 37:
        while not wall_is_on_the_left():
            move_left()
            if wall_is_on_the_left():
                for a in range(1):
                    move_right()
                    fill_cell()
                    move_right()
                    b = 2
                    for a in range(6):
                        fill_cell()
                        move_right(b)
                        fill_cell()
                        b += 1
                while not wall_is_on_the_right():
                    move_right()
            if wall_is_on_the_right():
                break
    if 23 <= a < 30:
        while not wall_is_on_the_left():
            move_left()
            if wall_is_on_the_left():
                for a in range(1):
                    move_right()
                    fill_cell()
                    move_right()
                    b = 2
                    for a in range(5):
                        fill_cell()
                        move_right(b)
                        fill_cell()
                        b += 1
                while not wall_is_on_the_right():
                    move_right()
            if wall_is_on_the_right():
                break
    if 17 < a < 23:
        while not wall_is_on_the_left():
            move_left()
            if wall_is_on_the_left():
                for a in range(1):
                    move_right()
                    fill_cell()
                    move_right()
                    b = 2
                    for a in range(4):
                        fill_cell()
                        move_right(b)
                        fill_cell()
                        b += 1
                while not wall_is_on_the_right():
                    move_right()
            if wall_is_on_the_right():
                break

2.
 move_right()
    fill_cell()
    a = 0
    for a in range(20):
        if not wall_is_on_the_right():
            a += 1
            move_right(a)
            fill_cell()
        if wall_is_on_the_right(): break

Офлайн

#9 Март 9, 2020 23:14:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

Romanteg
Прочитал всю ветку, над задачей def task_7_5(): № 27 мучаюсь несколько дней.
Romanteg
Не хватает понимания использования двух переменных в вашем примере.
Могли бы вы пояснить по пунктам зачем вводится nn = n?
Что это за условие if n < nn и почему использовано оно? Это похоже на 2ой пример, который я написал ниже (счетчик перехода на +n клеток в арифметической последовательности).
Почему идет сразу условие else (а не elif) и что в нем записано?

Вот здесь UML-диаграмма деятельности для этой задачи.
диаграмма

Если по шагам её пройдёшь, то увидишь, как nn вырастает всё больше и больше, а n на каждой закрашенной клетке обнуляется. Таким образом n используется для подсчёта пропускаемых клеток, а nn задаёт границу для переменной n, при достижении которой нужно закрасить одну клетку и потом начать всё сначала.


Romanteg
Не говоря про №30: task_9_3 с треугольниками. Бегло посмотрел Основы информатики и вычислительной техники и Программирование для математиков, ответ не нашел, только про близкий к тексту пример о решении по числовому ряду Фибоначчи.
Здесь решал.

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



Отредактировано py.user.next (Март 9, 2020 23:28:49)

Офлайн

#10 Март 10, 2020 17:43:22

Romanteg
Зарегистрирован: 2020-03-09
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Графический исполнитель "Робот"

py.user.next


Добрый вечер. Когда читал гостем не открывалась картинка с uml-диаграммой.

py.user.next
n на каждой закрашенной клетке обнуляется. Таким образом n используется для подсчёта пропускаемых клеток, а nn задаёт границу для переменной n, при достижении которой нужно закрасить одну клетку и потом начать всё сначала.
Не могу понять принцип как вы пришли к такому решению, что нужно использовать зависимость n от nn и что nn задает границу, а затем n еще и сбрасывается… наверное, это приходит с опытом.

Для себя я понимаю решение так:
Шаг направо-закрасить клетку(2).
Проверка: есть ли стена справа
Нет стены: сместиться на 1, закрасить клетку(3)
Проверка: есть ли стена справа
Нет стены: сместиться на 1, проверить есть ли стена? Если нет, то опять сместиться на 1 клетку и проверить есть ли стена.
Но при этом помнить, что закрашивать нужно будет тогда, когда подойдет клетка 5-8-12 и т.д. с определенным увеличением. Как вот это реализовать я не соображу.

Знакомый дал такое решение…

 move_right()
    fill_cell()
    a = 0
    for a in range(20):
        if not wall_is_on_the_right():
            a += 1
            for c in range(a):
                move_right()
                if wall_is_on_the_right(): break
            if wall_is_on_the_right(): break
            fill_cell()

Благодарю за внимание.

Прикреплённый файлы:
attachment task_7_5.png (6,3 KБ)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version