Skip to content

Oliver Abreu | Sprint Challenge: Intro Python #792

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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** | |

<!-- Initial Commit -->

<br>
<br>
<br>
<br>

---

<br>

> # 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")
Binary file added problems.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 12 additions & 3 deletions src/cityreader/cityreader.py
Original file line number Diff line number Diff line change
@@ -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".)
Expand All @@ -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)

Expand Down
18 changes: 10 additions & 8 deletions src/comp/comp.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import math
# The following list comprehension exercises will make use of the
# defined Human class.
class Human:
Expand All @@ -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)
27 changes: 27 additions & 0 deletions src/oop/oop1.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 11 additions & 1 deletion src/oop/oop2.py
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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(),
Expand All @@ -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())