gavin1225 发表于 2022-4-2 09:01:23

求助,不太理解为什么跳过if语句了

研究半天不太明白,求大哥们解惑

类里面添加属性默认值self.odometer_reading = 0

然后添加了undate_odometer方法,设定了一个条件

当update_odometer的参数mileage大于默认值时,则self.odometer_reading = mileage

当update_odometer的参数mileage小于默认值时,则打印print语句提示

但是实例中用update_odometer给参数为负数,运行后也会输出负数的值。

怎样才可能让条件能够正常判断?

class Car():
    """一次模拟汽车的简单尝试"""

    def __init__(self,make,model,year):
      """初始化描述汽车的属性"""
      self.make = make
      self.model = model
      self.year = year
      self.odometer_reading = 0

    def get_descriptive_name(self):
      """返回整洁的描述性信息"""
      print(f'品牌:{self.make.title()}\n型号:{self.model.title()}\n上市时间:{self.year}')

    def update_odometer(self,mileage):
      """"
      将里程表读数设置为指定的值
      禁止将里程表读数回调
      """
      self.odometer_reading = mileage
      if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
      else:
            print('禁止回调里程数!!')

    def read_odometer(self):
      print(f"里程数:{self.odometer_reading} Km")
      
my_new_car = Car('audi','a4','2016')
my_new_car.get_descriptive_name()
my_new_car.update_odometer(-10)
my_new_car.read_odometer()

isdkz 发表于 2022-4-2 09:03:52

本帖最后由 isdkz 于 2022-4-2 09:05 编辑

class Car():
    """一次模拟汽车的简单尝试"""

    def __init__(self,make,model,year):
      """初始化描述汽车的属性"""
      self.make = make
      self.model = model
      self.year = year
      self.odometer_reading = 0

    def get_descriptive_name(self):
      """返回整洁的描述性信息"""
      print(f'品牌:{self.make.title()}\n型号:{self.model.title()}\n上市时间:{self.year}')

    def update_odometer(self,mileage):
      """"
      将里程表读数设置为指定的值
      禁止将里程表读数回调
      """
      #      self.odometer_reading = mileage                这一句在 if 外面,无论如何也会执行,所以不要这句就可以了
      if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
      else:
            print('禁止回调里程数!!')

    def read_odometer(self):
      print(f"里程数:{self.odometer_reading} Km")
      
my_new_car = Car('audi','a4','2016')
my_new_car.get_descriptive_name()
my_new_car.update_odometer(-10)
my_new_car.read_odometer()

gavin1225 发表于 2022-4-2 09:06:59

isdkz 发表于 2022-4-2 09:03


{:10_266:}{:10_266:}谢谢,还是不细心犯的错
页: [1]
查看完整版本: 求助,不太理解为什么跳过if语句了