diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..4b52c48d01 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,5 +1,15 @@ +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 @@ -21,7 +31,13 @@ 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 csv_file: + csv_reader = csv.reader(csv_file) + + next(csv_reader) # this line tells the compiler to skip the first line. + for line in csv_reader: + cities.append(City(line[0], float(line[3]), float(line[4]))) + return cities cityreader(cities) @@ -29,6 +45,7 @@ def cityreader(cities=[]): # Print the list of cities (name, lat, lon), 1 record per line. for c in cities: print(c) + # print(f"City: {c.name} Lat: {c.lat} Lon: {c.lon}\n") # STRETCH GOAL! # diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..ac23c7df7e 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -1,5 +1,7 @@ # The following list comprehension exercises will make use of the # defined Human class. +import string +import sys class Human: def __init__(self, name, age): self.name = name @@ -24,48 +26,56 @@ 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 = [n.name for n in humans if n.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 = [n.name for n in humans if n.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 = [] +allowed = 'abcdefg' + +c = [n.name for n in humans if ord(n.name[0]) in range(ord('C'), ord('H'))] print(c) # Write a list comprehension that creates a list of all the ages plus 10. print("Ages plus 10:") -d = [] +d = [n.age + 10 for n 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 = [n.name.replace('','-') for n in humans] +e = [f"{n.name}-{n.age}" for n in humans] +# result =''.join(f'&humans={pair}' for pair in humans) print(e) +# 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 = [(n.name, n.age) for n in humans if n.age > 27 and n.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 = [[n.name.upper() for n in humans] [n.age + 5 for n in humans]] +g = [(n.name.upper(), n.age + 5) for n in humans] +g = [Human(n.name.upper(), n.age + 5) for n 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(n.age) for n in humans] print(h) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..c033dc649b 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,25 @@ # pass # # Put a comment noting which class is the base class + +class Vehicle: #Base Class + color = "Blue" + pass + +class GroundVehicle(Vehicle): + pass + +class Car(GroundVehicle): + pass + +class Motorcycle(GroundVehicle): + pass + +class FlightVehicle(Vehicle): + pass + +class Starship(FlightVehicle): + pass + +class Airplane(FlightVehicle): + pass \ No newline at end of file diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..afdf4e7651 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,9 +4,12 @@ # 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" + # TODO @@ -16,6 +19,12 @@ def __init__(self, num_wheels): # of wheels to 2 by passing that to the constructor of its superclass. # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" +class Motorcycle(GroundVehicle): + def __init__(self): + super().__init__(num_wheels = 2) + + def drive(self): + return "BRAAAP!!" # TODO @@ -30,3 +39,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())