python 面试题

昨天做了个面试题:

class Car():



    def __init__(self,x = 0, y = 0 , d="N"):
        # x 横坐标
        # y 纵坐标
        # d 方向
        self.x = x
        self.y = y
        self.d = d
    
        self.rotary_table = ["N","E","S","W"]
        self.index = self.rotary_table.index(self.d)
        print("self.index ->",self.index)

        print("init",self.x,self.y,self.d)


    def left(self):
        print("run left")
        self.index = self.index - 1

        if self.index < 0 :
            self.index = self.index + 4
        if self.index > 3 :
            self.index = self.index - 4        
        
        self.d = self.rotary_table[self.index]

    def right(self):
        print("run right")
        self.index = self.index + 1

        if self.index < 0 :
            self.index = self.index + 4
        if self.index > 3 :
            self.index = self.index - 4        
        
        self.d = self.rotary_table[self.index]

    def forward(self):
        print("run forward")
        if self.index == 0:
            self.y = self.y + 1
        elif self.index == 1:
            self.x = self.x + 1
        elif self.index == 2:
            self.y = self.y - 1
        elif self.index == 3:
            self.x = self.x - 1

        pass



    def run(self,line):
        for cmd in line:
            if cmd == "L":
                self.left()
            elif cmd == "R":
                self.right()
            elif cmd == "M":
                self.forward()
            print(self.x,self.y,self.d)

        print("--------------------------")
        print(self.x,self.y,self.d)



if __name__ == "__main__":
    car = Car(x=3,y=3,d="E")

    car.run("MMRMMRMRRM")

    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值