Writing output of function to a csv file

Ciarán Hudson ciaran.hudson at gmail.com
Mon May 25 14:00:27 EDT 2020


Hi,

In the code below, which is an exercise I'm doing in class inheritance, almost everything is working except outputting my results, which as the function stock_count, to a csv.
stock_count is working in the code.
And I'm able to open and close the csv called cars, but the stock_count output is not being written to the file.
Any suggestions?

There are 2 python files as the exercise is about class inheritance.
I'll paste the code from both.

cars.py

# Define a class for my car

class Car(object):
    # implement the car object.
    
    def __init__(self):
        self.__colour = ''
        self.__make = ''
        self.__mileage = 0
        self.engineSize = ''

    def getColour(self):
        return self.__colour

    def getMake(self):
        return self.__make

    def getMileage(self):
        return self.__mileage

    def setColour(self, colour):
        self.__colour = colour

    def setMake(self, make):
        self.__make = make

    def setMileage(self, mileage):
        self.__mileage = mileage

    def paint(self, colour):
        self.__colour = colour
        return self.__colour

    def move(self, distance):
        self.__mileage = self.__mileage + distance
        return self.__mileage
    
    
class ElectricCar(Car):
     
    def __init__(self):
        self.__numberFuelCells = 1
         
    def getNumberFuelCells(self):
        return self.__numberFuelCells
    
    def setNumberFuelCells(self, value):
        self.__numberFuelCells
        
class PetrolCar(Car):
   
    def __init__(self):
        self.__choke = 0
    
    def __getChoke(self):
        return self.__choke
    
    def __setChoke(self, value):
        self.__choke = value
        
class DieselCar(Car):
   
    def __init__(self):
        self.__dpf = 0
    
    def __getDpf(self):
        return self.__dpf
    
    def __setDpf(self, value):
        self.__dpf = value
        
        
class HybridCar(Car):
   
    def __init__(self):
        self.__regeneration = 0
    
    def __getRegeneration(self):
        return self.__regeneration
    
    def __setRegeneration(self, value):
        self.__regeneration = value



dealership.py
import csv
from car import Car, ElectricCar, PetrolCar, DieselCar, HybridCar



class Dealership(object):

    def __init__(self):
        self.electric_cars = []
        self.petrol_cars = []
        self.diesel_cars = []
        self.hybrid_cars = []

    def create_current_stock(self):
        for i in range(6):
           self.electric_cars.append(ElectricCar())
        for i in range(20):
           self.petrol_cars.append(PetrolCar())
        for i in range(10):
           self.diesel_cars.append(DieselCar())
        for i in range(4):
           self.hybrid_cars.append(HybridCar())
        
        

    def stock_count(self):
        print('petrol cars in stock ' + str(len(self.petrol_cars)))
        print('electric cars in stock ' + str(len(self.electric_cars)))
        print('diesel cars in stock ' + str(len(self.diesel_cars)))
        print('hybrid cars in stock ' + str(len(self.hybrid_cars)))
        

    def rent(self, car_list, amount):
        if len(car_list) < amount:
            print('Not enough cars in stock')
            return
        total = 0
        while total < amount:
           car_list.pop()
           total = total + 1
           
           

    def process_rental(self):
        answer = input('would you like to rent a car? y/n')
        if answer == 'y':
            self.stock_count()
            answer = input('what type would you like? p/e/d/h')
            amount = int(input('how many would you like?'))
            if answer == 'p':
                self.rent(self.petrol_cars, amount)
            if answer == 'd':
                self.rent(self.diesel_cars, amount)
            if answer == 'h':
                self.rent(self.hybrid_cars, amount)
            else:
                self.rent(self.electric_cars, amount)
        self.stock_count()
        
        file = open("cars.csv","w")
        file.write(str(self.stock_count()))
        file.close()
        

dealership = Dealership()
dealership.create_current_stock()
proceed = 'y'
while proceed == 'y':
    dealership.process_rental()
    proceed = input('continue? y/n')



More information about the Python-list mailing list