diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..f1d94f5844 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +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). +import csv + + +class City: + def __init__(self, name,lat, lon): + self.name=name + self.lat=(lat) + self.lon=(lon) + def __repr__(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 +34,11 @@ 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') as csv_file: + csv_reader = csv.reader(csv_file) + next(csv_reader) + for data in csv_reader: + cities.append(City(data[0], float(data[3]), float(data[4]))) return cities @@ -28,7 +46,7 @@ def cityreader(cities=[]): # Print the list of cities (name, lat, lon), 1 record per line. for c in cities: - print(c) + print("Cities",c) # STRETCH GOAL! # diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..7a74010e1f 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 math class Human: def __init__(self, name, age): self.name = name @@ -24,48 +26,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 = [allhumans.name for allhumans in humans if allhumans.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 = [allhumans.name for allhumans in humans if allhumans.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 = [allhumans.name for allhumans in humans if allhumans.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 = [allhumans.age + 10 for allhumans 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"{allhumans.name}-{allhumans.age}" for allhumans 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 = [(allhumans.name, allhumans.age) for allhumans in humans if allhumans.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(allhumans.name.upper(), allhumans.age + 5) for allhumans 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(allhumans.age) for allhumans in humans] print(h) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..5a0202658a 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -17,3 +17,30 @@ # pass # # Put a comment noting which class is the base class + +class Vehicle: + pass + + +class FlightVehicle(Vehicle): + pass + + +class GroundVehicle(Vehicle): + pass + + +class Starship(FlightVehicle): + 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..34609d4742 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 "vrooooom" # Subclass Motorcycle from GroundVehicle. @@ -17,6 +19,13 @@ def __init__(self, num_wheels): # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" +class Motorcycle(GroundVehicle): + def __init__(self,num_wheels=2): + super().__init__(num_wheels) + + def drive(self): + return "BRAAAP!!" + # TODO vehicles = [ @@ -30,3 +39,6 @@ def __init__(self, num_wheels): # Go through the vehicles list and print the result of calling drive() on each. # TODO + +for allvehicles in vehicles: + print(allvehicles.drive()) \ No newline at end of file