From 72436a94e3f588f10f81ef57ea73e26f7039ba46 Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Sun, 13 Sep 2020 20:12:34 -0500 Subject: [PATCH 1/6] Finished oop1.py --- src/oop/oop1.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..2d25dd0094 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,43 @@ # pass # # Put a comment noting which class is the base class + +#Base class +class Vehicle: + def __init__(self, year, make): + self.year = year + self.make = make + +#Inherits from Vehicle +class FlightVehicle(Vehicle): + def __init__(self, year, make, wings): + super.__init__(year, make) + self.wings = wings + +#Inherits from FlightVehicle +class Starship(FlightVehicle): + def __init__(self, year, make, wings): + super.__init__(year, make, wings) + +#Inherits from vehicle +class GroundVehicle(Vehicle): + def __init__(self, year, make, wheels): + super.__init__(year, make) + self.wheels = wheels + +#Inherits from flight vehicle +class Airplane(FlightVehicle): + def __init__(self, year, make, wings, cabin): + super.__init__(year, make, wings) + self.cabin = cabin + +#Inherits from GroundVehicle +class Car(GroundVehicle): + def __init__(self, year, make, wheels): + super.__init__(year, make, wheels) + +#Inherits from GroundVehicle +class Motorcycle(GroundVehicle): + def __init__(self, year, make, wheels): + super.__init__(year, make, wheels) + From 983894b1b827cf535bf1e20064ec17ec6df39d20 Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Sun, 13 Sep 2020 20:24:43 -0500 Subject: [PATCH 2/6] Fixed oop1 errors, finished oop2 --- src/oop/oop1.py | 12 ++++++------ src/oop/oop2.py | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index 2d25dd0094..dddaabd0ec 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -27,33 +27,33 @@ def __init__(self, year, make): #Inherits from Vehicle class FlightVehicle(Vehicle): def __init__(self, year, make, wings): - super.__init__(year, make) + super().__init__(year, make) self.wings = wings #Inherits from FlightVehicle class Starship(FlightVehicle): def __init__(self, year, make, wings): - super.__init__(year, make, wings) + super().__init__(year, make, wings) #Inherits from vehicle class GroundVehicle(Vehicle): def __init__(self, year, make, wheels): - super.__init__(year, make) + super().__init__(year, make) self.wheels = wheels #Inherits from flight vehicle class Airplane(FlightVehicle): def __init__(self, year, make, wings, cabin): - super.__init__(year, make, wings) + super().__init__(year, make, wings) self.cabin = cabin #Inherits from GroundVehicle class Car(GroundVehicle): def __init__(self, year, make, wheels): - super.__init__(year, make, wheels) + super().__init__(year, make, wheels) #Inherits from GroundVehicle class Motorcycle(GroundVehicle): def __init__(self, year, make, wheels): - super.__init__(year, make, wheels) + super().__init__(year, make, wheels) diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..1d37fecb5f 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,11 +4,11 @@ # object is constructed. class GroundVehicle(): - def __init__(self, num_wheels): + def __init__(self, num_wheels = 4): self.num_wheels = num_wheels - # TODO - + def drive(self): + return f"vroooom" # Subclass Motorcycle from GroundVehicle. # @@ -19,6 +19,13 @@ def __init__(self, num_wheels): # TODO +class Motorcycle(GroundVehicle): + def __init__(self, num_wheels = 2): + super().__init__(num_wheels) + + def drive(self): + return f"BRAAAP!!" + vehicles = [ GroundVehicle(), GroundVehicle(), @@ -30,3 +37,5 @@ def __init__(self, num_wheels): # Go through the vehicles list and print the result of calling drive() on each. # TODO +for vehicle in vehicles: + print(f"{vehicle.drive()}") \ No newline at end of file From e2d56d3d2fd9b1ea7c30ac9e99a00a2881c24eb2 Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Sun, 13 Sep 2020 20:28:11 -0500 Subject: [PATCH 3/6] Updated code to pass tests --- src/oop/oop1.py | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index dddaabd0ec..ac28d54966 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -20,40 +20,47 @@ #Base class class Vehicle: - def __init__(self, year, make): - self.year = year - self.make = make + # def __init__(self, year, make): + # self.year = year + # self.make = make + pass #Inherits from Vehicle class FlightVehicle(Vehicle): - def __init__(self, year, make, wings): - super().__init__(year, make) - self.wings = wings + # def __init__(self, year, make, wings): + # super().__init__(year, make) + # self.wings = wings + pass #Inherits from FlightVehicle class Starship(FlightVehicle): - def __init__(self, year, make, wings): - super().__init__(year, make, wings) + # def __init__(self, year, make, wings): + # super().__init__(year, make, wings) + pass #Inherits from vehicle class GroundVehicle(Vehicle): - def __init__(self, year, make, wheels): - super().__init__(year, make) - self.wheels = wheels + # def __init__(self, year, make, wheels): + # super().__init__(year, make) + # self.wheels = wheels + pass #Inherits from flight vehicle class Airplane(FlightVehicle): - def __init__(self, year, make, wings, cabin): - super().__init__(year, make, wings) - self.cabin = cabin + # def __init__(self, year, make, wings, cabin): + # super().__init__(year, make, wings) + # self.cabin = cabin + pass #Inherits from GroundVehicle class Car(GroundVehicle): - def __init__(self, year, make, wheels): - super().__init__(year, make, wheels) + # def __init__(self, year, make, wheels): + # super().__init__(year, make, wheels) + pass #Inherits from GroundVehicle class Motorcycle(GroundVehicle): - def __init__(self, year, make, wheels): - super().__init__(year, make, wheels) + # def __init__(self, year, make, wheels): + # super().__init__(year, make, wheels) + pass From 654ca7044640843c732027511547944ad5ef72eb Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Sun, 13 Sep 2020 21:07:13 -0500 Subject: [PATCH 4/6] Finished comp --- src/comp/comp.py | 17 +++++++++-------- src/oop/oop2.py | 3 --- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..8d184fe243 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -1,5 +1,6 @@ # The following list comprehension exercises will make use of the # defined Human class. + class Human: def __init__(self, name, age): self.name = name @@ -24,48 +25,48 @@ 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 = [human.name for human in humans if human.name.startswith("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 = [human.name for human in humans if human.name.endswith("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 = [human.name for human in humans if human.name[0] in list(map(chr, range(ord("C"), ord("G") + 1)))] print(c) # Write a list comprehension that creates a list of all the ages plus 10. print("Ages plus 10:") -d = [] +d = [human.age + 10 for human in humans] 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 = [f"{human.name}-{human.age}" for human 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 = [(human.name, human.age) for human in humans if human.age in range(27, 32 + 1)] 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(human.name.upper(), human.age + 5) for human 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(human.age) for human in humans] print(h) diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 1d37fecb5f..7d102d975f 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -17,8 +17,6 @@ def drive(self): # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" -# TODO - class Motorcycle(GroundVehicle): def __init__(self, num_wheels = 2): super().__init__(num_wheels) @@ -36,6 +34,5 @@ def drive(self): # Go through the vehicles list and print the result of calling drive() on each. -# TODO for vehicle in vehicles: print(f"{vehicle.drive()}") \ No newline at end of file From a56f686a61c59800a2a6e22100d0c0b36603d960 Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Sun, 13 Sep 2020 21:47:14 -0500 Subject: [PATCH 5/6] Finished MVP --- src/cityreader/cityreader.py | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..e3a3c149fb 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +1,10 @@ # 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). - +class City(): + def __init__(self, name, lat, lon): + self.name = name + self.lat = lat + self.lon = lon # We have a collection of US cities with population over 750,000 stored in the # file "cities.csv". (CSV stands for "comma-separated values".) @@ -9,9 +13,9 @@ # to read this file so that each record is imported into a City instance. Then # return the list with all the City instances from the function. # Google "python 3 csv" for references and use your Google-fu for other examples. -# +import csv # Store the instances in the "cities" list, below. -# + # Note that the first line of the CSV is header that describes the fields--this # should not be loaded into a City object. cities = [] @@ -21,14 +25,20 @@ def cityreader(cities=[]): # 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 - + with open("cities.csv", "r") as f: + reader = csv.reader(f) + if csv.Sniffer().has_header: + next(reader) + for row in reader: + cities.append(City(row[0], row[3], row[4])) return cities cityreader(cities) # Print the list of cities (name, lat, lon), 1 record per line. for c in cities: - print(c) + c = f"{c.name}, {c.lat}, {c.lon}" + print(c) # STRETCH GOAL! # From 3a36bbf6c9d9731ccec08ec91a83283226bc65cb Mon Sep 17 00:00:00 2001 From: FabiolaSaga Date: Mon, 14 Sep 2020 09:49:52 -0500 Subject: [PATCH 6/6] Fixed failing test, needed to cast lat and lon as float --- src/cityreader/cityreader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index e3a3c149fb..e28d7be26f 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -30,7 +30,7 @@ def cityreader(cities=[]): if csv.Sniffer().has_header: next(reader) for row in reader: - cities.append(City(row[0], row[3], row[4])) + cities.append(City(row[0], float(row[3]), float(row[4]))) return cities cityreader(cities)