diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..b3dff67ef4 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +1,18 @@ # 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 os +import csv +cities = [] + +class City: + def __init__(self, name, latitude, longitude): + self.name = name + self.lat = latitude + self.long = longitude + + def __str__(self): + return f"City: {self.name}, Latitude: {self.lat}, Longitude: {self.long}" # 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 +26,18 @@ # # 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 # 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 - + file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'cities.csv') + with open(file,'r') as cities_csv: + cities_array = csv.reader(cities_csv) + next(cities_array) + for c in cities_array: + city = City(c[2], c[3], c[4]) + cities.append(city) return cities cityreader(cities) @@ -61,11 +77,11 @@ def cityreader(cities=[]): # TODO Get latitude and longitude values from the user -def cityreader_stretch(lat1, lon1, lat2, lon2, cities=[]): +#def cityreader_stretch(lat1, lon1, lat2, lon2, cities=[]): # within will hold the cities that fall within the specified region - within = [] + #within = [] # Go through each city and check to see if it falls within # the specified coordinates. - return within + #return within diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..4fd0a951f8 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[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 = [human.name for human in humans if human.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 = [] +c = [human.name for human in humans if human.name[0] in ['C', 'D', 'E', 'F', 'G']] 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 27 <= human.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(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/oop1.py b/src/oop/oop1.py index b7268c5263..95024cc771 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,35 @@ # pass # # Put a comment noting which class is the base class +class Vehicle: + '''base class''' + pass + + +class GroundVehicle(Vehicle): + ''' sub-class of vehicle''' + pass + + +class Car(GroundVehicle): + '''sub-class of GroundVehicle''' + pass + + +class Motorcycle(GroundVehicle): + '''sub-class of GroundVehicle''' + + +class FlightVehicle(Vehicle): + '''sub-class of Vehicle''' + pass + + +class Airplane(FlightVehicle): + '''sub-class of FlightVehicle''' + pass + + +class Starship(FlightVehicle): + '''sub-class of FlightVehicle''' + pass \ No newline at end of file diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..cb05ab0cdf 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,10 +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. @@ -19,6 +21,13 @@ def __init__(self, num_wheels): # TODO +class Motorcycle(GroundVehicle): + def __init__(self, num_wheels=2): + super().__init__(num_wheels) + + def drive(self): + return "BRAAAP!!" + vehicles = [ GroundVehicle(), GroundVehicle(), @@ -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: + vehicle.drive() \ No newline at end of file