From 81612008ff225783f22ce011d6989ac36d1656d4 Mon Sep 17 00:00:00 2001 From: seanacres <6416690+seanacres@users.noreply.github.com> Date: Sun, 13 Sep 2020 21:10:53 -0400 Subject: [PATCH 1/3] Completed and tested OOP --- src/oop/oop1.py | 21 +++++++++++++++++++++ src/oop/oop2.py | 14 ++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..43ac3ecfb8 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,24 @@ # pass # # Put a comment noting which class is the base class + +class Vehicle: + pass + +class FlightVehicle(Vehicle): + pass + +class Airplane(FlightVehicle): + pass + +class Starship(FlightVehicle): + pass + +class GroundVehicle(Vehicle): + 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..56f43b1bb8 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): self.num_wheels = num_wheels # TODO - + def drive(self): + return "vroooom" # Subclass Motorcycle from GroundVehicle. # @@ -18,6 +19,13 @@ 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__() + self.num_wheels = 2 + + def drive(self): + return "BRAAAP!!" vehicles = [ GroundVehicle(), @@ -30,3 +38,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(vehicle.drive()) \ No newline at end of file From ef73af9143410c68bfc4df197801bcf5cbfcd1e9 Mon Sep 17 00:00:00 2001 From: seanacres <6416690+seanacres@users.noreply.github.com> Date: Sun, 13 Sep 2020 21:30:51 -0400 Subject: [PATCH 2/3] Completed and tested list comprehensions --- src/comp/comp.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..60bcc14710 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -24,48 +24,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.lower().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.lower().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.lower()[0] in 'cdefg'] 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 = [human.name + '-' + str(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, 33)] 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) From 17ab5b15187268eb8cd10c7968ca43e79196c4fe Mon Sep 17 00:00:00 2001 From: seanacres <6416690+seanacres@users.noreply.github.com> Date: Sun, 13 Sep 2020 21:54:33 -0400 Subject: [PATCH 3/3] Completed and tested cityreader --- src/cityreader/cityreader.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..8615d332eb 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +1,16 @@ +import csv + # 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 + + def __str__(self): + return f"{self.name}, {self.lat}, {self.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".) @@ -21,6 +31,10 @@ 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("Sprint-Challenge--Intro-Python/src/cityreader/cities.csv", newline="") as city_csv_file: + reader = csv.DictReader(city_csv_file) + for row in reader: + cities.append(City(row['city'], float(row['lat']), float(row['lng']))) return cities