Anonymous user
Boston Python Workshop 3/Friday/Tutorial: Difference between revisions
Boston Python Workshop 3/Friday/Tutorial (view source)
Revision as of 13:12, 24 September 2011
, 12 years agoProtected "Boston Python Workshop 3/Friday/Tutorial" ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))
imported>Jesstess |
imported>Jesstess m (Protected "Boston Python Workshop 3/Friday/Tutorial" ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite))) |
||
(34 intermediate revisions by 3 users not shown) | |||
Line 47:
</pre>
Hey now! That last result is probably not what you expected. What's going on here is that integer divison produces an integer. You need a number that knows about the decimal point to get a decimal out of division:
<pre>
Line 59:
</pre>
What do you need to do to get the right answer? Use data types that understand decimals for each of the divisions:
<pre>
Line 66:
</pre>
The two previous expressions produce the same result. You only need to make one of the numbers in each fraction have a decimal. When the Python interpreter goes to do the division, it notices that one of the numbers in the fraction cares about decimals and says
===Modulus===
Line 94:
I used the term 'function' without explaining what it is -- we'll talk about functions more in a bit, and write our own, but for now know these things:
* Functions
* Functions are
* To use a function, write the name of the function followed by an open parenthesis, what the function takes as input (we call that input the <b>arguments</b> to the function), and then a close parenthesis.
Line 102:
===Command history===
Stop here and try hitting the Up arrow on your keyboard a few times. The Python <b>interpreter</b> saves a history of what you've entered, so you can arrow up to old commands and hit Return to re-run them!
==Variables==
Line 208:
<pre>
</pre>▼
Like with the math data types above, we can use the <code>type</code> function to check the type of
<pre>▼
type("Hello")▼
type(1)▼
type("1")▼
</pre>
Line 215 ⟶ 223:
<pre>
print "Hello", "World"▼
</pre>
<pre>▼
name = "Jessica"
</pre>▼
===Printing===
You can print strings using <code>print</code>:
<pre>
Line 229 ⟶ 245:
my_string = "Alpha " + "Beta " + "Gamma " + "Delta"
print my_string
▲</pre>
▲Like with the math data types above, we can use the <code>type</code> function to check the type of these strings:
▲<pre>
▲type("Hello")
▲type(1)
▲type("1")
</pre>
Line 283 ⟶ 291:
</pre>
Python is actually turning the integer 1 into a string before printing, and that's why
We can convert an integer into a string ourselves, using the <code>str</code> function:
Line 291 ⟶ 299:
</pre>
Like the <code>type</code> function from before, the <code>str</code> function takes 1 argument. In the above example it took the integer 1. <code>str</code> takes
There's another useful function that works on strings called <code>len</code>. <code>len</code> returns the length of a string as an integer:
Line 321 ⟶ 329:
</pre>
This gives us another <b>traceback</b>, for a new kind of error, a <code>SyntaxError</code>. When Python looks at that expression, it sees the string 'I' and then
<code>m a happy camper'</code>
Line 587 ⟶ 595:
</pre>
Like with <code>if</code>, the code block under the <code>else</code> statement must be indented so Python knows that it is a part of the <code>else</code> block.
====compound conditionals: <code>and</code> and <code>or</code>====
Line 628 ⟶ 636:
print "Can I interest you in some choice gouda?"
</pre>
You can have as many lines of code as you want in <code>if</code> and <code>else</code> blocks; just make sure to indent them so Python knows they are a part of the block.
====even more choices: <code>elif</code>====
If you have more than two cases, you can use the <code>elif</code> keyword to check more cases. You can have as many <code>elif</code> cases as you want; Python will go down the code checking each <code>elif</code>
<pre>
Line 644 ⟶ 654:
</pre>
You don't have to have an <code>else</code> block, if you don't need it. That just means there isn't default code to execute when none of the
<pre>
Line 656 ⟶ 666:
</pre>
If color had been "purple", that code
==Writing Functions==
Line 667 ⟶ 677:
* They let us re-use code without having to type it out each time.
* They take input and possibly produce output (we say they <b>return</b> a value). You can assign a variable to this output.
* You call a function by using its name followed by
For example:
Line 675 ⟶ 685:
</pre>
We can write our own functions to encapsulate bits of useful work so we can reuse them. Here's how you do it:
Line 681 ⟶ 691:
<b>Step 1: write a function signature</b>
A <b>function signature</b> tells you how the function will be called. It starts with the keyword <code>def</code>, which tells Python that you are defining a function. Then comes a space, the name of your function, an open parenthesis, the comma-separated input <b>parameters</b> for your function, a close parenthesis, and a colon. Here's what a function signature looks like for a function that takes no arguments:
<code>def myFunction():</code>▼
▲<pre>
▲def myFunction():
▲</pre>
Here's what a function signature looks like for a function that takes one argument called <code>string</code>:
<code>def myFunction(string):</code>▼
▲def myFunction(string):
And one for a function that takes two arguments:
<code>def myFunction(myList, myInteger):</code>▼
▲def myFunction(myList, myInteger):
Parameters should have names that usefully describe what they are used for in the function.
Line 742 ⟶ 746:
</pre>
if <code>number</code> is less than 0, you return <code>number * -1</code> and never even get to the last line of the function. However, if <code>number</code> is greater than or equal to 0, the
We could have written the above function like this if we wanted. It's the same logic, just more typing:
<pre>
Line 774 ⟶ 780:
Learning about functions opens up a whole new way for us to practice, using the programming site [http://codingbat.com codingbat.com]. The big goal of this practice section is to get you thinking about how to solve problems in Python.
Please visit http://codingbat.com/home/jessica.mckellar@gmail.com/Friday to complete the practice problems. You don't have to create a CodingBat account to do the exercises, but if you do create an account it'll keep track of which problems you've completed and other statistics.
==End of Part 2==
|