函数中的python变量未更新

2024-10-01 07:24:01 发布

您现在位置:Python中文网/ 问答频道 /正文

class car():
    def __init__(self,make,model,year,fuel_capacity,perkilometer):
        self.make = make
        self.model = model
        self.year = year
        self.fuel_capacity = fuel_capacity
        self.perkilometer = perkilometer

        self.fuel_level = 0

    def fill_tank(self):
        """fills the tank full capacity"""
        self.fuel_level = self.fuel_capacity
        print 'Tank is Full'

    def drive(self):
        """drives untill out of gas"""
        print 'car is moving'
        i = 0

        while 0 <= self.fuel_level:

            self.fuel_level -= self.perkilometer
            print '%s kilometres' % (self.fuel_level-(self.fuel_level-i))
            i+=1

        print 'out of gas'

    def travel(self,kilometer):
        """travels for distance given"""
        self.kilometer = kilometer
        print 'Car is moving'
        i=0

        while 0!=kilometer:
            kilometer-=1

            i+=1

            if self.fuel_level >= self.perkilometer:
                self.fuel_level -= self.perkilometer
                print '%s kilometres' % (kilometer - (kilometer - i))

            elif self.fuel_level < self.perkilometer:
                self.fuel_level=0
                print 'Out of Gas'
                return 0

            elif self.fuel_level == 0:
                print 'Out of Gas'
                return 0

        print 'Reached to destination'

    def continue_driving(self):
        distance_left = self.kilometer - self.fuel_level / self.perkilometer
        leters_needed = distance_left * self.perkilometer

        if distance_left<=self.fuel_level/self.perkilometer:
            print 'Have enough gas to continue'

        else:
            print 'Need %s leter more'% leters_needed


    def update_fuel_level(self,new_level):
        if  new_level <= self.fuel_capacity:
            self.fuel_level = new_level
            print 'Tank has %s leters' % self.fuel_level
        else:
            print "Tank can't hold that much"


    def add_fuel(self,amount):
        """adds fuel to gas tank"""

        if self.fuel_level+amount<=self.fuel_capacity:
            self.fuel_level+=amount
            print 'Added fuel %s leters '%amount

        else:
            print "Tank won't hold that much"

#somehow fuel level is not updating after or in add_fuel func.

my_car = car('hyundai','i20','2016','45',0.083)
my_car.fuel_level = 2
my_car.travel(50)
my_car.add_fuel(1)
my_car.continue_driving()

输出:

^{pr2}$

我用python做了这辆车,但当我使用continue_driving方法时,似乎fuel_level不更新就找不到错误。在

我想做的主要是计算油箱里的汽油是否足够,如果不给油箱加油的话。在

你可以看到,当我运行这个代码,它说我们需要3.15升,但它应该是8.3/2-(1+2)=2.15


Tags: ofselfismydefcarleveldistance
1条回答
网友
1楼 · 发布于 2024-10-01 07:24:01

您没有跟踪行驶距离。

你试图根据你消耗的燃料和每公里的升数来计算你的剩余距离。在

distance_left = self.kilometer - self.fuel_level / self.perkilometer

在使用代码计算distance_left之前,您的代码正在增加self.fuel_level。在

^{pr2}$

我建议你追踪行驶的距离。在

def __init__(self,make,model,year,fuel_capacity,perkilometer):
    self.make = make
    self.model = model
    self.year = year
    self.fuel_capacity = fuel_capacity
    self.perkilometer = perkilometer

    self.fuel_level = 0
    self.distance_traveled = 0

然后每次旅行都增加

if self.fuel_level >= self.perkilometer:
    self.fuel_level -= self.perkilometer
    self.distance_traveled += 1
    print '%s kilometres' % self.distance_traveled

相关问题 更多 >