diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..fe3bb9c38a 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -2,6 +2,14 @@ # fields for name, lat and lon (representing latitude and longitude). +class City: + def __init__(self, name, lat, lon): + self.name = name + self.lat = lat + self.lon = lon + def __str__(self): + return str(self.__dict__) + # We have a collection of US cities with population over 750,000 stored in the # file "cities.csv". (CSV stands for "comma-separated values".) # @@ -14,15 +22,23 @@ # # Note that the first line of the CSV is header that describes the fields--this # should not be loaded into a City object. +import csv + cities = [] + 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 + # TODO Implement the functionality to read from the 'cities.csv' file + with open('cities.csv') as csvfile: + readCSV = csv.reader(csvfile) + for row in readCSV: + # For each city record, create a new City instance + # Ensure that the lat and lon values are all floats + city = City(name=row[0], lat=row[3], lon=row[4]) + # and add it to the `cities` list + cities.append(city) + return cities + cityreader(cities) @@ -30,6 +46,7 @@ def cityreader(cities=[]): for c in cities: print(c) + # STRETCH GOAL! # # Allow the user to input two points, each specified by latitude and longitude. @@ -62,10 +79,10 @@ def cityreader(cities=[]): # TODO Get latitude and longitude values from the user def cityreader_stretch(lat1, lon1, lat2, lon2, cities=[]): - # within will hold the cities that fall within the specified region - within = [] - - # Go through each city and check to see if it falls within - # the specified coordinates. + # within will hold the cities that fall within the specified region + within = [] + + # Go through each city and check to see if it falls within + # the specified coordinates. - return within + return within diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..8a8a719475 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -1,6 +1,8 @@ # The following list comprehension exercises will make use of the # defined Human class. class Human: + name: object + def __init__(self, name, age): self.name = name self.age = age @@ -24,48 +26,50 @@ def __repr__(self): # Write a list comprehension that creates a list of names of everyone # whose name starts with 'D': print("Starts with D:") -a = [] +a = [x.name for x in humans if x.name[0] == 'D'] + + print(a) # Write a list comprehension that creates a list of names of everyone # whose name ends in "e". print("Ends with e:") -b = [] +b = [x.name for x in humans if x.name[-1] == "e"] print(b) # Write a list comprehension that creates a list of names of everyone # whose name starts with any letter between 'C' and 'G' inclusive. print("Starts between C and G, inclusive:") -c = [] +c = [x.name for x in humans if x.name[0] == "C" or x.name[0] == "D" or x.name[0] == "E" or x.name[0] == "F" or x.name[0] == "G"] print(c) # Write a list comprehension that creates a list of all the ages plus 10. print("Ages plus 10:") -d = [] +d = [x.age for x in humans if x.age >= 10] print(d) # Write a list comprehension that creates a list of strings which are the name # joined to the age with a hyphen, for example "David-31", for all humans. print("Name hyphen age:") -e = [] +e = [x.name + "-" + str(x.age) for x in humans] print(e) # Write a list comprehension that creates a list of tuples containing name and # age, for example ("David", 31), for everyone between the ages of 27 and 32, # inclusive. print("Names and ages between 27 and 32:") -f = [] +f = [(x.name, x.age) for x in humans if x.age == 27 or x.age == 28 or x.age == 29 or x.age == 30 or x.age == 31 or 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 = [x.name.upper() + str(x.age + 10) 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 = [] +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..3d6f1aa2e8 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,34 @@ # pass # # Put a comment noting which class is the base class +class Vehicle: + def __init__(self): + self.data = [] + #Base Class + +class GroundVehicle(Vehicle): + def __init__(self): + self.data = [] + +class Car(GroundVehicle, Vehicle): + def __init__(self, make, model, year): + self.make = make + self.model = model + self.year = year + +class Motorcycle(GroundVehicle, Vehicle): + def __init__(self, make, model, year): + self.make = make + self.model = model + self.year = year + +class FlightVehicle(Vehicle): + def __init__(self): + self.data = [] +class Airplane(FlightVehicle): + def __init__(self): + self.data = [] + +class Starship(FlightVehicle, Vehicle): + def __init__(self): + self.data = [] diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..5632433aaf 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -3,11 +3,13 @@ # Also change it so the num_wheels defaults to 4 if not specified when the # object is constructed. -class GroundVehicle(): +class GroundVehicle: def __init__(self, num_wheels): - self.num_wheels = num_wheels + self.num_wheels = 4 - # TODO + @classmethod + def drive(self): + return "vrooom" # Subclass Motorcycle from GroundVehicle. @@ -17,16 +19,24 @@ def __init__(self, num_wheels): # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" -# TODO +class Motorcycle(GroundVehicle): + def __init__(self, num_wheels): + self.num_wheels = 2 + + @classmethod + def drive(self): + return "BRAAAP!!" + vehicles = [ - GroundVehicle(), - GroundVehicle(), - Motorcycle(), - GroundVehicle(), - Motorcycle(), + GroundVehicle(num_wheels=4), + GroundVehicle(num_wheels=4), + Motorcycle(num_wheels=2), + GroundVehicle(num_wheels=4), + Motorcycle(num_wheels=2), ] # Go through the vehicles list and print the result of calling drive() on each. -# TODO +for vehicle in vehicles: + print(vehicle.drive())