Сначала вам нужно сделать объект класса Robot, чтобы иметь возможность использовать его методы. Это называется объектно-ориентированным программированием (ООП), я предлагаю прочитать некоторые из его основ.
Для этой конкретной проблемы вам не нужно решение ООП.
Удалите определение класса и просто используйте саму функцию:
def movement(direction,move):
if direction == "UP":
# mathematical calculations without using self. Just put the numbers or
#variables you have defined before
dis = direction * 10 + move/ 10 # just for sake of having an output
elif direction == "DOWN":
dis = direction * 10 + move/ 10 # just for sake of having an output
elif direction == "RIGHT":
dis = direction * 10 + move/ 10 # just for sake of having an output
elif direction == "LEFT":
dis = direction * 10 + move/ 10 # just for sake of having an output
return dis
direction_list = ["UP","DOWN","LEFT","RIGHT"]
while True:
question = input('Do you want to enter a move? (YES/NO)')
while question == 'YES' or question == "Yes" or question == "yes":
a = input('Input DIRECTION AND DISTANCE').split()
if a[0] in direction_list and a[1].isnumeric():
#direction = a[0]
#distance = a[1]
print(movement(a[0], a[1]))
else:
print('Invalid Input')
break
Обратите внимание, что для вызова метода движения вы должны задать входные аргументы, такие как: Move (a [0],a [1])
Редактировать: Хорошо, заметив, что у вас должно быть решение ООП, я сделал этот кусок кода. Что именно вам нужно:
class Robot(object):
def __init__(self, n=(0,0)):
self.n = n
post = list(n)
self.x = post[0]
self.y = post[1]
def distance(self):
return (self.x **2 + self.y **2) **0.5
def position(self):
print("x: ", self.x,"y: ", self.y)
def movement(self,direction,move):
x_d = self.x
y_d = self.y
if direction == "UP":
y_d = self.y + move
elif direction == "DOWN":
y_d = self.y - move
elif direction == "RIGHT":
x_d = self.x + move
elif direction == "LEFT":
x_d = self.x - move
self.x = x_d
self.y = y_d
return 0
direction_list = ["UP","DOWN","LEFT","RIGHT"]
robot = Robot()
while True:
question = input('Do you want to enter a move? (YES/NO)')
while question == 'YES' or question == "Yes" or question == "yes":
a = input('Input DIRECTION AND DISTANCE').split()
if a[0] in direction_list:
#direction = a[0]
#distance = a[1]
robot.movement(a[0], float(a[1]))
print("Position: ")
robot.position()
print ("distance ",robot.distance())
else:
print('Invalid Input')
break
Сначала я сделал 2 другие функции. Один для расстояния и один для положения. Функция движения не должна ничего выводить. Смысл ООП в том, чтобы все упростить. Для каждого конкретного действия вам нужен определенный метод (то есть функция).
Вы определяете эти методы в своем классе, а затем создаете объект этого класса. И вызывайте функции «через» объект, который вы сделали. Класс подобен инструкции по созданию робота. Пока объект - твой робот. Вы можете сделать столько объектов (роботов), сколько захотите. Каждый объект похож на переменную, которая содержит данные, которые вы записали в определении класса. (Аргументы и методы)
Также [1] всегда является строкой. (он не является числовым, хотя вы проверили его в своем условии if, но это означает, что строка может рассматриваться как числовое значение. Быть числовым отличается от типа int). Я должен был бросить это, чтобы плавать, в то время как я послал это методу движения. (Я не хотел приводить его к int, потому что значение расстояния может быть значением с плавающей запятой, например, 0,6)
В ООП имеются хорошие ресурсы в Интернете. Самый простой - это w3schools. https://www.w3schools.com/python/python_classes.asp