diff --git a/src/cityreader/__pycache__/cityreader.cpython-37.pyc b/src/cityreader/__pycache__/cityreader.cpython-37.pyc new file mode 100644 index 0000000000..9f61fbc044 Binary files /dev/null and b/src/cityreader/__pycache__/cityreader.cpython-37.pyc differ diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 7d0566a028..43a3e820a6 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +1,14 @@ # 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 __str__(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 # file "cities.csv". (CSV stands for "comma-separated values".) @@ -14,14 +22,19 @@ # # Note that the first line of the CSV is header that describes the fields--this # should not be loaded into a City object. + cities = [] def cityreader(cities=[]): # TODO Implement the functionality to read from the 'cities.csv' file # For each city record, create a new City instance and add it to the # `cities` list - - return cities + with open("src/cityreader/cities.csv") as f: + data = csv.DictReader(f, delimiter=",") + for row in data: + city = City(row["city"], float(row["lat"]), float(row["lng"])) + cities.append(city) + return cities cityreader(cities) diff --git a/src/comp/__pycache__/comp.cpython-37.pyc b/src/comp/__pycache__/comp.cpython-37.pyc new file mode 100644 index 0000000000..87b33b963f Binary files /dev/null and b/src/comp/__pycache__/comp.cpython-37.pyc differ diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..bf0ba44ca8 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -1,12 +1,16 @@ -# The following list comprehension exercises will make use of the -# defined Human class. +# The following list comprehension exercises will make use of the +# defined Human class. +import math + + class Human: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): - return f"" + return f"Human({self.name}, {self.age})" + humans = [ Human("Alice", 29), @@ -24,48 +28,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 = [i.name for i in humans if i.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 = [i. name for i in humans if i.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 = [] +l = ['C', 'D', 'E', 'F', 'G'] +c = [i.name for i in humans if i.name[0] in l] print(c) # Write a list comprehension that creates a list of all the ages plus 10. print("Ages plus 10:") -d = [] +d = [i.age + 10 for i 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 = [i.name + '-' + str(i.age) for i 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 = [(i.name, i.age) for i in humans if (i.age >= 27) & (i.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(i.name.upper(), i.age + 5))for i 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(i.age)for i in humans] print(h) diff --git a/src/oop/__pycache__/oop1.cpython-37.pyc b/src/oop/__pycache__/oop1.cpython-37.pyc new file mode 100644 index 0000000000..31d98fb2b7 Binary files /dev/null and b/src/oop/__pycache__/oop1.cpython-37.pyc differ diff --git a/src/oop/__pycache__/oop2.cpython-37.pyc b/src/oop/__pycache__/oop2.cpython-37.pyc new file mode 100644 index 0000000000..c8ce817d5a Binary files /dev/null and b/src/oop/__pycache__/oop2.cpython-37.pyc differ diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..d80afe0791 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,17 @@ # 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..8039bca5f3 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,10 +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 "vroooom" # Subclass Motorcycle from GroundVehicle. @@ -18,7 +19,11 @@ 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=2): + self.num_wheels = num_wheels + def drive(self): + return "BRAAAP!!" vehicles = [ GroundVehicle(), GroundVehicle(), @@ -30,3 +35,5 @@ def __init__(self, num_wheels): # Go through the vehicles list and print the result of calling drive() on each. # TODO +for i in vehicles: + print(i.drive()) \ No newline at end of file