diff --git a/src/01_bignum.py b/src/01_bignum.py index c020928d63..3528fb6e30 100644 --- a/src/01_bignum.py +++ b/src/01_bignum.py @@ -1,4 +1,4 @@ # 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 +print (f'2 to the 65536 power is:{2**65536}') \ No newline at end of file diff --git a/src/02_datatypes.py b/src/02_datatypes.py index 245193da34..2c663fb41e 100644 --- a/src/02_datatypes.py +++ b/src/02_datatypes.py @@ -12,10 +12,8 @@ y = "7" # Write a print statement that combines x + y into the integer value 12 - -# YOUR CODE HERE +print (x+int(y)) # Write a print statement that combines x + y into the string value 57 - -# YOUR CODE HERE \ No newline at end of file +print (str(x)+y) \ No newline at end of file diff --git a/src/03_modules.py b/src/03_modules.py index 97eba053c7..b78fabe51b 100644 --- a/src/03_modules.py +++ b/src/03_modules.py @@ -9,23 +9,23 @@ # 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'command line arguments in sys.argv:{sys.argv}') # Print out the OS platform you're using: -# YOUR CODE HERE +print (f'OS platform:{sys.platform}') # Print out the version of Python you're using: -# YOUR CODE HERE +print (f'Python version:{sys.version[0:5]}') 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 ID:{os.getpid()}') # Print the current working directory (cwd): -# YOUR CODE HERE +print(f'Current working directory:{os.getcwd()}') # Print out your machine's login name -# YOUR CODE HERE +print(f'Machine login name:{os.getlogin()}') diff --git a/src/04_printing.py b/src/04_printing.py index 06aaa7ff16..83c336750d 100644 --- a/src/04_printing.py +++ b/src/04_printing.py @@ -11,7 +11,10 @@ # 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 +print('x is {}, y is {}, z is "{}"'.format(x, y, z)) -# 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..79493053dc 100644 --- a/src/05_lists.py +++ b/src/05_lists.py @@ -7,23 +7,23 @@ # For the following, DO NOT USE AN ASSIGNMENT (=). # 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(5,99) print(x) # Print the length of list x -# YOUR CODE HERE +print(f'Length of list x is:{len(x)}') # Print all the values in x multiplied by 1000 -# YOUR CODE HERE \ No newline at end of file +print(f'all the values in x multiplied by 1000 is:{[element * 1000 for element in x]}') \ No newline at end of file diff --git a/src/06_tuples.py b/src/06_tuples.py index 36754da73b..7bcf6fae96 100644 --- a/src/06_tuples.py +++ b/src/06_tuples.py @@ -34,11 +34,14 @@ def dist(a, b): # Write a function `print_tuple` that prints all the values in a tuple -# YOUR CODE HERE +def print_tuple(a): + for element in a: + print (element) 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? -print_tuple(u) +u = (1,) # What needs to be added to make this work? +#print(len(u)) +print_tuple(u) \ No newline at end of file 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..c5acd11334 100644 --- a/src/08_comprehensions.py +++ b/src/08_comprehensions.py @@ -10,14 +10,13 @@ # Write a list comprehension to produce the array [1, 2, 3, 4, 5] -y = [] - +y = list(map(lambda x: x+1, 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 = list(map(lambda x: x**3, range(10))) print(y) @@ -26,16 +25,15 @@ a = ["foo", "bar", "baz"] -y = [] +y = list(map(lambda x:x.upper(),a)) print(y) - # Use a list comprehension to create a list containing only the _even_ elements # the user entered into list x. x = input("Enter comma-separated numbers: ").split(',') # What do you need between the square brackets to make it work? -y = [] +y = [b for a,b in enumerate(x) if b%2==0] print(y) \ No newline at end of file diff --git a/src/09_dictionaries.py b/src/09_dictionaries.py index a8b2911f64..b6c5b9166f 100644 --- a/src/09_dictionaries.py +++ b/src/09_dictionaries.py @@ -34,14 +34,20 @@ ] # Add a new waypoint to the list -# YOUR CODE HERE +b = {"lat": 45, "lon": -125, "name": "fourth place"} +waypoints.append(b) + + # 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 +d1 = {"lat": 43, "lon": -130, "name": "not a real place"} +waypoints[0].update(d1) +#print(waypoints[0].values()) # Write a loop that prints out all the field values for all the waypoints -# YOUR CODE HERE \ No newline at end of file +for items in waypoints: + print (items.values()) diff --git a/src/10_functions.py b/src/10_functions.py index 5830100c2c..ab7845a667 100644 --- a/src/10_functions.py +++ b/src/10_functions.py @@ -1,6 +1,10 @@ # Write a function is_even that will return true if the passed-in number is even. -# YOUR CODE HERE +def is_even(a): + if a%2 == 0: + return True + else: + return False # Read a number from the keyboard num = input("Enter a number: ") @@ -8,5 +12,8 @@ # Print out "Even!" if the number is even. Otherwise print "Odd" -# YOUR CODE HERE +if is_even(num): + print ("Even!") +else: + print ("Odd") diff --git a/src/11_args.py b/src/11_args.py index 8c467ea47f..be85488ac1 100644 --- a/src/11_args.py +++ b/src/11_args.py @@ -4,7 +4,8 @@ # Write a function f1 that takes two integer positional arguments and returns # 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)) @@ -12,7 +13,8 @@ # sum. # Note: Google for "python arbitrary arguments" and look for "*args" -# YOUR CODE HERE +def f2(*args): + return sum(args) print(f2(1)) # Should print 1 print(f2(1, 3)) # Should print 4 @@ -22,14 +24,15 @@ 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. -# YOUR CODE HERE +def f3(x,y=1): + return x+y print(f3(1, 2)) # Should print 3 print(f3(8)) # Should print 9 @@ -43,7 +46,10 @@ # # Note: Google "python keyword arguments". -# YOUR CODE HERE +def f4(**kargs): + for key, value in kargs.items(): + print ("key: %s, value: %s" %(key,value)) + # print(f'key: {kargs["key"]}, value: {kargs["value"]}') # Should print # key: a, value: 12 @@ -61,5 +67,9 @@ "hp": 3 } +def f4(x): + for key, value in x.items(): + print ("key: %s, value: %s" %(key,value)) + # How do you have to modify the f4 call below to make this work? f4(d) diff --git a/src/12_scopes.py b/src/12_scopes.py index bc467fa423..79645c2d42 100644 --- a/src/12_scopes.py +++ b/src/12_scopes.py @@ -5,6 +5,7 @@ x = 12 def change_x(): + global x x = 99 change_x() @@ -14,11 +15,12 @@ def change_x(): # This nested function has a similar problem. - +y =120 def outer(): - y = 120 + global y def inner(): + global y y = 999 inner() diff --git a/src/13_file_io.py b/src/13_file_io.py index 3c68f8aba2..b8a5fee19b 100644 --- a/src/13_file_io.py +++ b/src/13_file_io.py @@ -9,11 +9,15 @@ # Print all the contents of the file, then close the file # Note: pay close attention to your current directory when trying to open "foo.txt" -# YOUR CODE HERE +f = open('foo.txt','r') +print(f.read()) +f.close() # 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 +f1 = open('bar.txt','w') +f1.write("File was new stuff in it") +f1.close() \ No newline at end of file diff --git a/src/14_cal.py b/src/14_cal.py index 30bb10d113..08255708e8 100644 --- a/src/14_cal.py +++ b/src/14_cal.py @@ -1,32 +1,16 @@ -""" -The Python standard library's 'calendar' module allows you to -render a calendar to your terminal. -https://docs.python.org/3.6/library/calendar.html - -Write a program that accepts user input of the form - `14_cal.py [month] [year]` -and does the following: - - If the user doesn't specify any input, your program should - print the calendar for the current month. The 'datetime' - module may be helpful for this. - - If the user specifies one argument, assume they passed in a - month and render the calendar for that month of the current year. - - If the user specifies two arguments, assume they passed in - both the month and the year. Render the calendar for that - month and year. - - Otherwise, print a usage statement to the terminal indicating - the format that your program expects arguments to be given. - Then exit the program. - -Note: the user should provide argument input (in the initial call to run the file) and not -prompted input. Also, the brackets around year are to denote that the argument is -optional, as this is a common convention in documentation. - -This would mean that from the command line you would call `python3 14_cal.py 4 2015` to -print out a calendar for April in 2015, but if you omit either the year or both values, -it should use today’s date to get the month and year. -""" - import sys import calendar -from datetime import datetime \ No newline at end of file +from datetime import datetime + +#print (type(sys.argv[2])) +today = datetime.today() +cal = calendar.TextCalendar() +#print (sys.argv) +if (len(sys.argv)==1): + print(cal.prmonth(today.year,today.month)) +elif (len(sys.argv)==2): + print(cal.prmonth(today.year,int(sys.argv[1]))) +elif (len(sys.argv)==3): + print(cal.prmonth(int(sys.argv[2]),int(sys.argv[1]))) +else: + print("Error! Usage: Python3 14_cal.py ") \ No newline at end of file diff --git a/src/15_classes.py b/src/15_classes.py index 2355dd20b7..bc61d7078e 100644 --- a/src/15_classes.py +++ b/src/15_classes.py @@ -1,21 +1,36 @@ # Make a class LatLon that can be passed parameters `lat` and `lon` to the # constructor -# YOUR CODE HERE +class LatLon: + def __init__(self,lat,lon): + self.latitude = lat + self.longitude = 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,name,lat,lon): + super().__init__(lat,lon) + self.name = name + def __str__(self): + return (f'{self.name},{self.latitude},{self.longitude}') # 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 + + def __str__(self): + return (f'{self.name},{self.difficulty},{self.size},{self.latitude},{self.longitude}') # 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 @@ -23,7 +38,7 @@ # Make a new geocache "Newberry Views", diff 1.5, size 2, 44.052137, -121.41556 -# 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..986d8c8136 --- /dev/null +++ b/src/bar.txt @@ -0,0 +1 @@ +File was new stuff in it \ No newline at end of file