class Car():
    # Пробег
    kilometer = 0

    def fill(self, add_gas):
        total = self.gas + add_gas
        if total <= self.capacity:
            self.gas += add_gas
            print('залито', add_gas, 'топлива\n')
        if total > self.capacity:
            self.gas += (add_gas - (total - self.capacity))
            print('залито до полного бака:', add_gas - (total - self.capacity), ',', total - self.capacity, '- лишние\n')

    def ride(self, expense):
        # Сколько можем проехать из желаемого
        possible_drive = self.gas / self.per_km

        # Сколко едем по факту
        if expense < possible_drive:
            fact_drive = expense
        else: fact_drive = possible_drive

        if fact_drive < expense:
            print('Можем проехать только', fact_drive, 'км')
        self.gas -= (fact_drive * self.per_km)
        self.kilometer += fact_drive
        self.per_km += ((self.per_km * 0.01 * fact_drive) / 100)

        print('Проехано:', fact_drive, 'км\n')

    def __init__(self, gas, capacity, per_km):
        self.capacity = capacity
        self.gas = gas
        self.per_km = per_km

    def __str__(self):
        return 'Вместимость бака: ' + str(self.capacity) + '\nТоплива в баке: ' + str(self.gas) + '\nРасход на километр: ' + str(self.per_km) + '\nПробег:' + str(self.kilometer) +'\n'


c1 = Car(2, 40, 0.1)
print('Cтааартуем\n\n', c1, sep='')

while True:
    expense = input('Сколько желаем проехать: \n (n - exit)')
    if expense == 'n':
        break
    else:
        c1.ride(int(expense))

    if c1.gas <= 0:
        print('Топливо закончилось!')
        print('Залить до полного? y/n')
        if input() == 'y':
            c1.fill(c1.capacity)
        else: break

print(c1)
