Python programming classes for the 2015 Supercomputing

advertisement

Python programming classes for the 2015

Supercomputing Challenge Kickoff

Material is based off of Teach Your Kids to Code by Bryson Payne.

Resources:

Text book: http://smile.amazon.com/gp/product/1593276141/ref=s9_psimh_gw_p14_d0_i2?pf_rd_m=ATV

PDKIKX0DER&pf_rd_s=desktop-

1&pf_rd_r=0139XYP2RG7NJCDQCYXS&pf_rd_t=36701&pf_rd_p=2079475242&pf_rd_i=de sktop

Web site: http://teachyourkidstocode.com/

Online course with several free previews to get you started: https://www.udemy.com/teach-your-kids-to-code/?couponCode=NOSTARCH27

Source code from the book: http://teachyourkidstocode.com/downloads or http://teachyourkidstocode.com/download/book

Python: https://www.python.org

and https://www.python.org/downloads

Client side Python: www.skulpt.org

Turtle Graphics documentation: https://docs.python.org/3/library/turtle.html

PyGame: https://www.pygame.org/hifi.html

, https://www.pygame.org/download.shtml

Python Tutorial: https://docs.python.org/2/tutorial/index.html

In the three hours we will cover:

1.

Using the Python IDLE environment to run programs in the Python shell and to create and run Python programs and use turtle graphics to learn about modules, variables, lists, loops, some math operators and input and output operations.

2.

More loops and math operators, functions, if conditional expressions and more turtle command.

3.

User defined functions

Python 1

st

Hour

Start up the Python IDLE, enter print (“Hello World!”) to see how the Python shell works. Note the color of the words. Look over the menus at the top of the Python window. Either use the installed Python IDLE, or start it from the Supercomputing Challenge flash drive.

Now let’s learn how to interact with the computer by having it ask us our name. Click on File and New Window and enter:

# YourName.py name = input("What is your name?\n") print("Hi,",name)

Then save it (File/Save As/ put it on the jump drive) and click Run/Run Module (or F5). Talk about the colors of words, that \n means a carriage return. Try it without the \n to see the difference.

Turtle Graphics: Now let’s look at graphical output of Python commands. Open a new window and save it as SquareSpiral1.py and enter the following code into that window:

# SquareSpiral1.py import turtle t=turtle.Pen() for x in range(1,100):

t.forward(x)

t.left(90) and then click Run/Run module. Talk about the import statement and what each line of the file does.

Change the angle of the turn in the t.left() command (to some value close to 90 like 89 or

91) and save it as SquareSpiral2.py and run it. Prefer circles to squares? Change t.forward

to t.circle

and save it as CircleSpiral1.py and see what it does.

Now let’s add some color. Go back to SquareSpiral2.py and save it as SquareSpiral3.py and add t.pencolor(“red”) right before the for loop. Run it and see what happens. Try it with different colors.

Let’s put several colors together in the spiral. Save SquareSpiral3.py as ColorSquareSpiral.py and add the line colors = ["red", "yellow", "blue", "green"] after the t = turtle.Pen() line and move the pencolor line into the loop but change it to t.pencolor(colors[x%4]) . This will divide x by 4 and give the remainder (0-3) and use that to pick a color. Run the program.

Wouldn’t it look better on a black background?

Add turtle.bgcolor('black') before the colors= line and save it and run it.

For the rest of the hour, play with this code, changing different numbers and/or colors.

For more exploration, look at other codes from Chapter two of the book at: http://teachyourkidstocode.com/download/book/ch02/

Python 2

nd

Hour

More loops and math operators, functions, if conditional expressions and more turtle command.

Let’s use the Python interpreter to play with some math.

Bring up the Python Shell and at the >>> sign, enter 2+3 and hit return. What is the difference between 10/3 and 10//3 and 10%3 ? (Explain integer division and modulo, or remainder, division.) Remember the order of operation, which Python follows just like math defines, so what is 5-2*3+4/2+2 , and why?

Use parentheses when necessary, or to make the operations clearer. Exponents or power can be calculated with ** , as in 2**3 (which is 2*2*2).

Let’s go back to a color spiral, but add variables which means we need to do some calculations.

Enter the following code and let’s see what it does and how it does it.

# ColorSpiralInput.py import turtle # Set up turtle graphics t = turtle.Pen() turtle.bgcolor("black")

