MIQIWEI 发表于 2020-8-31 17:23:58

求助 谢谢!!

设计一个名为 Robot 的类来表示机器人。机器人在整数2D网格中具有名称和元组位置(x,y)。

机器人的初始化程序使用名称作为参数,以及一个可选的起始位置,该起始位置是元组(x,y),默认为(0,0)。

机器人具有move_to(self,x_position,y_position)方法来设置其在网格中的当前位置,还具有 up(self,displacement)和 right(self,displacement)方法,以将机器人移动给定位移(可以是负数)分别在y或x中。它还需要一种支持以下所示格式的机器人打印的方法。

Test       
robot1 = Robot("Marvin")
print(robot1)
robot1.move_to(5, 11)
print(robot1)
robot1.move_to(1, 2)
print(robot1)
robot1.up(3)
robot1.right(-4)
print(robot1)

result
Marvin is at (0, 0)
Marvin is at (5, 11)
Marvin is at (1, 2)
Marvin is at (-3, 5)

昨非 发表于 2020-8-31 17:26:13

所以你的问题是什么,哪一步卡住了?

hrp 发表于 2020-8-31 17:35:37

我猜是老师布置的作业,题目就差手把手教你写了,不要太懒{:10_256:}

MIQIWEI 发表于 2020-8-31 17:42:44

hrp 发表于 2020-8-31 17:35
我猜是老师布置的作业,题目就差手把手教你写了,不要太懒

emmmmmmmm我就是不会做所以才问的

hrp 发表于 2020-8-31 17:48:11

MIQIWEI 发表于 2020-8-31 17:42
emmmmmmmm我就是不会做所以才问的

等等

hrp 发表于 2020-8-31 17:59:08

MIQIWEI 发表于 2020-8-31 17:42
emmmmmmmm我就是不会做所以才问的

# -*- coding: utf-8 -*-

class Robot(object):
    def __init__(self, name, position=(0, 0)):
      self.name = name
      self.x_pos = position
      self.y_pos = position

    def move_to(self, x_position, y_position):
      self.x_pos = x_position
      self.y_pos = y_position

    def up(self, displacement):
      self.y_pos += displacement

    def right(self, displacement):
      self.x_pos += displacement

    def __str__(self):
      return '%s is at (%d, %d)' % (self.name, self.x_pos, self.y_pos)

手机写的,不知道有没有错漏?

疾风怪盗 发表于 2020-8-31 18:01:43

class Robot():
    def __init__(self, name, x_position=0, y_position=0):
      self.name = name
      self.x = x_position
      self.y = y_position
      print(f'{self.name} is at ({self.x}, {self.y})')

    def move_to(self, x_position, y_position):
      self.x += x_position
      self.y += y_position
      self.x, self.y = self.rangexy(self.x, self.y)

      print(f'{self.name} is at ({self.x}, {self.y})')

    def up(self, displacement):
      self.y += displacement
      self.x, self.y = self.rangexy(self.x, self.y)
      print(f'{self.name} is at ({self.x}, {self.y})')

    def right(self, displacement):
      self.x += displacement
      self.x, self.y = self.rangexy(self.x, self.y)
      print(f'{self.name} is at ({self.x}, {self.y})')

    def rangexy(self, x, y):
      if -5 <= x <= 5:
            x = x
      elif x > 5:
            x = x - 5
      elif x < -5:
            x = x + 5

      if -11 <= y <= 11:
            y = y
      elif y > 11:
            y = y - 11
      elif y < -11:
            y = y + 11

      return x, y


robot1 = Robot('Marvin')
print(robot1)
robot1.move_to(5, 11)
print(robot1)
robot1.move_to(1, 2)
print(robot1)
robot1.up(3)
robot1.right(-4)
print(robot1)

MIQIWEI 发表于 2020-8-31 19:19:57

hrp 发表于 2020-8-31 17:59
手机写的,不知道有没有错漏?

谢谢!!

2915658109 发表于 2020-8-31 19:21:01

卧槽。这什么段位。看都看不懂
页: [1]
查看完整版本: 求助 谢谢!!