Philadelphia Python Workshop/Projects: Difference between revisions
Content added Content deleted
imported>Geography76 No edit summary |
imported>Maneesha (remove twitter project because the new API means it does not work) |
||
Line 1: | Line 1: | ||
Welcome to the Saturday afternoon projects section of the Philadelphia Python Workshop! |
Welcome to the Saturday afternoon projects section of the Philadelphia Python Workshop! |
||
Line 243: | Line 243: | ||
===Python Wordplay Project Instructions=== |
===Python Wordplay Project Instructions=== |
||
Here are the [[Philadelphia Python Workshop/Projects/Wordplay|Wordplay Project Instructions]]. |
Here are the [[Philadelphia Python Workshop/Projects/Wordplay|Wordplay Project Instructions]]. |
||
==Twitter== |
|||
<table> |
|||
<tr> |
|||
<td> |
|||
[[File:Twitter.png|100px]]<br /> |
|||
<center><b>Twitter</b></center> |
|||
</td> |
|||
<td> |
|||
Use the Twitter API to write the basic parts of a Twitter client. See what your friends are tweeting, get trending topics, search tweets, and more. |
|||
</td> |
|||
</tr> |
|||
</table> |
|||
===Twitter goals=== |
|||
* practice for loops |
|||
* practice using functions |
|||
* practice implementing functions |
|||
* see what it's like to use an API |
|||
* have fun collecting data from Twitter |
|||
===Concept review=== |
|||
====Indentation reminder==== |
|||
In Python, indentation matters. Everything is indented by a multiple |
|||
of some number of spaces, often 4. |
|||
In <code>if</code> statements, you indent everything you want to be run if the if |
|||
conditional is <code>True</code>. For example: |
|||
<pre> |
|||
>>> James = 35 |
|||
>>> Alice = 30 |
|||
>>> if James > Alice: |
|||
... print "James is older than Alice." |
|||
... |
|||
James is older than Alice. |
|||
>>></pre> |
|||
Because James really is older than Alice, the <code>if</code> conditional is <code>True</code>, |
|||
so Python does execute the code indented under the if line. In this |
|||
case we print "James is older than Alice." |
|||
<pre> |
|||
>>> James = 35 |
|||
>>> Alice = 30 |
|||
>>> if James < Alice: |
|||
... print "James is younger than Alice." |
|||
... |
|||
>>></pre> |
|||
Because James is not older than Alice, the <code>if</code> conditional is <code>False</code>, so |
|||
Python does not execute the code indented under the if line. |
|||
In for loops, you indent everything you want to be run each loop For |
|||
example: |
|||
<pre> |
|||
>>> names = ["Jessica", "Adam", "Liz"] |
|||
>>> for name in names: |
|||
... print "Hello " + name |
|||
... |
|||
Hello Jessica |
|||
Hello Adam |
|||
Hello Liz</pre> |
|||
The <code>print</code> line is indented 4 spaces under the <code>for</code>. That's how |
|||
Python knows to execute the print line for every name in names. |
|||
====Functions==== |
|||
Let's review what we know about functions: |
|||
* They do some useful bit of work. |
|||
* They let us re-use code without having to type it out each time. |
|||
* They take input and possibly produce output (we say they return a value). You can assign a variable to this output. |
|||
* You define a function using the def keyword. |
|||
* You call a function by using its name followed by its arguments in parenthesis. |
|||
Here's an example: |
|||
<pre> |
|||
>>> def add(x, y): |
|||
... return x + y |
|||
... |
|||
>>> add(1, 2) |
|||
3 |
|||
>>> add(-1, 1) |
|||
0 |
|||
>>> add(.5, .75) |
|||
1.25</pre> |
|||
====pass==== |
|||
<code>pass</code> is a keyword that just means "do nothing". It most often shows up |
|||
as a place-holder for code that doesn't exist yet. For example: |
|||
<pre> |
|||
>>> def testFunction(): |
|||
... pass |
|||
... |
|||
>>></pre> |
|||
====Imports==== |
|||
Imports look like this: |
|||
<pre> |
|||
>>> import random |
|||
>>> import time</pre> |
|||
In the above example, <code>random</code> and <code>time</code> are both Python modules. Modules |
|||
are Python files outside of the current Python file that contain |
|||
Python code, like functions and variables. You can use code from |
|||
modules by first importing the module. Here's an example from the |
|||
<code>random</code> module: |
|||
<pre> |
|||
>>> import random |
|||
>>> random.randint(0, 10) |
|||
7 |
|||
>>> random.randint(0, 10) |
|||
6 |
|||
>>> random.randint(0, 10) |
|||
1 |
|||
>>> random.randint(0, 10) |
|||
3 |
|||
>>> random.randint(0, 10) |
|||
4 |
|||
>>> random.randint(0, 10) |
|||
9</pre> |
|||
<code>randint</code> is a function in the <code>random</code> module. It takes a lower bound as |
|||
the first argument and an upper bound as the second argument and |
|||
returns a random integer between those bounds. |
|||
===Python Twitter library functions we will use=== |
|||
A library provides a collection of functions for you, and defines a contract for using those functions. Here are the functions in the python-twitter library that will be useful for the project: |
|||
<code>api.GetSearch(searchString)</code> |
|||
Given a string to search for, this function will return a list of tweets matching that search string. |
|||
<code>api.GetUserTimeline(username)</code> |
|||
Given a username, this function will return a list of tweets belonging to that username. |
|||
===Python Twitter Project Instructions=== |
|||
Here are the [[Philadelphia Python Workshop/Projects/Twitter|Twitter Project Instructions]]. |