应乘云 发表于 2020-4-24 14:52:23

报错类未定义的问题

今天学习pycharm,在官网中有如下一段程序,但是我运行的时候报错,报的错是name 'Car' is not defined,意思应该是Car没有定义,可是我明显定义了类的啊,到底是怎么回事?求帮助!
class Car:
    def __init__(self,speed=0):
      self.speed = speed
      self.odometer = 0
      self.time = 0

    def say_state(self):
      print("I'm going {} kph!".format(self.speed))

    def accelerate(self):
      self.speed += 5

    def brake(self):
      self.speed -= 5

    def step(self):
      self.odometer +=self.speed
      self.time += 1

    def average_speed(self):
      if self.time != 0:
            returnself.odometer/self.time
      else:
            pass

    if __name__ == '__main__':
      my_car = Car()
      print("I'm a car!")
      while True:
            action = input("what should I do?ccelerate,rake,"
                           "showdometer,or show averagepeed?").upper()
            if action not in "ABOS" or len(action)!=1:
                print("I don't know how to do that")
                continue
            if action == 'A':
                my_car.accelerate()
            elif action == 'B':
                my_car.brake()
            elif action == 'O':
                print("The car has driven {} kilometers".format(my_car.odometer))
            elif action == 'S':
                print("The car's average speed was {} kph".format(my_car.average_speed()))
            my_car.step()
            my_car.say_state()

hrp 发表于 2020-4-24 14:54:20

目测从if __name__那行开始,缩进都多了一级。

wuqramy 发表于 2020-4-24 14:56:06

    if __name__ == '__main__':
      my_car = Car()
      print("I'm a car!")
      while True:
            action = input("what should I do?ccelerate,rake,"
                           "showdometer,or show averagepeed?").upper()
            if action not in "ABOS" or len(action)!=1:
                print("I don't know how to do that")
                continue
            if action == 'A':
                my_car.accelerate()
            elif action == 'B':
                my_car.brake()
            elif action == 'O':
                print("The car has driven {} kilometers".format(my_car.odometer))
            elif action == 'S':
                print("The car's average speed was {} kph".format(my_car.average_speed()))
            my_car.step()
            my_car.say_state()

这一段多了一个缩进
应该是这样的:
if __name__ == '__main__':
    my_car = Car()
    print("I'm a car!")
    while True:
      action = input("what should I do?ccelerate,rake,"
                     "showdometer,or show averagepeed?").upper()
      if action not in "ABOS" or len(action)!=1:
            print("I don't know how to do that")
            continue
      if action == 'A':
            my_car.accelerate()
      elif action == 'B':
            my_car.brake()
      elif action == 'O':
            print("The car has driven {} kilometers".format(my_car.odometer))
      elif action == 'S':
            print("The car's average speed was {} kph".format(my_car.average_speed()))
      my_car.step()
      my_car.say_state()

应乘云 发表于 2020-4-24 14:56:42

太感谢了,我是新手,复制了一段代码还运行不过,今天被打击惨了。谢谢您帮我解决该问题,真的是缩进的问题,谢谢!

应乘云 发表于 2020-4-24 14:57:30

hrp 发表于 2020-4-24 14:54
目测从if __name__那行开始,缩进都多了一级。

太感谢了,我是新手,复制了一段代码还运行不过,今天被打击惨了。谢谢您帮我解决该问题,真的是缩进的问题,谢谢!

应乘云 发表于 2020-4-24 14:58:20

wuqramy 发表于 2020-4-24 14:56
这一段多了一个缩进
应该是这样的:

谢谢,确实是

hrp 发表于 2020-4-24 14:59:55

应乘云 发表于 2020-4-24 14:57
太感谢了,我是新手,复制了一段代码还运行不过,今天被打击惨了。谢谢您帮我解决该问题,真的是缩进的问 ...

没关系的,刚学的时候犯这种错误很正常
页: [1]
查看完整版本: 报错类未定义的问题