К роботу Валли отправили ещё одного робота Билли. Это его первый поход на Марс, поэтому он тестируется в прямоугольном помещении размером 15 на 20 метров. Марсоход высаживается в центре комнаты (в точке 8, 10), после чего управление им передаётся оператору - пользователю вашей программы. Программа спрашивает в какую сторону оператор хочет направить робота: север (клавиша W), юг (клавиша S), запад (клавиша A) или восток (клавиша D). Оператор делает выбор, марсоход перемещается на 1 метр в эту сторону и программа сообщает новую позицию марсохода. Если марсоход упёрся в стену, то он не должен пытаться перемещаться в сторону стены, в этом случае его позиция не меняется.
Пример:
[Программа]: Марсоход находится на позиции 6, 19, введите команду:
[Оператор]: A
[Программа]: Марсоход находится на позиции 5, 19, введите команду:
[Оператор]: W
[Программа]: Марсоход находится на позиции 5, 20, введите команду:
[Оператор]: W
[Программа]: Марсоход находится на позиции 5, 20, введите команду:
Другие языки программирования и технологии
Задание Python.Немного озадачила, помогите решить.
а что сложного? создать бесконечный цикл. в нём менять значения переменных в зависимости от выбранной буквы. предварительно проверяя не достигнет ли переменная крайних значений
x = 8
y = 10
while True:
~~ print(f'Марсоход находится на позиции {x}, {y}, введите команду:')
~~ vector = input()
~~ if vector == 'w': y += 1
~~ if vector == 's': y -= 1
~~ if vector == 'a' :x -= 1
~~ if vector == 'd': x += 1
~~ if x > 15: x = 15
~~ if y > 20: y = 20
~~ if x < 0: x = 0
~~ if y < 0: y = 0
y = 10
while True:
~~ print(f'Марсоход находится на позиции {x}, {y}, введите команду:')
~~ vector = input()
~~ if vector == 'w': y += 1
~~ if vector == 's': y -= 1
~~ if vector == 'a' :x -= 1
~~ if vector == 'd': x += 1
~~ if x > 15: x = 15
~~ if y > 20: y = 20
~~ if x < 0: x = 0
~~ if y < 0: y = 0
Шатунов Андрей
~~ if vector == 'w': y += 1 (что такое 'vector')
Сергей Блинов
А почему, когда используешь elif, ничего не получается и счётчик становится отрицательным? А только потом поменял всё на if и всё получилось.
***serega ***
Еще не знаете как работает условный оператор, но знаете как говно-кодить удивительно!
print('Задача 5. Марсоход 2')
x = 10
y = 8
while True:
step = input('Марсоход находится на позиции ' + str(y) + ', ' + str(x) + ', введите команду: ')
if step == "w" or step == "W":
if x < 20 and x >= 1:
x += 1
elif step == "s" or step == "S":
if x <= 20 and x > 1:
x -= 1
elif step == "d" or step == "D":
if y < 15 and y >= 1:
y += 1
elif step == "a" or step == "A":
if y <= 15 and y > 1:
y -= 1
x = 10
y = 8
while True:
step = input('Марсоход находится на позиции ' + str(y) + ', ' + str(x) + ', введите команду: ')
if step == "w" or step == "W":
if x < 20 and x >= 1:
x += 1
elif step == "s" or step == "S":
if x <= 20 and x > 1:
x -= 1
elif step == "d" or step == "D":
if y < 15 and y >= 1:
y += 1
elif step == "a" or step == "A":
if y <= 15 and y > 1:
y -= 1
Роман Назмутдинов
Лучшее решение!
ordinate = 8
abscissa = 10
print('[Программа]: Марсоход находится на позиции:', abscissa, ',', ordinate, ',', 'введите команду:')
while True:
coordinates = input('[Оператор]: ')
if coordinates == 'A':
ordinate = ordinate
abscissa -= 1
if coordinates == 'D':
ordinate = ordinate
abscissa += 1
if coordinates == 'W':
ordinate += 1
abscissa = abscissa
if coordinates == 'S':
ordinate -=1
abscissa = abscissa
if ordinate > 15:
ordinate = 15
if ordinate < 0:
ordinate = 0
if abscissa > 20:
abscissa = 20
if abscissa < 0:
abscissa = 0
print('[Программа]: Марсоход находится на позиции:', abscissa, ',', ordinate, ',', 'введите команду:')
abscissa = 10
print('[Программа]: Марсоход находится на позиции:', abscissa, ',', ordinate, ',', 'введите команду:')
while True:
coordinates = input('[Оператор]: ')
if coordinates == 'A':
ordinate = ordinate
abscissa -= 1
if coordinates == 'D':
ordinate = ordinate
abscissa += 1
if coordinates == 'W':
ordinate += 1
abscissa = abscissa
if coordinates == 'S':
ordinate -=1
abscissa = abscissa
if ordinate > 15:
ordinate = 15
if ordinate < 0:
ordinate = 0
if abscissa > 20:
abscissa = 20
if abscissa < 0:
abscissa = 0
print('[Программа]: Марсоход находится на позиции:', abscissa, ',', ordinate, ',', 'введите команду:')
Сергей Блинов
А почему, когда используешь elif, ничего не получается и счётчик становится отрицательным? А только потом поменял всё на if и всё получилось.
x = 8
y = 10
while True:
print('\nМарсоход находится на позиции', x, y)
step = input('введите команду:')
if step == 'a' and x != 0:
x -= 1
elif step == 'd' and x != 15:
x += 1
elif step == 'w' and y != 20:
y += 1
elif step == 's' and y != 0:
y -= 1
y = 10
while True:
print('\nМарсоход находится на позиции', x, y)
step = input('введите команду:')
if step == 'a' and x != 0:
x -= 1
elif step == 'd' and x != 15:
x += 1
elif step == 'w' and y != 20:
y += 1
elif step == 's' and y != 0:
y -= 1
Вадим Шмаков
Мой код единственно верный
все можно гораздо короче сделать и надпись и ввод один раз записать
x = 8
y = 10
room = input('Марсоход находится на позиции 8, 10 введите команду: ')
while x != -1 and y != -1:
if x < 15 and y <20:
if (room == 'W') or (room == 'w'):
y += 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'S') or (room == 's'):
y -= 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'A') or (room == 'a'):
x -= 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'D') or (room == 'd'):
x += 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
y = 10
room = input('Марсоход находится на позиции 8, 10 введите команду: ')
while x != -1 and y != -1:
if x < 15 and y <20:
if (room == 'W') or (room == 'w'):
y += 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'S') or (room == 's'):
y -= 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'A') or (room == 'a'):
x -= 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
elif (room == 'D') or (room == 'd'):
x += 1
print('Марсоход находится на позиции', x, y,'введите команду: ', end='')
room = input()
posit_x = 8
posit_y = 10
while True:
print('[Программа]: Марсоход находится на позиции', posit_x,',', posit_y,',', 'введите команду: ')
position = input('[Оператор]: ')
if posit_x != -1 and posit_y != -1:
if posit_x <= 15 and posit_y <= 20:
if (position == 'W') or (position == 'w'):
posit_y += 1
elif (position == 'S') or (position == 's'):
posit_y -= 1
elif (position == 'A') or (position == 'a'):
posit_x -= 1
elif (position == 'D') or (position == 'd'):
posit_x += 1
posit_y = 10
while True:
print('[Программа]: Марсоход находится на позиции', posit_x,',', posit_y,',', 'введите команду: ')
position = input('[Оператор]: ')
if posit_x != -1 and posit_y != -1:
if posit_x <= 15 and posit_y <= 20:
if (position == 'W') or (position == 'w'):
posit_y += 1
elif (position == 'S') or (position == 's'):
posit_y -= 1
elif (position == 'A') or (position == 'a'):
posit_x -= 1
elif (position == 'D') or (position == 'd'):
posit_x += 1
Похожие вопросы
- Помогите решить задание по HTML/CSS в Dreamweaver
- помогите решить 2 задание на pascalABC
- Помогите решить задание Pascal
- Помогите решить задачу на языке python
- Помогите решить задачку на python или pascal
- Помогите решить задание по информатике. Нужно написать программу по заданию (см. внутри)
- помогите решить задание на pascal ABC
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- помогите решить задание на С++
- Помогите решить задание С++? Найти разницу в днях между двумя заданными датами???