For this course, we’ll always be using Python 3. There are a few options for how to edit and run Python code. Typically you will edit your code in a text editor and run it through a terminal. Options for text editors on the CS department machines include
When opening existing files in these programs, be careful, as they may change tabs to spaces.
There are a few options for IDEs for Python. One of the most popular is PyCharm, but it is unfortunately not available on the CS department machines.
To run a Python script using a terminal, navigate to the folder containing the script using
cd <folder location>
then
python3 <filename>.py
Depending on the installation, it may just be python
rather than python3
.
If you want to install Python on your own machine, https://www.python.org/downloads/ has the downloads. You will likely need to add Python to your path. There is usually an option to do this during install, but otherwise you may have to search how to set it up on your home computer. Alternatively, you can transfer the files to a CS machine using SCP and use SSH to run it from there.
A hello world program in Python is just
A slightly more complex program is (your TA will talk you through what it does):
import sys
def name_of_function(var1, var2):
# This is a comment!
sum = 0
for i in range(var1):
sum += var2
return sum
if __name__ == '__main__':
num_to_do = int(sys.argv[1])
num_to_add = int(sys.argv[2])
result = name_of_function(num_to_do, num_to_add)
print(result)
Use some of these resources to learn about Python lists and slices. Are Python lists passed by value or by reference? What do you expect the following code snippets to do and why?
a_list = ['this is a list', 3, ['this is a sublist']]
print(len(a_list))
a_list.append(True)
print(a_list)
print(len(a_list))
a_list = a_list + [3.0, 4.0, 5.0]
print(a_list)
print(len(a_list))
def doubler(a_list):
for elem in a_list:
elem = 2*elem
def doubler2(a_list):
for i in range(len(a_list)):
a_list[i] = 2*a_list[i]
first_list = ['a', 1, [0, 1]]
doubler(first_list)
print(first_list)
second_list = ['a', 1, [0, 1]]
doubler2(second_list)
print(second_list)
exec
and eval
Both the exec
and eval
commands will be used in the first programming assignment. The eval
command takes a string and returns what the output of that string would be if it were executed as Python code. For example,
would display 5. This can also be used with variables:
However, eval
only ever evaluates a string - it can’t make changes. To do that, we need the exec
command. For example,
Putting them both together, we can do things like
variables = ['a', 'b', 'c']
values = [1, 3, -3]
expression = 'b - a + c**2'
for i in range(len(variables)):
exec(variables[i] + ' = ' + str(values[i]))
print(a)
print(b)
print(c)
print(eval(expression))
Most of the programming assignments in this course will be easier to solve using recursion. Here’s an example of a basic recursive program: