diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..97e05f9b35 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,5 +1,15 @@ # Create a class to hold a city location. Call the class "City". It should have # fields for name, lat and lon (representing latitude and longitude). +import csv + +class City(): + def __init__(self,name,lat,lon): + self.name=name + self.lat=lat + self.lon=lon + + def __repr__(self): + return f'City("{self.name}",{self.lat},{self.lon})' # We have a collection of US cities with population over 750,000 stored in the @@ -18,11 +28,14 @@ def cityreader(cities=[]): # TODO Implement the functionality to read from the 'cities.csv' file - # Ensure that the lat and lon valuse are all floats # For each city record, create a new City instance and add it to the # `cities` list - - return cities + with open('cities.csv') as csvfile: + reader = csv.DictReader(csvfile,delimiter=',') + for row in reader: + city = City(row['city'],float(row['lat']),float(row['lng'])) + cities.append(city) + return cities cityreader(cities) @@ -63,9 +76,21 @@ def cityreader(cities=[]): def cityreader_stretch(lat1, lon1, lat2, lon2, cities=[]): # within will hold the cities that fall within the specified region - within = [] - + if lat127 and x.age<=32)] print(f) # Write a list comprehension that creates a list of new Humans like the old # list, except with all the names uppercase and the ages with 5 added to them. # The "humans" list should be unmodified. print("All names uppercase:") -g = [] +g = [Human(x.name.upper(),x.age+5) for x in humans] print(g) # Write a list comprehension that contains the square root of all the ages. print("Square root of ages:") import math -h = [] +import math +h = [math.sqrt(x.age) for x in humans] print(h) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..a203ab6c08 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,25 @@ # pass # # Put a comment noting which class is the base class +# Answer : Vehicle is a base class + +class Vehicle: + pass + +class FlightVehicle(Vehicle): + pass + +class Starship(FlightVehicle): + pass + +class GroundVehicle(Vehicle): + pass + +class Airplane(FlightVehicle): + pass + +class Car(GroundVehicle): + pass + +class Motorcycle(GroundVehicle): + pass \ No newline at end of file diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..e944995f0d 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,11 +4,12 @@ # object is constructed. class GroundVehicle(): - def __init__(self, num_wheels): + def __init__(self, num_wheels=4,noise='vroooom'): self.num_wheels = num_wheels + self.noise = noise - # TODO - + def drive(self): + return self.noise # Subclass Motorcycle from GroundVehicle. # @@ -17,7 +18,9 @@ def __init__(self, num_wheels): # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" -# TODO +class Motorcycle(GroundVehicle): + def __init__(self): + super().__init__(num_wheels=2,noise='BRAAAP!!') vehicles = [ GroundVehicle(), @@ -28,5 +31,5 @@ def __init__(self, num_wheels): ] # Go through the vehicles list and print the result of calling drive() on each. - -# TODO +for x in vehicles: + print (x.drive())