diff --git a/README.md b/README.md index eeb64678a7..bb169dec27 100644 --- a/README.md +++ b/README.md @@ -54,3 +54,19 @@ There's a separate test file `test_stretch.py` for the stretch problem that you | _Student can demonstrate applied knowledge of Object-Oriented Programming by completing `oop1.py` and `oop2.py`_ | OOP: (2 points per file, 4 max) | 0 points | 2 points | 4 points | | | _Student can demonstrate applied research and language learning by completing `cityreader.py`_ | CSV: 6 points for `cityreader()`, 1 point for `cityreader_stretch()` | 0 points | 6 points | 7 points | | | **FINAL SCORE** | | **0-13** | **14-18** | **19** | | + + + +
+
+
+
+ +--- + +
+ +> # Questions for Anthony during my 1-on-1: +> 1. Should I have used "quote_numeric" (https://docs.python.org/3/library/csv.html) instead of declaring variables to be floats in `cityreader.py` (line 33)? +> 2. Should I be concerned about these "problems" in my `test_comp.py` file? +![problems from vscode](problems.png "Logo Title Text 1") \ No newline at end of file diff --git a/problems.png b/problems.png new file mode 100644 index 0000000000..fc7658b25e Binary files /dev/null and b/problems.png differ diff --git a/src/cityreader/cityreader.py b/src/cityreader/cityreader.py index 2bd8007ce7..12585e8c27 100644 --- a/src/cityreader/cityreader.py +++ b/src/cityreader/cityreader.py @@ -1,6 +1,11 @@ +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 # 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,8 +26,12 @@ 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 - - return cities + with open("./src/cityreader/cities.csv", newline="") as csvfile: + next(csvfile) + for line in csvfile: + city_info = line.split(",") + cities.append(City(city_info[0], float(city_info[3]), float(city_info[4]))) + return cities cityreader(cities) diff --git a/src/comp/comp.py b/src/comp/comp.py index 82f8821d63..7cb25d2533 100644 --- a/src/comp/comp.py +++ b/src/comp/comp.py @@ -1,3 +1,4 @@ +import math # The following list comprehension exercises will make use of the # defined Human class. class Human: @@ -24,48 +25,49 @@ 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.startswith("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.endswith("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 = [] +letters = ("C", "D", "E", "F", "G") +c = [human.name for human in humans if human.name.startswith(letters)] 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 = [(f"{human.name}-{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 (human.age >= 27 and 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..5636fdc3c0 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(object): # This is the base class + pass + + +class FlightVehicle(Vehicle): # FlightVehicle is a type of Vehicle + pass + + +class Starship(FlightVehicle): # Satarship is a type of FlightVehicle + pass + + +class Airplane(FlightVehicle): # Airplane is a type of FlightVehicle + pass + + +class GroundVehicle(Vehicle): # GroundVehicle is a type of Vehicle + pass + + +class Car(GroundVehicle): # Car is a type of GroundVehicle + pass + + +class Motorcycle(GroundVehicle): # Motorcylce is a type of GroundVehicle + pass diff --git a/src/oop/oop2.py b/src/oop/oop2.py index 29d3e481fe..5109d71ad3 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. @@ -18,6 +20,12 @@ def __init__(self, num_wheels): # Override the drive() method in Motorcycle so that it returns "BRAAAP!!" # TODO +class Motorcycle(GroundVehicle): + def __init__(self, num_wheels=2): + self.num_wheels = num_wheels + + def drive(self): + return "BRAAAP!!" vehicles = [ GroundVehicle(), @@ -30,3 +38,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()) \ No newline at end of file