# Set up a list of any 8 valid Python color names colors = ["red", "yellow", "blue", "green", "orange", "purple", "white",

"gray"]

# Ask the user for the number of sides, between 1 and 8, with a default of 4 sides = int(turtle.numinput("Number of sides",

"How many sides do you want (1-8)?", 4, 1, 8))

# Draw a colorful spiral with the user-specified number of sides for x in range(360):

t.pencolor(colors[x % sides]) # Only use the right number of colors

t.forward(x * 3 / sides + x) # Change the size to match number of sides

t.left(360 / sides + 1) # Turn 360 degrees/number of sides, plus 1

t.width(x * sides / 200) # Make the pen larger as it goes outward

Play with it a few times to see the different shapes that can be created.

Copy the ViralSpiral.py code from: http://teachyourkidstocode.com/download/book/ch04/ViralSpiral.py

and see what it does. Watch the Python shell window, what are those numbers that are being printed?

Conditions: What if?

Python has several conditional statements: if condition:

Indented statement(s) if condition:

Indented statement(s) else:

Indented statement(s) if condition:

Indented statement(s) elif condition :

Indented statement(s) conditions are Boolean expressions that evaluate to true or false. You can use comparison operators like < > <= >= == != and the words and or and not .

Let’s look at a program that can check for even or odd numbers, and draw a rosette at even points and a polygon at odd points. Talk about the range statement.

Download RosettesAndPolygons.py from: http://teachyourkidstocode.com/download/book/ch05/RosettesAndPolygons.py

and look over the code. Save it and run it.

# RosettesAndPolygons.py - a spiral of polygons AND rosettes! import turtle t = turtle.Pen()

# Ask the user for the number of sides, default to 4 sides = int(turtle.numinput("Number of sides",

"How many sides in your spiral?", 4))

# Our outer spiral loop for polygons and rosettes, from size 5 to 75 for m in range(5,75):

t.left(360/sides + 5)

t.width(m//25+1)

t.penup() # Don't draw lines on spiral

t.forward(m*4) # Move to next corner

t.pendown() # Get ready to draw

# Draw a little rosette at each EVEN corner of the spiral

if (m % 2 == 0):

for n in range(sides):

t.circle(m/3)

t.right(360/sides)

# OR, draw a little polygon at each ODD corner of the spiral

else:

for n in range(sides):

t.forward(m)

t.right(360/sides)

Python 3

rd

Hour

Loops and User defined functions, …

Card playing program: Let’s play war.

Download HighCard.py from: http://teachyourkidstocode.com/download/book/ch06/HighCard.py

# HighCard.py import random suits = ["clubs", "diamonds", "hearts", "spades"] faces = ["two", "three", "four", "five", "six", "seven",

"eight", "nine",

"ten", "jack", "queen", "king", "ace"] keep_going = True while keep_going:

my_face = random.choice(faces)

my_suit = random.choice(suits)

your_face = random.choice(faces)

your_suit = random.choice(suits)

print("I have the", my_face, "of", my_suit)

print("You have the", your_face, "of", your_suit)

if faces.index(my_face) > faces.index(your_face):

print("I win!")

elif faces.index(my_face) < faces.index(your_face):

print("You win!")

else:

print("It's a tie!")

answer = input("Hit [Enter] to keep going, any key to exit:

")

keep_going = (answer == "")

User defined functions: you can create your own functions to use over and over again. Let’s define a function to draw a spiral, then allow the user to click anywhere on the screen to create a spiral. The general form is def function_name(parameters): then have all of the commands in the function indented.

Download ClickSprial.py from: http://teachyourkidstocode.com/download/book/ch07/ClickSpiral.py

And look over the code and play with it.

#ClickSpiral.py import random import turtle t = turtle.Pen() t.speed(0) turtle.bgcolor("black") colors = ["red", "yellow", "blue", "green", "orange", "purple",

"white", "gray"] def spiral(x,y):

t.pencolor(random.choice(colors))

size = random.randint(10,40)

t.penup()

t.setpos(x,y)

t.pendown()

for m in range(size):

t.forward(m*2)

t.left(91) turtle.onscreenclick(spiral)

If time remains, discuss file i/o: https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files and python interfacing with sensors: cloudbrain 0.2.1

Platform for real-time sensor data analysis and visualization.

gotemp 1.0.1

A library for interacting with GoTemp! temperature sensors. obd 0.4.1

Serial module for handling live sensor data from a vehicle's OBD-II port

Download