CS 2120: Topic 7 ================ .. image:: ../img/nap.jpg :width: 350pt Videos for this week: ^^^^^^^^^^^^^^^^^^^^^ .. raw:: html .. raw:: html A note on comments ^^^^^^^^^^^^^^^^^^^ * Helpful for *others* who are reading your code (they make it easier to read and understand) * Helpful for *you* when you revisit your own code (i.e. when you return to a project a month later) * You can add *comments* to your code in Python with ``#``:: # we can comment above my_car = 5 #or to the right * Once Python sees ``#`` it ignores the rest of the current line * Don't just repeat what's obvious from reading the code... provide a *higher level* description of what's happening. Python docstrings ^^^^^^^^^^^^^^^^^ * These are comments for functions (also other things like methods, classes, etc.) * Used immediately after the function definition:: def set_up_cities(names): """ Set up a collection of cities (world) for our simulator. Each city is a 3 element list, and our world will be a list of cities. :param names: A list with the names of the cities in the world. :return: a list of cities """ function code here * Explain what the function is going to do, in plain English. * Also explain *every* parameter and *what the function returns* More on strings ^^^^^^^^^^^^^^^ * **Question**: How is a string different from the other data types we've seen (``int``, ``float``, ``bool``, etc.)? * **Answer:** We can print individual *characters* of a string by *indexing* the string: >>> a='Boomboombobo' >>> print(a[0]) B >>> print(a[1]) o * Note that in Python, the first index is ``0``, not ``1`` * What does ``print(a[0:4])`` do? >>> print(a[0:4]) Boom * This process is called *slicing*. More on loops ^^^^^^^^^^^^^ * ``while`` loops are great, but they rely on a boolean condition returning false (i.e. while condition is true, do something):: while(mouse_not_yet_clicked = True): print("Please click the mouse") * ``for`` loops allow for iteration through a specified range or over elements in a list (among others):: # one way you may use a for loop for i in range(len(a)): print(a[i]) * for i from 0 until the length of the string a, print the ith element of a:: # another way you may use a for loop for char in a: print(char) * *for* each character in the string ``a``, we run the indented code block. * Yes, you could create a ``while`` loop which does exactly the same thing... the ``for`` loop is just cleaner here (less typing). Mutability ^^^^^^^^^^^ * We can *access* an individual character in a string with an index (i.e. a[0])... can we *set* an individual character by index as well? * Let's try:: >>> a[7]='x' Traceback (most recent call last): line 4, in a[7] = 'x' TypeError: 'str' object does not support item assignment * Variables of some types are *mutable*... i.e. they can be changed. * Strings are immutable --- you can't change a string, you have to make a *new one*:: >>> new_a = a[:7] + 'x' + a[8:] >>> print(new_a) Boombooxbobo Python Lists ^^^^^^^^^^^^ * You've seen these in Assignment 1, and maybe you made your own in Activity 2 * What is it? An *ordered and changeable collection of values or elements* * Lists are like strings, except that the elements can be any type (not just characters):: >>> myList = [] >>> myList.append(5) >>> print(myList) [5] >>> myList.append(10) >>> print(myList) [5,10] >>> print(myList[0]) 5 * We can add to the end of lists with ``append`` * Like strings, we can access the elements of a list with myList[i], where ``i`` is the list's index (starts from 0 for the first element) For next class ^^^^^^^^^^^^^^ * Read `chapter 9 of the text `_ * Take a look at Assignment 2 (due October 30th)