diff --git a/src/00_hello.py b/src/00_hello.py index 268998dfc7..d022a4892a 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..abcf32d610 100644 --- a/src/01_bignum.py +++ b/src/01_bignum.py @@ -1,4 +1,8 @@ # 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 +a = 2 +b = 65536 + +print(a**b) \ No newline at end of file diff --git a/src/02_datatypes.py b/src/02_datatypes.py index 245193da34..da0b837438 100644 --- a/src/02_datatypes.py +++ b/src/02_datatypes.py @@ -15,7 +15,11 @@ # YOUR CODE HERE +print(5 + int(y)) + # 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..6b59b635d5 100644 --- a/src/03_modules.py +++ b/src/03_modules.py @@ -4,28 +4,39 @@ methods, and the os module, which gives you access to lower- level operating system functionality. """ - +import os import sys +import getpass # See docs for the sys module: https://docs.python.org/3.7/library/sys.html # Print out the command line arguments in sys.argv, one per line: # YOUR CODE HERE +print(f'sysargv: {sys.argv} \n') # Print out the OS platform you're using: # YOUR CODE HERE +print(f'OS platform: {sys.platform} \n') + # Print out the version of Python you're using: # YOUR CODE HERE +print(f'Python version: {sys.version} \n') + -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(f'Current Process: {os.getpid()} \n') + # Print the current working directory (cwd): # YOUR CODE HERE +print(f'Current working directory (cwd): {os.getcwd()} \n') + # Print out your machine's login name # YOUR CODE HERE + +print(f'Machine\'s login name: {getpass.getuser()} \n') \ No newline at end of file diff --git a/src/04_printing.py b/src/04_printing.py index 06aaa7ff16..4ec790530f 100644 --- a/src/04_printing.py +++ b/src/04_printing.py @@ -12,6 +12,21 @@ # y, and z: # x is 10, y is 2.25, z is "I like turtles!" +print('x is %i, y is %.2f, 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 +print('x is {0}, y is {1:.2f}, z is {2}'.format(x, y, z)) + +# Finally, print the same thing using an f-string +print(f'x is {x}, y is {y:.2f}, z is {z}') + +class Animal: + def __init( self, name, hunger, diet ): + self.name = name + self.hunger = hunger + self.diet = diet + + def eat(self, food, hunger): + if food > 0 and hunger < 25: + hunger += food \ No newline at end of file diff --git a/src/05_lists.py b/src/05_lists.py index cfccc4e945..bc1f88f4a3 100644 --- a/src/05_lists.py +++ b/src/05_lists.py @@ -8,22 +8,30 @@ # 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 +del x[4] print(x) # Change x so that it is [1, 2, 3, 4, 9, 99, 10] # YOUR CODE HERE +x.insert(5, 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 num in x: + print(num*1000) \ No newline at end of file diff --git a/src/06_tuples.py b/src/06_tuples.py index 36754da73b..aac40579bd 100644 --- a/src/06_tuples.py +++ b/src/06_tuples.py @@ -37,8 +37,12 @@ def dist(a, b): # YOUR CODE HERE t = (1, 2, 5, 7, 99) -print_tuple(t) # Prints 1 2 5 7 99, one per line +def print_tuple(t): + for num in t: + print(num) +# Prints 1 2 5 7 99, one per line +print_tuple(t) # 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..da959736f2 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[1]) # 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[:-1]) # 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..9667b00d1f 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 = [i + 1 for i 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 = [i**3 for i in range(10)] print(y) @@ -26,7 +26,7 @@ a = ["foo", "bar", "baz"] -y = [] +y = [str.upper() for str in a] print(y) @@ -35,7 +35,11 @@ x = input("Enter comma-separated numbers: ").split(',') +y= [int(num) % 2 == 0 for num in x ] + +print(y) + # What do you need between the square brackets to make it work? -y = [] +# y = [] print(y) \ No newline at end of file diff --git a/src/09_dictionaries.py b/src/09_dictionaries.py index a8b2911f64..487d5f102b 100644 --- a/src/09_dictionaries.py +++ b/src/09_dictionaries.py @@ -35,6 +35,11 @@ # Add a new waypoint to the list # YOUR CODE HERE +waypoints.append({ + "lat": 24, + "lon": -232, + "name": "the last place" +}) # Modify the dictionary with name "a place" such that its longitude # value is -130 and change its name to "not a real place" @@ -43,5 +48,13 @@ # YOUR CODE HERE +waypoints[0]['name'] = 'not a real place' +waypoints[0]['lon'] = -130 + +# 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 d in waypoints: + print(d) diff --git a/src/10_functions.py b/src/10_functions.py index 5830100c2c..609748d30d 100644 --- a/src/10_functions.py +++ b/src/10_functions.py @@ -10,3 +10,10 @@ # YOUR CODE HERE +while num: + if num % 2 == 0: + print('Even!') + break + else: + print('Odd!') + break \ No newline at end of file diff --git a/src/11_args.py b/src/11_args.py index 8c467ea47f..fe683f7848 100644 --- a/src/11_args.py +++ b/src/11_args.py @@ -5,6 +5,8 @@ # the sum. This is what you'd consider to be a regular, normal function. # YOUR CODE HERE +def f1(x, y): + return x + y print(f1(1, 2)) @@ -14,6 +16,9 @@ # YOUR CODE HERE +def f2(*args): + return sum(args) + print(f2(1)) # Should print 1 print(f2(1, 3)) # Should print 4 print(f2(1, 4, -12)) # Should print -7 @@ -22,14 +27,18 @@ 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(*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 -# arguments. -# Note: Google "python default arguments" for a hint. +# # 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 +# # arguments. +# # Note: Google "python default arguments" for a hint. + +# # YOUR CODE HERE + +def f3(a, b=1): + return a + b -# YOUR CODE HERE print(f3(1, 2)) # Should print 3 print(f3(8)) # Should print 9 @@ -45,6 +54,10 @@ # 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 +75,4 @@ } # How do you have to modify the f4 call below to make this work? -f4(d) +f4(**d) diff --git a/src/12_scopes.py b/src/12_scopes.py index bc467fa423..7f1dfca2b0 100644 --- a/src/12_scopes.py +++ b/src/12_scopes.py @@ -5,7 +5,8 @@ x = 12 def change_x(): - x = 99 + global x + x = 99 change_x() @@ -19,6 +20,7 @@ def outer(): y = 120 def inner(): + nonlocal y y = 999 inner() diff --git a/src/13_file_io.py b/src/13_file_io.py index 3c68f8aba2..2106266003 100644 --- a/src/13_file_io.py +++ b/src/13_file_io.py @@ -11,9 +11,25 @@ # YOUR CODE HERE +with open('foo.txt') as f: + read_data = f.read() + +print(read_data + '\n') +print(f.closed + '\n') + # 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 + +with open('bar.txt', 'w+') as f: + write_data = f.write('Some stuff,\nsome more stuff,\nanother instance of stuff') + + f.seek(0) + + data = f.read() + +print(data + '\n') +print(f.closed) \ No newline at end of file diff --git a/src/14_cal.py b/src/14_cal.py index 30bb10d113..64b527006a 100644 --- a/src/14_cal.py +++ b/src/14_cal.py @@ -29,4 +29,27 @@ import sys import calendar -from datetime import datetime \ No newline at end of file +from datetime import datetime + +today = datetime.today() + +calendar.setfirstweekday(calendar.SUNDAY) + +def print_cal(month, year=None): + if not year: + year = today.year + print(calendar.TextCalendar().formatmonth(theyear=int(year), themonth=int(month))) + + +if len(sys.argv) == 3: + _, m, y = sys.argv + print_cal(m, y) +elif len(sys.argv) == 2: + _, m = sys.argv + print_cal(m) +else: + print_cal(today.month, today.year) + +# y = int(input('Input the year: ')) +# m = int(input('Input the month: ')) +# print(calendar.month(y, m)) \ No newline at end of file diff --git a/src/15_classes.py b/src/15_classes.py index 2355dd20b7..b3f5954f88 100644 --- a/src/15_classes.py +++ b/src/15_classes.py @@ -3,19 +3,44 @@ # YOUR CODE HERE +class LatLon: + def __init__(self, lat, lon): + self.lat = lat + self.lon = lon + +latlon = LatLon(3, 4) + # 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, name, lat, lon): + super().__init__(lat, lon) + self.name = name + + def __str__(self): + return f"{self.name}, {self.lat}, {self.lon}" + + # 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, name, difficulty, size, lat, lon): + super().__init__(name, lat, lon) + self.difficulty = difficulty + self.size = size + + # Make a new waypoint and print it out: "Catacombs", 41.70505, -121.51521 # YOUR CODE HERE +waypoint = Waypoint("Catacombs", 41.70505, -121.51521) + # Without changing the following line, how can you make it print into something # more human-readable? Hint: Look up the `object.__str__` method @@ -25,5 +50,7 @@ # YOUR CODE HERE +geocache = Geocache('Newberry Views', 1.5, 2, 44.052137, -121.41556) + # Print it--also make this print more nicely print(geocache) diff --git a/src/bar.txt b/src/bar.txt new file mode 100644 index 0000000000..67eac99f45 --- /dev/null +++ b/src/bar.txt @@ -0,0 +1,3 @@ +Some stuff, +some more stuff, +another instance of stuff \ No newline at end of file