diff --git a/.idea/Intro-Python-I.iml b/.idea/Intro-Python-I.iml
new file mode 100644
index 0000000000..d0876a78d0
--- /dev/null
+++ b/.idea/Intro-Python-I.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries/Julio.xml b/.idea/dictionaries/Julio.xml
new file mode 100644
index 0000000000..9438963272
--- /dev/null
+++ b/.idea/dictionaries/Julio.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000..920d523a4e
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000..105ce2da2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000..8e6b599928
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000..94a25f7f4c
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000000..f51ba2a691
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1594278189492
+
+
+ 1594278189492
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/00_hello.py b/src/00_hello.py
index 268998dfc7..7fad840f26 100644
--- a/src/00_hello.py
+++ b/src/00_hello.py
@@ -1 +1,2 @@
-# Print "Hello, world!" to your terminal
\ No newline at end of file
+# Print "Hello, world!" to your terminal
+print("Hello, world!")
\ No newline at end of file
diff --git a/src/01_bignum.py b/src/01_bignum.py
index c020928d63..0347ae3f4b 100644
--- a/src/01_bignum.py
+++ b/src/01_bignum.py
@@ -1,4 +1,5 @@
# Print out 2 to the 65536 power
# (try doing the same thing in the JS console and see what it outputs)
-# YOUR CODE HERE
\ No newline at end of file
+# YOUR CODE HERE
+print(2**65536)
\ No newline at end of file
diff --git a/src/02_datatypes.py b/src/02_datatypes.py
index 245193da34..1f623414a5 100644
--- a/src/02_datatypes.py
+++ b/src/02_datatypes.py
@@ -14,8 +14,9 @@
# Write a print statement that combines x + y into the integer value 12
# YOUR CODE HERE
-
+print(int(y)+x)
# Write a print statement that combines x + y into the string value 57
-# YOUR CODE HERE
\ No newline at end of file
+# YOUR CODE HERE
+print(str(x)+y)
\ No newline at end of file
diff --git a/src/03_modules.py b/src/03_modules.py
index 97eba053c7..902cdbbd45 100644
--- a/src/03_modules.py
+++ b/src/03_modules.py
@@ -10,22 +10,23 @@
# Print out the command line arguments in sys.argv, one per line:
# YOUR CODE HERE
-
+print(sys.argv)
# Print out the OS platform you're using:
# YOUR CODE HERE
-
+print(sys.platform)
# Print out the version of Python you're using:
# YOUR CODE HERE
-
+print(sys.version)
import os
# See the docs for the OS module: https://docs.python.org/3.7/library/os.html
# Print the current process ID
# YOUR CODE HERE
-
+print(os.getpid())
# Print the current working directory (cwd):
# YOUR CODE HERE
-
+print(os.getcwd())
# Print out your machine's login name
# YOUR CODE HERE
+print(os.getlogin())
\ No newline at end of file
diff --git a/src/04_printing.py b/src/04_printing.py
index 06aaa7ff16..16e413396e 100644
--- a/src/04_printing.py
+++ b/src/04_printing.py
@@ -11,7 +11,8 @@
# Using the printf operator (%), print the following feeding in the values of x,
# y, and z:
# x is 10, y is 2.25, z is "I like turtles!"
-
+print("x is %d,y is %f, z is '%s'" % (x,y,z))
# Use the 'format' string method to print the same thing
-# Finally, print the same thing using an f-string
\ No newline at end of file
+# Finally, print the same thing using an f-string
+print(f"x is {x},y is {y},z is '{z}'")
\ No newline at end of file
diff --git a/src/05_lists.py b/src/05_lists.py
index cfccc4e945..2ab4582c9b 100644
--- a/src/05_lists.py
+++ b/src/05_lists.py
@@ -8,22 +8,24 @@
# Change x so that it is [1, 2, 3, 4]
# YOUR CODE HERE
+x.append(4)
print(x)
-
# Using y, change x so that it is [1, 2, 3, 4, 8, 9, 10]
# YOUR CODE HERE
+x.extend(y)
print(x)
-
# Change x so that it is [1, 2, 3, 4, 9, 10]
# YOUR CODE HERE
+x.remove(8)
print(x)
-
# Change x so that it is [1, 2, 3, 4, 9, 99, 10]
# YOUR CODE HERE
+x.insert(-2,99)
print(x)
-
# Print the length of list x
# YOUR CODE HERE
-
+print(len(x))
# Print all the values in x multiplied by 1000
-# YOUR CODE HERE
\ No newline at end of file
+# YOUR CODE HERE
+for i in x:
+ print(i*1000)
\ No newline at end of file
diff --git a/src/06_tuples.py b/src/06_tuples.py
index 36754da73b..157a1faab4 100644
--- a/src/06_tuples.py
+++ b/src/06_tuples.py
@@ -36,9 +36,14 @@ def dist(a, b):
# YOUR CODE HERE
+def print_tuple(t):
+ for x in t:
+ print(x)
+
+
t = (1, 2, 5, 7, 99)
print_tuple(t) # Prints 1 2 5 7 99, one per line
# Declare a tuple of 1 element then print it
-u = (1) # What needs to be added to make this work?
+u = (1,) # What needs to be added to make this work?
print_tuple(u)
diff --git a/src/07_slices.py b/src/07_slices.py
index 5e0b3bd8ee..ddde12a6ce 100644
--- a/src/07_slices.py
+++ b/src/07_slices.py
@@ -12,26 +12,26 @@
a = [2, 4, 1, 7, 9, 6]
# Output the second element: 4:
-print()
+print(a[3])
# Output the second-to-last element: 9
-print()
+print(a[-2])
# Output the last three elements in the array: [7, 9, 6]
-print()
+print(a[-3:])
# Output the two middle elements in the array: [1, 7]
-print()
+print(a[2:4])
# Output every element except the first one: [4, 1, 7, 9, 6]
-print()
+print(a[1:])
# Output every element except the last one: [2, 4, 1, 7, 9]
-print()
+print(a[:-2])
# For string s...
s = "Hello, world!"
# Output just the 8th-12th characters: "world"
-print()
\ No newline at end of file
+print(s[7:12])
\ No newline at end of file
diff --git a/src/08_comprehensions.py b/src/08_comprehensions.py
index 67eb742e50..b1cf12a6b8 100644
--- a/src/08_comprehensions.py
+++ b/src/08_comprehensions.py
@@ -10,14 +10,14 @@
# Write a list comprehension to produce the array [1, 2, 3, 4, 5]
-y = []
+y = [x+1 for x in range(5)]
print (y)
# Write a list comprehension to produce the cubes of the numbers 0-9:
# [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
-y = []
+y = [x**3 for x in range(9)]
print(y)
@@ -26,7 +26,7 @@
a = ["foo", "bar", "baz"]
-y = []
+y = [x.upper() for x in a]
print(y)
@@ -36,6 +36,6 @@
x = input("Enter comma-separated numbers: ").split(',')
# What do you need between the square brackets to make it work?
-y = []
+y = [int(a) for a in x if int(a) % 2 == 0]
print(y)
\ No newline at end of file
diff --git a/src/09_dictionaries.py b/src/09_dictionaries.py
index a8b2911f64..b91e4396cc 100644
--- a/src/09_dictionaries.py
+++ b/src/09_dictionaries.py
@@ -35,13 +35,24 @@
# Add a new waypoint to the list
# YOUR CODE HERE
-
+new_waypoint = {
+ 'lat': 26,
+ 'lon': -214,
+ 'name': 'a fourth place'
+}
+waypoints.append(new_waypoint)
+print(waypoints)
# Modify the dictionary with name "a place" such that its longitude
# value is -130 and change its name to "not a real place"
# Note: It's okay to access the dictionary using bracket notation on the
# waypoints list.
# YOUR CODE HERE
+waypoints[0]['lon'] = -130
+waypoints[0]['name'] = 'not a real place'
+print(waypoints)
# Write a loop that prints out all the field values for all the waypoints
-# YOUR CODE HERE
\ No newline at end of file
+# YOUR CODE HERE
+for x in range(len(waypoints)):
+ print(waypoints[x].values())
\ No newline at end of file
diff --git a/src/10_functions.py b/src/10_functions.py
index 5830100c2c..6e087cf168 100644
--- a/src/10_functions.py
+++ b/src/10_functions.py
@@ -1,12 +1,23 @@
# Write a function is_even that will return true if the passed-in number is even.
# YOUR CODE HERE
+def is_true(num):
+ if num % 2 == 0:
+ return True
+ else:
+ return False
+
# Read a number from the keyboard
num = input("Enter a number: ")
num = int(num)
# Print out "Even!" if the number is even. Otherwise print "Odd"
-
+def is_even(num):
+ if num % 2 == 0:
+ print("Even!")
+ else:
+ print("Odd!")
# YOUR CODE HERE
-
+is_even(num)
+print(is_true(num))
\ No newline at end of file
diff --git a/src/11_args.py b/src/11_args.py
index 8c467ea47f..9e6451c6fc 100644
--- a/src/11_args.py
+++ b/src/11_args.py
@@ -5,24 +5,35 @@
# the sum. This is what you'd consider to be a regular, normal function.
# YOUR CODE HERE
+def f1(a, b):
+ return a + b
+
print(f1(1, 2))
+
# Write a function f2 that takes any number of integer arguments and returns the
# sum.
# Note: Google for "python arbitrary arguments" and look for "*args"
# YOUR CODE HERE
+def f2(*numbers):
+ x = 0
+ for num in numbers:
+ x += num
+ return x
-print(f2(1)) # Should print 1
-print(f2(1, 3)) # Should print 4
-print(f2(1, 4, -12)) # Should print -7
+
+print(f2(1)) # Should print 1
+print(f2(1, 3)) # Should print 4
+print(f2(1, 4, -12)) # Should print -7
print(f2(7, 9, 1, 3, 4, 9, 0)) # Should print 33
a = [7, 6, 5, 4]
# How do you have to modify the f2 call below to make this work?
-print(f2(a)) # Should print 22
+print(f2(sum(a))) # Should print 22
+
# Write a function f3 that accepts either one or two arguments. If one argument,
# it returns that value plus 1. If two arguments, it returns the sum of the
@@ -30,10 +41,15 @@
# Note: Google "python default arguments" for a hint.
# YOUR CODE HERE
+def f3(c, b=0):
+ if b == 0:
+ return c + 1
+ else:
+ return c + b
-print(f3(1, 2)) # Should print 3
-print(f3(8)) # Should print 9
+print(f3(1, 2)) # Should print 3
+print(f3(8)) # Should print 9
# Write a function f4 that accepts an arbitrary number of keyword arguments and
# prints out the keys and values like so:
@@ -44,7 +60,9 @@
# Note: Google "python keyword arguments".
# YOUR CODE HERE
-
+def f4(**kwargs):
+ for key, value in kwargs.items():
+ print(f"key: {key}, value: {value}")
# Should print
# key: a, value: 12
# key: b, value: 30
@@ -62,4 +80,4 @@
}
# How do you have to modify the f4 call below to make this work?
-f4(d)
+f4(d=dict)
diff --git a/src/12_scopes.py b/src/12_scopes.py
index bc467fa423..b8d6d4f130 100644
--- a/src/12_scopes.py
+++ b/src/12_scopes.py
@@ -6,9 +6,10 @@
def change_x():
x = 99
+ print(x)
-change_x()
+change_x()
# This prints 12. What do we have to modify in change_x() to get it to print 99?
print(x)
@@ -20,7 +21,7 @@ def outer():
def inner():
y = 999
-
+ print(y)
inner()
# This prints 120. What do we have to change in inner() to get it to print
diff --git a/src/13_file_io.py b/src/13_file_io.py
index 3c68f8aba2..6f21a040cf 100644
--- a/src/13_file_io.py
+++ b/src/13_file_io.py
@@ -10,10 +10,23 @@
# Note: pay close attention to your current directory when trying to open "foo.txt"
# YOUR CODE HERE
+import os
+
+with open('foo.txt') as f:
+ read_data = f.read()
+ print(read_data)
# Open up a file called "bar.txt" (which doesn't exist yet) for
# writing. Write three lines of arbitrary content to that file,
# then close the file. Open up "bar.txt" and inspect it to make
# sure that it contains what you expect it to contain
-# YOUR CODE HERE
\ No newline at end of file
+# YOUR CODE HERE
+def save_to_file(text):
+ with open('bar.txt', 'w') as f:
+ f.write('\n'.join(text))
+
+save_to_file("Big")
+
+f = open('bar.txt','r')
+print(f.read())
\ No newline at end of file
diff --git a/src/14_cal.py b/src/14_cal.py
index 30bb10d113..4e59a24192 100644
--- a/src/14_cal.py
+++ b/src/14_cal.py
@@ -29,4 +29,23 @@
import sys
import calendar
-from datetime import datetime
\ No newline at end of file
+import datetime
+
+today = datetime.datetime.today()
+
+month, year = today.month, today.year
+
+
+num_args = len(sys.argv)
+
+# TODO: catch errors when user is inputting the wrong type of data
+
+if num_args == 1:
+ print(calendar.TextCalendar(-1).formatmonth(year, month))
+elif num_args == 2: # assume they passed in a month and render the calendar for that month of the current year.
+ print(calendar.TextCalendar(-1).formatmonth(year, int(sys.argv[1])))
+elif num_args == 3:
+ print(calendar.TextCalendar(-1).formatmonth(int(sys.argv[2]), int(sys.argv[1])))
+else:
+ print("Please pass your arguments/inputs when running this program in the follow:\n")
+ print("python3 14_cal.py [month] [year]")
diff --git a/src/15_classes.py b/src/15_classes.py
index 2355dd20b7..6d3cad59eb 100644
--- a/src/15_classes.py
+++ b/src/15_classes.py
@@ -2,28 +2,57 @@
# constructor
# YOUR CODE HERE
+class LatLon(object):
+ def __init__(self, lat, lon):
+ self.lat = lat
+ self.lon = lon
+
# Make a class Waypoint that can be passed parameters `name`, `lat`, and `lon` to the
# constructor. It should inherit from LatLon. Look up the `super` method.
# YOUR CODE HERE
+class Waypoint(LatLon):
+ def __init__(self, lat, lon, name):
+ super(Waypoint, self).__init__(lat, lon)
+ self.name = name
+
+ def __str__(self):
+ output = f"{self.name},{self.lat},{self.lon}"
+ return output
+
# Make a class Geocache that can be passed parameters `name`, `difficulty`,
# `size`, `lat`, and `lon` to the constructor. What should it inherit from?
# YOUR CODE HERE
+class Geocache(Waypoint):
+ def __init__(self, lat, lon, name, difficulty, size):
+ super(Geocache, self).__init__(lat, lon, name)
+ self.difficulty = difficulty
+ self.size = size
+
+ def __str__(self):
+ output = f"Lat:{self.lat}, Lon:{self.lon}, Name:{self.name}, Diff:{self.difficulty}, Size:{self.size}"
+ return output
+
# Make a new waypoint and print it out: "Catacombs", 41.70505, -121.51521
# YOUR CODE HERE
+waypoint = Waypoint(41.70505, -121.51521, "Catacombs")
+
+print(waypoint.name, waypoint.lat, waypoint.lon)
+
# Without changing the following line, how can you make it print into something
# more human-readable? Hint: Look up the `object.__str__` method
-print(waypoint)
+print(waypoint.__str__())
# Make a new geocache "Newberry Views", diff 1.5, size 2, 44.052137, -121.41556
# YOUR CODE HERE
+geocache = Geocache(44.052137, -121.41556, "Newberry Views", 1.5, 2)
# Print it--also make this print more nicely
-print(geocache)
+print(geocache.__str__())
diff --git a/src/bar.txt b/src/bar.txt
new file mode 100644
index 0000000000..188cf96466
--- /dev/null
+++ b/src/bar.txt
@@ -0,0 +1,3 @@
+B
+i
+g
\ No newline at end of file