diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..1182c84fc0 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,12 +1,27 @@ # 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"city: {self.name}, lat: {self.lat}, lon: {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 +# to read this file so that each record is imported into a City instance. +import os.path +import csv + +cities_csv_path = os.path.join(os.path.dirname(__file__), 'cities.csv') +# Then # return the list with all the City instances from the function. # Google "python 3 csv" for references and use your Google-fu for other examples. # @@ -21,14 +36,25 @@ 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_path, 'r') as f: + reader = csv.reader(f) + next(reader) + + for c in reader: + cities.append(City(c[0], float(c[3]), float(c[4]))) return cities cityreader(cities) # Print the list of cities (name, lat, lon), 1 record per line. -for c in cities: - print(c) +# for c in cities: +# print(c) + +# or + +[print(c) for c in cities] # STRETCH GOAL! # @@ -61,11 +87,13 @@ def cityreader(cities=[]): # TODO Get latitude and longitude values from the user -def cityreader_stretch(lat1, lon1, lat2, lon2, cities=[]): +# lat1, lon1 = input('Enter Lat1, Lon1: ').split(',') +# lat2, lon2 = input('Enter Lat2, Lon2: ').split(',') +# 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..d4bbef3fb0 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 = [] -print(a) +a = [h.name for h in humans if h.name[0] == 'D'] +print('Starts with D: ',a) # Write a list comprehension that creates a list of names of everyone # whose name ends in "e". print("Ends with e:") -b = [] +b = [h.name for h in humans if h.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 = [h.name for h in humans if h.name if h.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 = [h.age +10 for h 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"{h.name}-{h.age}" for h 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 = [] -print(f) +f = [(h.name, h.age) for h in humans if h.age in range(27, 33)] +print('Ages between 27 and 32: ', 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 = [] -print(g) +g = [Human(h.name.upper(), h.age + 5) for h in humans ] +print('Names in upper and age +5: ',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(h.age) for h in humans] print(h) diff --git a/src/oop/oop1.py b/src/oop/oop1.py index b7268c5263..bcf2f86a3e 100644 --- a/src/oop/oop1.py +++ b/src/oop/oop1.py @@ -15,5 +15,26 @@ # # class Whatever: # pass -# + +class Vehicle: + pass + +class GroundVehicle(Vehicle): + pass + +class Car(GroundVehicle): + pass + +class Motorcycle(GroundVehicle): + pass + +class FlightVehicle(Vehicle): + pass + +class Airplane(FlightVehicle): + pass + +class Starship(FlightVehicle): + pass + # Put a comment noting which class is the base class diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..c27b22990f 100644 --- a/src/oop/oop2.py +++ b/src/oop/oop2.py @@ -4,20 +4,25 @@ # 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. -# # Make it so when you instantiate a Motorcycle, it automatically sets the number # of wheels to 2 by passing that to the constructor of its superclass. # # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" -# TODO +class Motorcycle(GroundVehicle): + def __init__(self): + super().__init__(2) + + def drive(self): + return 'BRAAAP!!' vehicles = [ GroundVehicle(), @@ -29,4 +34,9 @@ def __init__(self, num_wheels): # Go through the vehicles list and print the result of calling drive() on each. -# TODO +for v in vehicles: + print(v.drive()) + + +print(GroundVehicle().drive()) +print(Motorcycle().drive()) diff --git a/src/test.py b/src/test.py new file mode 100644 index 0000000000..c2116679ce --- /dev/null +++ b/src/test.py @@ -0,0 +1,15 @@ +l= ["ab", "abc", "abd", "b"] + +l1="abc" + +# prints 'b' +print(max(l)) + +# prints 'ab' +print(min(l)) + +#prints 'c' +print(max(l1)) + +#prints 'a' +print(min(l1)) \ No newline at end of file