Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/64: Рейтинг темы: голосов - 64, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 29.10.2021
Сообщений: 10

Задача с циклом while

01.11.2021, 10:19. Показов 16381. Ответов 10

Студворк — интернет-сервис помощи студентам
Очень секретное место, это Поле чудес! Лиса и Кот согласились отвести туда Буратино только с завязанными глазами. Но ему так хочется запомнить дорогу!
Напишите программу, которая определит, куда его в конце концов привели относительно начальной точки. В начальной точке Буратино смотрит по направлению оси y, то есть вверх.

Формат ввода
Вводятся строки, это могут быть слова направо, налево, шаг, а могут и какие-то другие, не связанные с перемещением.
шаг означает перемещение на единичный отрезок;
направо или налево – поворот без перемещения.
На все другие слова можно не обращать внимания. Последнее введенное слово – СТОП.

Формат вывода
Выведите, где оказался Буратино в конце концов по отношению к исходному положению. Например, если он находится в точке, которая правее на 3 и ниже на 2, то нужно вывести 3 -2.

Пример 1

Ввод
шаг
шаг
ай
налево
шаг
направо
шаг
шаг
СТОП

Вывод
-1 4

Пример 2

Ввод
направо
шаг
шаг
шаг
направо
шаг
налево
шаг
ой-ёй-ёй
шаг
налево
шаг
СТОП

Вывод
5 0
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.11.2021, 10:19
Ответы с готовыми решениями:

Задача с циклом While
Здравствуйте уважаемые участники этого форума! Помогите пожалуйста со следующим заданием: Задание: Бегун готовится к соревнованиям....

Задача со со списками и циклом for
Напиши программу, которая изменяет исходный список с элементами так, что первый элемент нового списка равен сумм первого и второго...

Задача с циклом while и массивами
Помогите решить задание 1. Дано целое число М. Нужно найти наименьшее целое отрицательное число k, при котором 3 k> M. 2. Дано...

10
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
01.11.2021, 11:02
Frond2, как то так


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dim = ((0, 1), (1, 0), (0, -1), (-1, 0))
pos = [0, 0]
cur = 0
while True:
    move = input()
    if move == 'СТОП':
        break
    if move in ('налево', 'направо'):
        cur += [-1, 1][move == 'направо']
        if abs(cur) == 4:
            cur = cur % 4
    if move == 'шаг':
        pos = list(map(sum, zip(pos, dim[cur])))
print(*pos)
1
0 / 0 / 0
Регистрация: 23.01.2022
Сообщений: 8
23.01.2022, 12:24
Мой код, но не понимаю где ошибка. А нужно именно только с помощью while и if. Помогите, пожалуйста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
s = input()
x = 0
y = 0
while s != 'СТОП':
    if s == 'шаг':
        y = y + 1
    if s =='направо':
        if s =='шаг':
            x = x + 1
            if s =='налево':
                if s =='шаг':
                    y = y - 1
    if s =='налево':
        if s =='шаг':
            x = x - 1
            if s =='направо':
                if s =='шаг':
                    y = y + 1
                
          
    s = input()
print(x, y, sep=' ')
0
23.01.2022, 13:10

Не по теме:

Delete

0
0 / 0 / 0
Регистрация: 23.01.2022
Сообщений: 8
23.01.2022, 13:14
Ещё вот такая реализация..но всёже не получается(
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
s = input()
x = 0
y = 0
while s != 'СТОП':
    if s == 'шаг':
        y = y + 1
        
        if s == 'налево':
            x = x - 1
            
        elif s == 'направо':
            x = x + 1
            y = y + 1
        if s =='направо':
            y = y -1
            x = x + 1
        elif s =='налево':
            y = y + 1
            x = x + 1
    print(x, y, sep=' ')
    s = input()
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
23.01.2022, 13:27
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
dir = ( (0, 1), (1, 0), (0, -1), (-1, 0) )
dir_ind = 0
x = 0
y = 0
while True:
    move = input()
    match move:
        case 'СТОП':
            break
        case 'налево':
            dir_ind -= 1
        case 'направо':
            dir_ind += 1
        case 'шаг':
            dir_ind %= len(dir)
            x += dir[dir_ind][0]
            y += dir[dir_ind][1]
print(x, y)
0
0 / 0 / 0
Регистрация: 23.01.2022
Сообщений: 8
23.01.2022, 13:36
Классно, но мне именно нужно решить максимально простым способом
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
23.01.2022, 14:30
kroshkamyshka, ну так придумай рабочий способ проще, в чем проблема то.
0
0 / 0 / 0
Регистрация: 23.01.2022
Сообщений: 8
23.01.2022, 14:33
ни в чём..вопрос мой читайте...я прошу помочь с моей программой, а не писать новую..
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
23.01.2022, 20:09
Цитата Сообщение от kroshkamyshka Посмотреть сообщение
нужно решить максимально простым способом
Самым простым способом эта задача решается в комплексных числах:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
dir = 1j
pos = complex()
while True:
    move = input()
    match move:
        case 'СТОП':
            break
        case 'налево':
            dir *= 1j
        case 'направо':
            dir /= 1j
        case 'шаг':
            pos += dir
print( pos.real, pos.imag )
1
0 / 0 / 0
Регистрация: 09.12.2025
Сообщений: 1
09.12.2025, 14:55
Я сделал так, что при получении Направо или Налево изменяется условный угол повтора и исходя из него буратино уже делает шаг x,y=координаты, p=угол поворота

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
x=0
y=0
p=0
a=input()
while a!="СТОП":
    if a=="шаг":
        if p==0 or p==360 or p==-360: y+=1
        if p==90 or p==-270: x+=1
        if p==180 or p==-180: y-=1
        if p==270 or p==-90: x-=1
    elif a=="налево":
        p-=90
    elif a=="направо":
        p+=90
    else: 
        x+=0
        y+=0
    a=input()
print(x,y)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.12.2025, 14:55
Помогаю со студенческими работами здесь

Задача с детерминированным циклом

Задача с итерационным циклом

Задача с циклом For
Есть такая задача, вроде простая, но когда я задавал ранг, то у меня выдавало ошибку.(

Задача с циклом For
Даны целые неотрицательные числа a, b, c, d, при этом 0≤c<d. Выведите в порядке возрастания все числа от a до b, которые дают остаток c при...

Задача с циклом
Пользуясь циклом, вывести полный текст песни на экран, если один куплет имеет следующий вид: << X green bottles hanging on the...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru