diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..70d40dfee2 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,9 +1,19 @@ # 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".) + # # In the body of the `cityreader` function, use Python's built-in "csv" module # to read this file so that each record is imported into a City instance. Then @@ -21,6 +31,16 @@ 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 + + import csv + + with open('cities.csv') as csvfile: + readCSV = csv.reader(csvfile, delimiter=',') + next(readCSV) + + + for row in readCSV: + cities.append(City(row[0], float(row[3]), float(row[4]))) return cities diff --git a/src/cityreader/test_cityreader.py b/src/cityreader/test_cityreader.py index a9a812876d..86127fd1c6 100644 --- a/src/cityreader/test_cityreader.py +++ b/src/cityreader/test_cityreader.py @@ -79,6 +79,7 @@ def setUp(self): def test_cityreader_correctness(self): self.assertEqual(len(self.cities), 60) for i in range(len(self.cities)): + # print(type(self.cities[i].lat), type(self.expected[i].lat)) self.assertTrue(check_city(self.cities[i], self.expected[i])) diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..28c573426d 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -24,48 +24,52 @@ 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 = [i.name for i in humans if i.name[0] == "C" or "D" or "E" or "F" or "G"] +# c = [i.name for i in humans if i.name[0] == filter(i.name[0]), ("C", "D", "E", "F", "G")] c = [] 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 = [f"{i.name}-{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 and i.age<= 32] +# f = [(i[0], i[1]) for i in humans] +# f = [] 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/oop1.py b/src/oop/oop1.py index b7268c5263..df4665d85c 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,28 @@ # pass # # Put a comment noting which class is the base class + +# Vehicle is the 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 + + diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..b9801cd2e5 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,11 +4,32 @@ # object is constructed. class GroundVehicle(): - def __init__(self, num_wheels): + def __init__(self, num_wheels=4): self.num_wheels = num_wheels + def drive(self): + return "vroooom" + +car = GroundVehicle() +print(car.num_wheels) +print(car.drive()) + + + # TODO +class Motorcycle(GroundVehicle): + def __init__(self, num_wheels=2): + super().__init__(num_wheels) + # self.num_wheels = num_wheels + + def drive(self): + return "BRAAAP!!" + +moto = Motorcycle() +print(moto.num_wheels) +print(moto.drive()) + # Subclass Motorcycle from GroundVehicle. # @@ -30,3 +51,6 @@ 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())