My Project Mission - Worc Web viewBelow are print screens of programs, ... ("The Word Has 6 Letters...

130
Learning to Program Essential skills to code in Python for KS3 & KS4 1 | Page Candidate: 10003313

Transcript of My Project Mission - Worc Web viewBelow are print screens of programs, ... ("The Word Has 6 Letters...

Learning to Program Essential skills to code in Python for KS3 & KS4

Saagar Jagatia

1 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Release Information and Copyright Notice

© This material is subject to copyright. You are free to use this for your own personal use and for other teachers within your institution, including photocopies to those. You may not copy, photo-copy or e-mail this document to parties outside your institution. The University of Worcester logo and related trademarks may not be used without permission directly from the University.

The information contained in this resource pack are from sources believed to be reliable. However, because of the possibility of human or mechanical error by our sources I cannot guarantee the accuracy, adequacy or completeness of any information. Readers should also be particularly aware of the fact that the internet is an ever-changing entity. Some facts may change once this book is released.

The software used throughout this pack may be upgraded by the developers, which may alter your experience of the language and the software packages.

Release: SHJagatia;

06th November 2012, Draft 1.11th December 2012, Draft 2. 16th January 2013, Draft 3.28th February 2013, Final Draft.

2 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Table of ContentsLearning to Program...............................................................................................................................1

Release Information and Copyright Notice.............................................................................................2

Table of Contents..................................................................................................................................3

Forward..................................................................................................................................................6

Preface...................................................................................................................................................7

My Project Mission.................................................................................................................................9

Acknowledgements................................................................................................................................9

Intro 1a. How To Use This Book............................................................................................................10

Working through the sections..........................................................................................................10

Code Examples.................................................................................................................................10

Intro 1b. Programming in School..........................................................................................................11

Logo..................................................................................................................................................11

Scratch..............................................................................................................................................13

Intro 2. Learning and Teaching how to Program..................................................................................14

Modification (Modding)....................................................................................................................14

Extension..........................................................................................................................................14

Collage..............................................................................................................................................14

Reading Code....................................................................................................................................15

Coding from Scratch.........................................................................................................................15

Intro 3a. Introduction to Software Development.................................................................................16

Iterative Development......................................................................................................................16

Professional Iterative Software Development..................................................................................16

Debugging.........................................................................................................................................16

Intro 3b. Strategies for Debugging in Python........................................................................................17

Syntax Errors.....................................................................................................................................17

Debugging Example..........................................................................................................................18

Intro 4. Introduction To The Python Language.....................................................................................19

Downloading, Installing, Configuring and Running Python...............................................................19

Let’s begin........................................................................................................................................22

Official Python Cheat Sheet – for a real head start with the language.............................................23

Now some Python Basics..................................................................................................................24

TECHNICAL STUFF:............................................................................................................................25

3 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Some Rules and Information................................................................................................................27

Naming Rules....................................................................................................................................27

Python Data Types............................................................................................................................27

Modules................................................................................................................................................28

Comparing Strings............................................................................................................................29

TECHNICAL STUFF:............................................................................................................................29

The Three Ds.....................................................................................................................................29

Lesson 1. Lets Dive Into The Code........................................................................................................30

Example 1: Numerical Input.py.........................................................................................................30

Example 2: GuessTheNumberBySaagarJagatia.py............................................................................32

Example 3: HangmanBySaagarJagatia.py..........................................................................................33

Lesson 2. Understanding the Python Library: ‘Import’ & Creating Modules........................................39

Using & importing Modules..............................................................................................................39

Creating Modules.............................................................................................................................40

Lesson 3. Understanding a Created Library..........................................................................................41

Graphical Outputs...........................................................................................................................41

Lesson 4. Tkinter an Introduction.........................................................................................................43

Here is a Complete Example.............................................................................................................44

Features of Tkinter...........................................................................................................................44

Example 1: Helloworld.py.................................................................................................................45

Example 2: SimpleCalculator.py.......................................................................................................46

Tkinter in school:..............................................................................................................................47

Tkinter Widgets Table.......................................................................................................................48

Font Style Options............................................................................................................................48

Tk Option Data Types........................................................................................................................49

Lesson 5. PyProcessing an Introduction................................................................................................51

Example 1: PyProcessing..................................................................................................................54

Example 2: Helloworld.py.................................................................................................................55

Example 3: Helloworldrot.py............................................................................................................56

PyProcessing Questions and Challenges...........................................................................................57

Pyprocessing in school:.....................................................................................................................58

Pyprocessing Variables.....................................................................................................................59

Structure.........................................................................................................................................59

Image..............................................................................................................................................59

Environment...................................................................................................................................60

4 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Colour.............................................................................................................................................61

Shape..............................................................................................................................................62

Input...............................................................................................................................................63

Math...............................................................................................................................................65

Transform.......................................................................................................................................65

Lights, Camera................................................................................................................................66

Camera...........................................................................................................................................67

Pyglet Package – Extension task.......................................................................................................68

Lesson 5: Python Challenges Questions................................................................................................71

Python Challenges Answers..................................................................................................................72

Appendix – Code Snippets....................................................................................................................76

Debugging.........................................................................................................................................76

Python Basics - Maths.......................................................................................................................76

Python - Example 1: Numerical Input.py.....................................................................................76

Example 2: GuessTheNumberBySaagarJagatia.py............................................................................77

Example 3: HangmanBySaagarJagatia.py..........................................................................................78

Tkinter - Example 1:HelloWorld.py.............................................................................................82

Example 2: SimpleCalculator.py.......................................................................................................83

PyProcessing - Example 1:PyProcessing.py...................................................................................84

Example 2:HelloWorld.py.................................................................................................................85

Example 3: HelloWorldRot.py...........................................................................................................85

Something fun for class....................................................................................................................86

1 player pong....................................................................................................................................86

References............................................................................................................................................89

5 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Forward

This resource pack was written as part of an independent study during a third year degree course at, the University of Worcester. This resource pack contains information to assist the drive towards concepts and skills allied to Computer Science, and its introduction into the secondary school curriculum at KS4 (GSCE) level.

This book will focus on the Python programming language. Following a meeting with the regional organiser of CAS (Computing at Schools) group and Dr, Colin B Price of University of Worcester, there was a mutual feeling that Python is a useful language to introduce to KS4 level pupils to prepare them for further Computing Studies beyond school, (KS5). In order to test this theory, this book will aid the research to see how KS4 pupils respond to the Python language, and whether or not it is an appropriate programming language at the KS3/KS4 level.

This piece of work is aimed at teachers and maybe their pupils. It will guide teachers on how to use Python within their classes.

S. H. Jagatia.University of Worcester (2012-2013)

6 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

PrefaceThis piece of work aims to introduce the Python language to Year 10 - 11 students. The projects’

mission is to develop teachers and students coding capabilities, and also to help them learn how to

program creatively. It is directed to the teachers, to help you craft lessons for your students at this

level.

Teacher Assumptions:

You have never programmed before, or have had minimal exposure to programming

You are intelligent and motivated, and have great experience and knowledge with computers

You are able to use a text editor, if not your colleagues should provide a brief tutorial –

(installation guide will be provided: Notepad++, Python’s IDLE)

You know little or nothing about Python and its capabilities

Student Assumptions:

You have never programmed before, or have had minimal exposure to programming

You have a personal drive to do well

You are intelligent and motivated, and have experience and knowledge of using and

understanding computers

You are unable to use a text editor, if not your teachers should provide a brief tutorial –

(installation guide will be provided: Notepad++, Python’s IDLE)

You know little or nothing about Python and wish to learn more

I, Saagar Jagatia, present you with ideas and suggestions on how to teach programming in your

lessons, but do not provide you with ‘lesson plans’ but more of a tool for learning.

This resource pack can be used as a standalone introduction at KS3 & KS4, or also in preparation for

GCSE classes. There are various sections to the book, it includes: ‘Intro’s’, ‘Projects’, ‘Lessons’ and

‘Questions’.

The intros are aimed at you and are intended to get you started, by providing a little background of

the concepts which will be discussed in later sections. The projects and the questions will allow you to

practice and extend your Python skill set. In the lessons section, you will be given general pointers on

how to craft a sequence of lessons to teach your students

The pack will look at a variety of variable types: integer, real, Boolean, character and string, all these

terms and concepts will be introduced and discussed.

7 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

You may or may not have heard of ‘Object Oriented Programming’ (OOP). It is a sophisticated and

natural approach to writing code. It is a set of tools and methods that enable software engineers to

build reliable, user friendly, and maintainable, well-documented, reusable software systems that fulfils

the requirements of its users. Python is an extensible, object-oriented interpreted programming

language. An Object-Oriented programming language provides support for the following O-O

concepts:

Objects and Classes

Inheritance

Polymorphism and Dynamic Binding (The ability to create a variable, a function, or an object

that has more than one form)

In addition there are many other modules available from third parties providing many other services.

Python is licensed under terms similar to the LGPL license (2007) and is available for: Linux, Unix,

Windows and Macintosh operating systems.

More information on Python is available at www.python.org.

The primary author of Python is: Guido van Rossum;

E-mail: [email protected]

This resource pack has been created with information which has been collated over several years’

research on how best to teach programming to pupils. This resource pack will undergo several stages

of evaluation from teachers and pupils. My understanding of how best to teach pupils is summarised

below:

Programming must be creative rather than problem-solving.

The results of student’s code should be visual, involving shapes, colours and lines.

Students should be given advice and assistance, when executing code.

Students should be able to write interactive code, whereby the programs can be influenced by

the use of a mouse, and a keyboard.

Never give student a sample of incorrect code, and ask them to find errors. Students should be

given ‘Code Snippets’ this will assist them in learning what it can actually do.

8 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

My Project Mission”During my personal School/ Sixth Form education, I was never faced with Computer Science and

Programming in particular. University on the other hand, required me to know the basics at least (to get by). Without prior programming experience I had to learn independently.”

“Hence, this resource pack has been developed for pupils and teachers who wish to drive Computer Science into the curriculum. This drive could potentially change a child’s computer education”

Acknowledgements

Writing Python Programming has been the collective effort of many people. Each of these persons

in a way contributed their expertise and effort to help make the book more effective.

Hence, this resource pack has emerged as part of a third year independent study. I would like to

take this opportunity to thank: Colin Price, John Palmer, the teachers who will review the finished

piece, my friends, family and finally the Python documentation available online. All of which have

helped radically to develop this resource pack. They provided comments that resulted in

significant improvements to both the quality and depth of the work.

Some of the code examples used within this pack have been derived from coded programs written

by others, all available via ‘open source’ documentation online. During the development of this

resource pack, I personally was learning to program using Python, and without the use of the

documentation online the learning process may have proved far more difficult.

9 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 1a. How To Use This Book

Working through the sections

This resource pack is categorised into intros, and lessons, each looking at something new, however

some may refer to chapters earlier in the pack. It is advised to follow each chapter in a linear path in

your teaching and learning. By following each section the desired outcome is that, teachers, students

and pupils will have gained an understanding and also built confidence which will allow them to code

creatively and independently. Learning is all about exploring. If you can put it into your pupil’s minds

that they are in control they will grasp the opportunity to learn beyond the classroom walls.

How a section may be structured:

An introduction

Some sample code (Print screens, copy and paste version will be available in the appendix)

Project

Random questions for further development

Several sources may be used to back up information that is stated.

o Including web links whereby you can enhance your studies

Code Examples The code used in the screen shots will be available in the ‘appendix’ section. In the appendix section

the code that creates specific program can be easily read and reused (if desired).

10 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 1b. Programming in SchoolCurrently schools tend to use simple programming languages within lessons, two popular ones are: Logo and Scratch. Hall Green School (A school placement I attended), situated in Birmingham, UK currently use both of these software tools.

Several year 7 classes were being taught how to use Logo during my placement, this proved to be an extremely interesting experience as I was able to see how different teachers taught and helped their classes grasp their introductions to programming.

All three of the teachers had different approaches to delivering the lesson, the teaching styles proved successful, and many of the class members were able to understand the tasks which were being showed to them.The lesson was made up of:

1.) An introduction to what will be taught and learnt. (Lesson Objectives)2.) A run through of the software3.) A simple introductory task sheet, which had basic commands.4.) Finally a challenge sheet, which was given to the more able children.

I found that the key to teaching programming to a young audience is that the teacher must put confidence into the pupil’, and ensure they have total faith in their own ability. Along with this make sure all pupils know what is required of them and state what they must do to accomplish the task.

Logo Available at: http://el.media.mit.edu/logo-foundation/

Logo or ‘Win Logo’ is increasingly being used within schools, both primary and secondary. This language in particular is good for giving young children an introduction to the world of computers and programming. Children that have some knowledge about programming are better suited to furthering their computing capabilities in future years of educational development.

Logo was originally conceived and written as a functional programming language which drove a mechanical turtle as an output device. Seymour Papert invented Logo in 1967 with the help of Wallace Feurzeig, Goldberg (1991), Massachusetts Institute of Technology (2012). Since then the use of ICT and computer science within schools has excelled beyond belief. Papert’s earlier work had shown that computers can also be manipulated in into producing creative outputs, which now is being utilized for students grown up in the digital age.

11 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

"Logo is the name for a philosophy of education and a continually evolving family of programming languages that aid in its realization."

- Logo created by Papert helped develop Computational Science which is now a colossal part of modern education.

-Abelson H, Logo Foundation (2012)

Logo has been a historical turning point for the way in which children have experienced and explored computers and their many capabilities; logo is used mainly in early-years education for mathematics. The Logo Foundation is still running and developing ways to improve child interaction with computers.

A turtle application is available in Python. (Just like Logo)

Basic commands:

[

>>> import turtle - importing the module>>> t = turtle.pen() - creates a canvas>>> t.forward(50) - turtle moves forward>>> t.backward(50) - turtle moves backwards>>> t.left(90) - turtle moves left>>> t.right(90) - turtle moves right>>> t.up() - turtle moves up>>> t.down() - turtle moves down>>> t.reset - erases the canvas and puts turtle in the starting position>>> t.clear - clears the screen and leaves the turtle where it is

]

Project

Try to create a square, and then move onto creating a more exotic shape. – try a star

ScratchAvailable at: http://www.scratch.mit.edu.

12 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Scratch is another popular programming tool which is used in schools today. It is a programming language developed at the MIT Media lab. It offers users a visually appealing environment, which allows novice programmers (your students) to learn programming without initially having to write syntactically correct code.Users can:

Create games Write interactive stories which also use animation

Scratch has the potential to develop an individual that is learning how to program, however much of its benefit lies with the inquisitiveness of the learner and their capacity to explore and plat with programming constructs. The software programs 2-D graphical objects, users write scripts (drag and drop command) and make them interact with one and other. The Scratch application allows users to import images and sounds, apart from creating their own media, to make media-rich projects.

Scratch is clearly a programming language for beginners as it has a minimal set of language blocks and command set with an easy to use application interface. The colour-coded commands are categorized by their functionality and are presented in panes on the same window. This way the users are always looking at the commands and hence it is highly probable that they can enhance their projects better by using additional commands and constructs. By not having distinct compile and edit phases, Scratch programming is easier for users as they can change their program while it is running and can test program fragments to see what they do. It is most definitely a great programming tool for young novice programmers.

Scratch programming also encourages sharing and learning across peers. The Scratch Website allows easy sharing of projects, that makes collaboration and receiving feedback simple. Scratch also supports the 21st century learning skills: information and communication skills, thinking and problem-solving skills, and interpersonal and self-directional. – Lodha and Somyalipi (2013)

13 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 2. Learning and Teaching how to Program

Your students who are learning to code may expect that you will ask them to write programs from scratch (no pun intended). But you should never do this, since this is not how professional programmers work. Programmers may have to create or maybe even amend a program with code that already exists. A company may require a programmer to integrate and augment two types of code together. That means building on existing code.

It is recommended to teach your pupils to program in a professional manner. So how do we get our students to behave like a professional programmer? There are several approaches I suggest to you.

Modification (Modding)Give your students some code and invite them to change the value of a variable, and to reflect on the consequences. This will help them to understand what the variable does and therefore means. For example perhaps your example creates a specific code string of sentences, allow your students to do the same but ensure they use different string values, so they can see the consequences.

Or for a graphical example allow your students to view code for a canvas you may have programmed and allow them to change the variables (maybe the speed or size of various objects). In doing a challenge like this they only need to change a small number of lines in the code you have given them.

ExtensionHere, students are invited to extend a given program. Take the ‘Hangman’ game on page33 for example. You may have given your students this code and told them to extend the game, maybe add words or change the theme of the game totally. (To something more appropriate for them)

If for example you wanted to give an example of the Pyprocessing module; you could invite them to create a program that includes text with animation. You could invite them to change the colour of the canvas and text. How you figure this out is up to you, but please remembers the code examples provided for you in this book are minimalist and are useful starting points for extension. Also some of the code examples are natural extensions of previous examples.

CollageCollage means “cutting and pasting” and in this context of programming it involves combining various elements of other peoples’ code to make our code work. While this is a legitimate programming practice, it is fraught with dangers for our students at this level. The more lines of code your students copy will increase their debugging efforts and therefore will lead to frustration. The best way to use collage is to copy and paste some standard functions, into the student code, such as how to change the size of an image within a canvas. Or if the program is text based, just collage small portions of the text.

14 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Reading CodeHere, in your teaching, you should provide your students with an “off-PC” activity, and maybe get

them into small groups. You will give them a paper-based activity which consists of some code and the

visualisation of this code, e.g. as a series of coloured shapes. You will invite them to read the code and

(through a discussion) explain how this code produced the realised visualisation. (Please note this

should be done with more able pupils) Again this is professional programming practice where software

engineers must read the code of their colleagues before they can contribute to the project.

Coding from ScratchMost professional programmers do not start from scratch, at least they are provided with a

“template” and some “libraries” which they can use, many are available via the Python documentation

online and many can be searched for via Google.

However, there are some occasions where we may ask our students to code from scratch. So how do

we guide them in doing this? One way is to start by writing comments (lines preceded by #’s) to

explain the stages in their program. These comments can be useful to build up the structure of a

program, especially its logic and flow. Once the comments are complete, the student can begin to

write code following each comment, so the final program emerges. Another useful approach is to

identify which functions are needed to get the whole program working, without focussing on coding

these functions in that initial stage. Several good example of this is shown throughout this resource

pack. Yet I advise caution in using this approach at KS3/4 level.

15 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 3a. Introduction to Software Development

Once your students have followed your material based on the topics presented in this learning resource, they will hopefully experience a creative and fun situation where they are asked to code some short programs with minimal guidance (based on how they have adapted to programming). In general, they will succeed with these short programs and hopefully they will have an intrinsic motivation to continue.

When they turn to the Projects they will experience a different situation since they will need to combine various coding techniques and also various concepts. As their code increases in length, so will their opportunity to make mistakes. The number of errors they will make (known as “bugs”) will increase. Yet we can turn this around into an educational experience. Making mistakes is how people sometimes learn.

This is exactly what happens within the software industry where programmers code, make mistakes and learn from them. So how can we support our students in this “growing-up” phase? Let’s have a look.

Iterative Development Iterative development acknowledges that a coder may not write a complete program that works immediately. The program may give errors and the coder will need to have one or more attempts at coding to correct these until the program finally works. The coder’s attempts of creating a program (perhaps 2 or more) are iterations, a series of trial-and-error experiences to getting the code to work.

Professional Iterative Software DevelopmentHere there are many models of software development but there are some emergent common themes, analysis, synthesis and evaluation, but which are often situated within the iterative context. In the analysis phase, the programmer finds out the requirements of the program and this leads to a program specification. In the synthesis stage, the code is written but this may also include paper sketches such as flow charts of pseudo-code. In the analysis phase, the results of the working code are evaluated. Perhaps there is need to refine, and so the synthesis stage is entered again. Or perhaps the goals of the project need to be changed, in which case the analysis stage is entered again.

DebuggingWhen your students start to program, they will experience bugs. To see these and to know how to fix these bugs is an important learning experience. However, fixing these bugs has to be fast; otherwise your students will disengage. By fixing bugs your students must also learn something about how to code, whether syntax or perhaps program logic. Remember students learn from mistakes. Your support as a teacher of Computing is crucial here, you cannot expect your students to ‘go online’ to fix their bugs; this is both inefficient and frustrating for your students. So you must really know the language you are teaching, and you must know any example code you give to your students inside out.

16 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 3b. Strategies for Debugging in Python

When we write programs, often they do not work; we say they contain a ‘bug’. There are two sorts of

bugs; those which do not allow the program to compile and those which cause the program not to

execute properly. Your novice programming students will encounter the first sort fairly often, since

they are learning the syntax of the language at the same time as using the language to create

something. We refer to these bugs as syntax errors, and they will be flagged up by Python’s IDLE when

your students try to run the program (F5 or ‘Run’ on the menu bar). If a program has syntax errors,

then it will not run. So these errors will need to be corrected first.

However not all bugs are syntax errors, indeed when a program contains no syntax errors and

compiles successfully, there is no guarantee that it will run as intended. This may be due to the

program containing logical errors, but also because your student has misunderstood the code. We

refer to these as perceptual errors.

Syntax ErrorsYour students will probably make some of these common errors.

Incorrect Code Error Correct Code Python Version

PRINT “hello world”

SyntaxError: invalid syntax print “hello world” 2.x

print "hello World"

SyntaxError: invalid syntax print("Hello World") 3.x

str( input("What is your guess? ")

SyntaxError: invalid syntax str(input("What is your guess? "))

3.x

23-48' SyntaxError: EOL while scanning string literal

23-48 2.x3.x

Python attempts to locate any syntax errors and highlights the error. When an error is pointed out Python gives the line number of the incorrect code, which is an absolute god send when debugging your program. This is especially true for missing semi-colons and brackets, as it is a strict language.

Python has its own integrated debugger. It is a module known as pdb (Python DeBugger).

17 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Please visit ‘Intro 4’ to view details on how to download and install Python.

Debugging ExampleLets create a simple program, in which you can set pdb to trace your code;

Now execute

As you trace your program you should only really need to go through it to check your lines of code. In order to go through code press ‘n’ and enter (on your keyboard)

More information on pdb is available directly at python.org -http://docs.python.org/2/library/pdb.html

Intro 3 adapted from Source: Price (2012)

18 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Intro 4. Introduction To The Python Language

This chapter will kick-start your work with Python. You will learn how to download, install and configure Python and Notepad++.

Downloading, Installing, Configuring and Running Python Python and its documentation are made available at the following: http://www.python.org/ it is freely available to download at the following link http://www.python.org/download it is a multiplatform language. If you are using Windows choose ’Windows’ download. This resource pack will be using screen prints from Python 3.3.0.

Once the appropriate selection has been made the download will begin, once downloaded open up the file. Follow the installation steps. The print screen below shows the location of Python on my computer, it is advised to save it onto your computer hard drive, and in a folder of its own. My copy is located in C:\Program Files(x86)\Python3. Python is just over 50 MB.

19 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

There are numerous text editors out there; however, I will explain the use and installation of two potential text editors; Python’s IDLE, and Notepad++.

Firstly Pythons IDLE (Integrated Development Environment); this text editor is designed specifically for Python. It is downloaded with the Python software package. It is written in Python and the Tkinter GUI toolkit. Tkinter will be explained later.

According to the included README file, its main features are:

Multi-window text editor with syntax highlighting, auto completion, smart indent and other. Python shell with syntax highlighting. Integrated debugger with stepping, persistent breakpoints, and call stack visibility.

It can be found in the Python’s sub-folders: C:\Program Files(x86)\Python3\lib\idlelib

Or a simple search can be done using the start menu. Once located a Python Shell will open, this is where written executable code is ‘run’. The shell enables small (single line(s)) snippets of code to be executed. To begin writing programs and exploring the language, click on ‘File’, and ‘New Window’.

ProjectWhy do you think Python and IDLE are named as they are? Why not try to find out...

20 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Secondly Notepad++; Notepad ++ is a popular text editor, it is specifically designed for Windows and used by many professionals. It is not designed for just Python programming; it can be coded using many different languages it is lightweight (5.5MB) and robust. If you are new to the world of programming, it is advised you stick to IDLE for Python.The latest version is 6.2.2. Below are details of how you can download and install Notepad++.

Notepad++ can be downloaded directly fromhttp://notepad-plus-plus.org/download/v6.2.2.html. Once the link [ ] is clicked your download will shortly begin.

Follow the installation steps on screen, Agree to the terms and conditions, choose your destination and root folder for the software, select all of your required components (as above) and create an easily accessible desktop shortcut. Below is a screen shot of Notepad++, it shows all of the introductory information. To begin programming, click on ‘File’ then ‘New’ here you have your new clean window.

This resource pack will focus mainly on Pythons IDLE. However if you opt to program with Notepad++ there is plenty of documentation out there.

21 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Let’s begin.Click and open IDLE. We’ll start with something simple. Traditionally the first program you write in a new language is called “Hello World” in python the first step is to open up a ‘New Window’ from the Python Shell and type:

Print (“Hello, World!”)

N.B. Take note of the Brackets (-) not all versions of Python use bracketed code – as you will later see.

Below are steps taken to create the program, to execute it press F5 once saved. If a file is not saved it will not load.

Congratulations you have completed your first piece of Python coding.

Project

Now you try to create a few strings of code. – remember to refer back to the examples.

22 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Official Python Cheat Sheet – for a real head start with the language

23 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Now some Python BasicsIt is best to learn some of the basics before we move onto the more attractive graphical outputs.

Once Python starts running in interpreter mode, using IDLE or a command shell, it produces a prompt, which waits for your input. For example, this is what I get when I start Python in a command shell on my version of Windows:

[Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48)

[MSC v.1600 32 bit (Intel)] on win32Type "copyright", "credits" or "license ()" for more information.]

The easiest way to get started is to run Python as an interpreter. In the interpreter you type the command and Python produces the answer. The example I present will replicate the functions on a calculator. To begin open up ‘IDLE’ Python Shell will work fine for this task as we are just executing single lined commands.

Arithmetic Operators: Comparison operators:

Plus (+): Addition less than (<)

Parentheses (()): Grouping greater than (>)

Asterisk (*): Multiplication equal to (==)

Forward Slash (/): Division not equal to (!= or <>)

Double asterisk (**): Exponentiation (x to the power of y)

24 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Try something else with the numbers, have a little play around. For example, to try and get a list of square numbers of 2; type:

The mistake above with the first command was placed purposefully, so you are able to see the strictness of the Python language. All syntax used must be correct before the interpreter is able to give an answer and when writing longer programs all indentation used must be correct. These are all issues that can be overcome with a lot of time and practice.

TECHNICAL STUFF:“In Python, a name refers to an object. A name is actually a label for a memory location in the computer that stores something—a value, a chunk of code, or any sort of thing Python understands. All these "things"—anything that's stored in a memory location—are called objects in Python. Therefore, Python programmers often say that when you enter a statement such as x = 5 in Python, you are binding a name (x) to an object (5). You can have multiple names for the same object.” –Maruch, (2006), Python for Dummies.

25 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Below is an Example of what assigning ‘Names’ to a value does. A name can vary in size and length. The example below is a sentence.Example: If you want to assign the sentence ‘Hello World, I am beginning my journey into Python Programming’ to ‘X’ you would type:[x= (‘Hello World, I am beginning my journey into Python Programming’)]When you type in ‘x’ to the interpreter the sentence will be displayed. Below is an example I created. Where: x = ‘Hello, my Name is Saagar’y= ‘Saagar is trying to help with your understanding of the Python Programming Language’

It is possible to alter/edit your ‘Names’ and the Values within them. You can overwrite them at

any time too. If you wanted to add something (for example to add my surname) to the name ‘x’

with the value of ‘Hello, my Name is Saagar’ you would type:

[>>> x= (“Hello, My Name is Saagar”)>>> y= (“Saagar is Trying to Help with Your Understanding of the Python Programming Language”)>>> j= (“ Jagatia”)>>> x+j + (“, “) +y

]

26 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

It is important to leave a space (‘ ’) before ‘ Jagatia’ so that when the code executes there is space in the between Saagar & Jagatia. This example is shown below in the interpreter.

Some Rules and Information

Naming RulesYou can use any names you want, as long as they follow these rules:

Names must start with either a letter or an underscore character (_ ). You can't use any of Python's reserved words or keywords.

These are words that have specific meanings to Python, such as if (which begins an if statement).

Names are case-sensitive. num is different from NUM and nUm. – As shown in the a screenprint above

By convention, most Python programmers use lowercase for names that stand for values. They use other rules for names that stand for functions and classes—you can find out more about these conventions in later chapters.

It's a Good Idea to use meaningful names. If you name everything with a single letter, for example, you may have trouble remembering what the name stands for later.

Python Data Types Numbers – data you would use to do math with. Class - are useful because they can combine both data and methods that operate on that data Modules – is a text file that can contain any kind of Python code Strings – are for text characters and for binary data. Sequences – are for lists of related data that you might want to port and merge. Dictionaries – are collections of data that associate a unique key with each value. Sets – are for doing set operations (finding the intersection, difference and so on) with

multiple values. Files – are for data that is or will be stored as a document on a computer.

27 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

ModulesA module is a text file that can contain any kind of Python code, but a module usually organizes tools that work in a particular way. Sometimes it also includes names that store particular values. You can make a module available to another program by importing it. Modules are the key to Python’s portability and power. Python itself is built up of modules.

To import a module:>>> import mathOnce the module is imported you can utilize the information within it.Example; to work out what pi is:

>>>math.pi3.141592653589793

[Image from: Python Basics: Doty. S, (2008)] - http://anh.cs.luc.edu/331/notes/PythonBasics.pdf

28 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Comparing StringsWhen you're working with numbers, it's usually obvious what the smallest and largest numbers are. But it's less clear what smallest and largest mean when you're talking about characters.

TECHNICAL STUFF:A character's ASCII or Unicode value (a number) determines the character's order. So it would also be correct to talk about one character coming "before" (smaller) or "after" (larger) another character in a numbered list of characters. The following list describes how Python orders (assigns sizes to) characters:

Letters at the beginning of the alphabet are smaller than letters at the end.A is smaller than Z.

Capital letters come before (are smaller than) lowercase letters.Y and Z are both smaller than a.

Digits are smaller than letters.5 is smaller than A.

Most punctuation marks come before digits or letters.! Is smaller than 5. The exceptions are curly braces ({}), the pipe character (|), and the tilde (~), which are larger than letters.

To determine which of two strings is larger, use the < and > operators.

The Three DsIf you're writing a program that's more than a few lines long, don't just sit down and start coding. You need to take three steps to make your program the best it can be. These are the three Ds: - Maruch (2006, P.65) Python for Dummies

Document: Making sure others can read your program

Design: Making sure your program is solving the right problem and is organized so that it's efficient and potentially reusable

Debug: Making sure your program doesn't have any mistakes in it and that it responds appropriately when given wrong input

29 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 1. Lets Dive Into The Code

Example 1: Numerical Input.pyI am going to take you through steps to code a simple calculation program. It is a program to calculate the area of a Rectangle or a Square.

So to begin, open up the Python Shell, open up a ‘New Window’. It is always best to leave some introductory information on the program when you begin creating like so;

The code for the program is copy and pasted below, once you have read and understood it, try to interpret it and change some of the code snippets. Maybe change the information completely and add new shapes, remember you must know the calculations before you attempt to code math.

Numerical_Input.py

30 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

31 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 2: GuessTheNumberBySaagarJagatia.py I am going to take you through steps to code a simple game. It is a number guessing game!

So just like before, open up the Python Shell, and open up a ‘New Window’. Leave some introductory information on the program when you begin creating like so;

GuessTheNumberBySaagarJagatia.py

32 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 3: HangmanBySaagarJagatia.py

I am going to take you through steps to code a simple game. It is a replication of the popular school game, Hangman.

So just like before, open up the Python Shell, and open up a ‘New Window’. Leave some introductory information on the program when you begin creating like so;

The code for the program is copy and pasted below, once you have read and understood it, try to interpret it and change some of the snippets around. Maybe change the information completely.

N.B. Remember Google is a powerful tool; it may be a good idea to befriend it! Much of the Python documentation can be summoned using the Google search engine.

33 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

HangmanBySaagarJagatia.py

34 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

35 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

36 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

This is all the code required to create the Hangman game. It is fully functional on Python 3.3.0 – The code can be found in the appendix section.

37 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Bear in mind Python is strict! So you must take care when coding, simple errors can create massive disruptions. Also take into account the indentation of the code and the use of special characters like: ( ) [ ] “ “ = #. The results of the program are presented below. Remember to execute (run) a program press ‘F5’ or using the navigation bar.

This is a screen print of the game in the Python Shell; you can see that the interpreter can pick up on mistakes with letters.

Your turn!

Project

Try to experiment with the language, try creating your own game, or a piece of interactive text. If you require more aid or wish to enhance your knowledge visit http://www.python.org/doc/. Here you will find many useful links to documentation.

38 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 2. Understanding the Python Library: ‘Import’ & Creating Modules

Using & importing Modules

As previously stated, Python is built up of modules. Dayley (2006) stated, these modules that make up the language are Python files. Modules can be created and altered to suit your program requirements, however this is only recommended for those who are comfortable with using it. Large applications or libraries that incorporate several modules are typically bundled into packages. Packages allow several modules to be bundled under a single name, Dayley (2006).

Modules can be loaded onto your Python program using the ‘import’ statement. When it is imported, the program can be capable of executing functions and strings etc. All of the objects within the imported module’s source file become available. More than one module can be imported in the same statement; although the Python Style Guide recommends not to-do this instead the programmer should write for example;

[import mathimport cmath]

To import a portion of a module, you must define ‘from’ (which is the parent module) and what you wish to ‘import’. Example;[from math import sin, cos]

When a module is introduced using the ‘*’ annotation it means all of the attributes from this module will be imported into the program. Example;

[from math import *]

This information was acquired using a study undertaken by Fangohr (2012, p. 69-71)

In Python 3.3, importing a module takes a per-module lock. This correctly serializes importation of a given module from multiple threads (preventing the exposure of incompletely initialized modules), while eliminating the aforementioned annoyances, Pitrou (2012).

Python has great documentation available online from http://python.org/ and it is possible to gain access to modules created by third parties via this link: http://pypi.python.org/pypi?:action=browse&c=533&show=all. However before you attempt to use one of them you should make sure are comfortable downloading them and using them. As the language is open source and anyone can post a module on the website, not all are as useful as the others.

39 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Creating ModulesA module is in principle nothing more than a Python file. (.py) this is an example of a module file which is saved in module1.py:

[def someusefulfunction (): passprint (“My name is “, __name__)]

Once it is executed (f5) or ‘Run’ the file shows up on the shell, once it does to print the file name ‘import module1’

Your turn!

Project

Now try and create a module of your own and import it.

40 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 3. Understanding a Created Library

The file shown in this lesson was altered by Dr. Colin Price of The University of Worcester. Dr. Price had been looking at a programming language called ‘Processing’, and his aim with was to give Python a graphical output a little like that of ‘Processing’.

Processing is not important right now but this pack will later be reviewing PyProcessing –which is Pythons adaptation of the language.

Graphical Outputs

41 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Project

Now try to create a basic library of your own, or type out the one above and extend it.

N.B. Do not forget to use Google as a research tool – it may prove to be a powerful developer’s tool.

42 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 4. Tkinter an Introductionhttp://docs.python.org/3.0/library/tkinter.html - Further research.

Most Tkinter programs work on Python 3.x, the examples used within this pack will be from using Python 3.3.0. Shipman (2013), stated that Tkinter is a GUI (graphical user interface) widget set for Python. Tkinter was programmed and coded by Fredrik Lundh in 1999. The Tkinter (Tk Interface) is the standard Python interface to the Tk GUI (Graphical User Interface) toolkit. Both Tk and Tkinter are available on most UNIX, Macintosh and Windows platforms. It is vital to remember Pythons sensitivity, remember that Python requires indentation, and is case sensitive.

For further information please Visit: http://www.pythonware.com/library/tkinter/introduction/whats-tkinter.htm or http://wiki.python.org/moin/TkInter

N.B. Please do not mix Tkinter up with Pyprocessing or Pyglet. Watch out for the capitalisation of some of the words within the code, and remember to save the file with the suffix ‘.py’

Grayson (2000) suggests that Tkinter and Python have the ability to deliver viable applications. Tkinter is ‘imported’ just like any other module. As shown on page 28. Tkinter comprises of a number of components. Tkinter includes a number of Python modules. The two most important modules are the Tkinter module itself, and a module called Tkconstants. The former automatically imports the latter, so to use Tkinter, all you need to do is to import one module: Which is:

[import Tkinter]OR[from Tkinter import ]

If it fails with "No module named _tkinter", your Python configuration needs to be modified to include this module (which is an extension module implemented in C). Do **not** edit Modules/Setup (it is out of date). You may have to install Tcl and Tk (when using RPM, install the -devel RPMs as well) and/or edit the setup.py script to point to the right locations where Tcl/Tk is installed. If you install Tcl/Tk in the default locations, simply rerunning "make" should build the _tkinter extension. – Tkinter (2013)

To check whether the module has been imported correctly you could type tkinter._test() into the Python prompt. A little window will show up (the test program)

43 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Here is a Complete ExampleBelow is an example of code which was executed. It is a source taken from Grayson (2000)

Code comments First, we import components from the Tkinter module. By using from module import Label,

mainloop we avoid having to reference the module to access attributes and methods contained in the module.

We create a Label containing two lines of text and use the Pack geometry manager to realize the widget.

Finally, we call the Tkinter mainloop to process events and keep the display activated. This example does not react to any application-specific events, but we still need a mainloop for it to be displayed; basic window management is automatic.

Features of TkinterTkinter adds OO (Object-Oriented) interfaces to TK; TK is the graphics library, Mertz (2000). According to Grayson (2000) they are easy to read and understand, especially those who program in C++ or Java. An important feature that TK gives to and Tkinter application is that, with a little care in selecting fonts and other architecture-dependent features.

One important feature that Tk gives to any Tkinter application is that, with a little care in selecting fonts and other architecture-dependent features, it will run on numerous flavours of UNIX, Win32 and Macintosh without modification. Naturally, there are some intrinsic differences between these architectures, but Tkinter does a fine job of providing an architecture independent graphics platform for applications.

It is the object-oriented features, however, that really distinguish Tkinter as an ideal platform for developing application frameworks. You will see many examples in this book where relatively little code will support powerful programs.

44 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 1: Helloworld.pyTo begin we will code a simple ‘Hello World’ program.

(This same code will be located in the appendix section of this resource pack (Tkinter Examples))

Save the code in a folder named ‘Tkinter’ (remember its location; mine is saved in the Python root folder.) It is best to keep all files in separate folders, maybe within sections for the modules it covers. For examples this section is for Tkinter, so it would be best to save all code in a folder called Tkinter.

The code above was sourced from, Lundh (1999)

Information on how to change the size of a window is shown below.

Project

Try to change the size and maybe the colour of the Tkinter applications’ window. (Research this, there are great tutorials are available on YouTube, and great documentation can be found via a Google search)

45 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 2: SimpleCalculator.pyEven though the code may not look simple, this is a simple yet very effective program, Lundh (1999)

46 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Tkinter in school: What can it bring to education?

Teachers and educators may feel that the Python language may not be ideal for their classes, it may not cater for their students needs. Tkinter, like PyProcessing and Pyglet allows users to experience Python using a graphical window. As a teacher it is advised that you take some time out to familiarise yourself with the basic Tkinter commands. The various Widgets, Fonts and Data Types are shown LATER!!??!?!?!?

As an educator, you may be able to use Tkinter in year 10 – 11 classes. Year 8-9 pupils should be taught the basics of programming using Tkinter and be given an introduction to Python (and maybe Pyprocessing).

All programming lessons should be well planned. Lessons that are not well planned may not go as smoothly as intended. The best thing to do would be to follow a plan:

1. Go through lesson objectives (2-5 minutes)2. Give an introduction to the topic (Python/ PyProcessing) (5-10 minutes)3. Set a task. (simple to begin with, then maybe a more advanced one for the pupils that can

cope) (10-15 minutes)4. Give your students some time getting used to the code and various Syntax. (15 minutes)

o Give them some assistance with the online documentation available.o Python - http://www.python.org/ o Pyprocessing - http://code.google.com/p/pyprocessing/

5. Round off the lesson with a few challenges, get the pupils into groups (and work on one machine) (10minutes)

6. Conclude – review peer work. (5 minutes)

N.B. Do note that bigger tasks may spread across two lessons.

47 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Tkinter Widgets TableWidget DescriptionButton A simple button, used to execute a command or other operation.Canvas Structured graphics. This widget can be used to draw graphs and plots, create

graphics editors, and to implement custom widgets.Checkbutton Represents a variable that can have two distinct values. Clicking the button

toggles between the values.Entry A text entry field.Frame A container widget. The frame can have a border and a background, and is

used to group other widgets when creating an application or dialog layout.Label Displays a text or an image.Listbox Displays a list of alternatives. The listbox can be configured to get radiobutton

or checklist behavior.Menu A menu pane. Used to implement pulldown and popup menus.Menubutton A menubutton. Used to implement pulldown menus.Message Display a text. Similar to the label widget, but can automatically wrap text to

a given width or aspect ratio.Radiobutton Represents one value of a variable that can have one of many values. Clicking

the button sets the variable to that value, and clears all other radiobuttons associated with the same variable.

Scale Allows you to set a numerical value by dragging a "slider".Scrollbar Standard scrollbars for use with canvas, entry, listbox, and text widgets.Text Formatted text display. Allows you to display and edit text with various styles

and attributes. Also supports embedded images and windows.Toplevel A container widget displayed as a separate, top-level window.

Font Style OptionsOption Type Descriptionfamily string Font family.size integer Font size in points. To give the size in pixels, use a negative

value.weight constant Font thickness. Use one of NORMAL or BOLD. Default

is NORMAL.slant constant Font slant. Use one of NORMAL or ITALIC. Default

is NORMAL.underline flag Font underlining. If 1 (true), the font is underlined. Default

is 0 (false).overstrike flag Font strikeout. If 1 (true), a line is drawn over text written

with this font. Default is 0 (false).

Source - http://www.pythonware.com/library/tkinter/introduction/x444-fonts.htm (2012)

48 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Tk Option Data Types

anchor Legal values are points of the compass: "n", "ne", "e", "se", "s", "sw", "w", "nw", and also "centre".

bitmap There are eight built-in, named bitmaps: 'error', 'gray25', 'gray50', 'hourglass', 'info', 'questhead', 'question', 'warning'. To specify an X bitmap filename, give the full path to the file, preceded with an @, as in "@/usr/contrib/bitmap/gumby.bit".

Boolean You can pass integers 0 or 1 or the strings "yes" or "no" .

callback This is any Python function that takes no arguments. For example:

def print_it():

print ("hi there")

fred["command"] = print_it

colour Colours can be given as the names of X colours in the rgb.txt file, or as strings representing RGB values in 4 bit: "#RGB", 8 bit: "#RRGGBB", 12 bit” "#RRRGGGBBB", or 16 bit "#RRRRGGGGBBBB" ranges, where R,G,B here represent any legal hex digit. See page 160 of Ousterhout’s book for details.

cursor The standard X cursor names from cursorfont.h can be used, without the XC_ prefix. For example to get a hand cursor (XC_hand2), use the string "hand2". You can also specify a bitmap and mask file of your own. See page 179 of Ousterhout’s book.

distance Screen distances can be specified in either pixels or absolute distances. Pixels are given as numbers and absolute distances as strings, with the trailing character denoting units: c for centimetres, i for inches, m for millimetres, p for printer’s points. For example, 3.5 inches is expressed as "3.5i".

font Tk uses a list font name format, such as {courier 10 bold}. Font sizes with positive numbers are measured in points; sizes with negative numbers are measured in pixels.

geometry This is a string of the form widthxheight, where width and height are measured in pixels for most widgets (in characters for widgets displaying text). For example: fred["geometry"] = "200x100".

49 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

justify Legal values are the strings: "left", "center", "right", and "fill".

region This is a string with four space-delimited elements, each of which is a legal distance (see above). For example: "2 3 4 5" and "3i 2i 4.5i 2i" and "3c 2c 4c 10.43c" are all legal regions.

relief Determines what the border style of a widget will be. Legal values are: "raised", "sunken", "flat", "groove", and "ridge".

scroll command This is almost always the set() method of some scrollbar widget, but can be any widget method that takes a single argument. Refer to the file Demo/tkinter/matt/canvas-with-scrollbars.py in the Python source distribution for an example.

wrap: Must be one of: "none", "char", or "word".

50 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 5. PyProcessing an IntroductionPyProcessing is another module which enhances the capabilities of Python, users are allowed to experience Python differently using a graphical output. This is a more friendly approach to teaching Python to a younger generation. The main thing for us here is that Pyprocessing runs on Windows!

Oudkerk (2008) suggests that Pyprocessing is an element of the programming language Processing to Python. It is best to develop code using a Python IDE (Integrated Development Environment).

Claudio (2010) has a very useful web-link which gives all information required for Pyprocessing. It is available at http://code.google.com/p/pyprocessing/wiki/README. The project mission was to integrate Processing’s friendly graphics into Python, which would be coded using Python code.

To run Pyprocessing, you must download all necessary files, and make sure they are all in the correct file directories. Pyprocessing currently works most stable on Python 2.x, although as the code is open source many are trying to overcome this barrier.

Python 3.3 does not support Pyprocessing, so to use this particular module we must download Python 2.4 – 2.7, I will be using version 2.6; these files can be located at: http://www.python.org/download/

Follow the same installation process as you did when installing Python 3.x.

The figure above shows the error message on Python 3.3.0 when trying to import ‘Pyprocessing’

51 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Once you have downloaded and installed Python 2.6, download and install Pyprocessing, which can be located at:http://code.google.com/p/pyprocessing/downloads/list. Choose the Windows option, and follow all of the installation steps once again.

Save the Pyprocessing files in the correct directories. For example my copy is saved in ‘C:\Python26\Lib\pyprocessing’ it could also be saved in: ‘C:\Python26\Lib\site-packages\pyprocessing’

52 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Now that this is done, try importing the PyProcessing module (in Python 2.6.), to see if the installation went smoothly.

We have successfully imported Pyprocessing!

N.B. If for some reason you get an error message, something will have gone wrong, if it cannot find the module, make sure it is saved in the root directory of Python.

However if it asks for ‘Pyglet’ like the image below skip this section for now, and come back to it later!

Please go to the ‘Pyglet Package’ section and install it. The Pyglet section starts on page 60

53 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Now let us execute some code to see how it works,

Below is an example of ‘Processing’ code and ‘Python’s interpretation of it.

Example 1: PyProcessing

// // Processing //size(200,200);rectMode(CENTER);rect(100,100,20,100);ellipse(100,70,60,60);ellipse(81,70,16,32); ellipse(119,70,16,32); line(90,150,80,160);line(110,150,120,160);

## pyprocessing equivalent#from pyprocessing import *size(200,200)rectMode(CENTER)rect(100,100,20,100)ellipse(100,70,60,60)ellipse(81,70,16,32) ellipse(119,70,16,32) line(90,150,80,160)line(110,150,120,160)run()

Source code above is available from: http://code.google.com/p/pyprocessing/

Copy and paste the Python code onto a ‘New Window’ of Python 2.6 IDLE. Save the code in a folder named ‘Pyprocessing work’ (remember its location; mine is saved in the Python root folder.) The code above was taken from the geniuses at: http://code.google.com/p/pyprocessing/

54 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 2: Helloworld.pyNow let’s go back a few steps, and create a ‘Hello World’ program.

This program is a simple text output of the words ‘Hello World’ once created you can play around and create new text outputs.

Shall we begin!

Type this text into a Python window, and execute it.

Size – sets the dimensions of the canvas that the text will be displayed on.

You can change the text font, alignment, and what the text reads.

Lets try this again and add some animation to the text.

55 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

56 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 3: Helloworldrot.py

57 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

The animation added within the code will enable the text to rotate.

The background colour of the canvas has been set to ‘Black’ and the text colour is ‘White’.

Looking closely at the codewe can see just how easy it is to read and decipher Python code.

Import – brings in a file.Size – dimension of the canvasTextFont/Align – simple.

Def = Definedef draw(): - this here tells us what we want the program to do.

The ‘Hello World’ text is the result of the programmed code.

PyProcessing Questions and ChallengesNow that you have been shown an example, create three different programs.

All of the programs you create should have different text, colours and rotation speeds.

Example:

1.) ‘Hello my name is ________’2.) ‘Pyprocessing is cool!’3.) ‘I am always learning’

Below are print screens of programs, to help give you an idea;

More advanced and exceptional pyprocessing features allow you to produce things like:

Many examples of Pyprocessing are available to download from: http://code.google.com/p/pyprocessing/downloads/list. Choose the ‘examples.zip’, once this is done, locate the download and put it into your Python program files folder. Mine are located in: C:\Python26\WORK.

ProjectHave a look at the source code (once you have downloaded ‘examples.zip); can you make adapt any of these files? Can you create a moving object? If you can, try it from scratch!58 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Pyprocessing in school: What can it bring to education?

Teachers and educators may feel that the basic Python language may not be at all engaging to their students. Pyprocessing allows pupils to experience a ‘fun’ graphical output to the basic text and numerical output of Python’s IDLE. Make sure you take time out yourself to familiarise yourself with the basic Pyprocessing commands.

As you have been shown (in the previous section), Pyprocessing will allow you to code and create graphical figures, shapes, sketches, image galleries and much more.

Pyprocessing Tutorial which is available at: http://code.google.com/p/pyprocessing/wiki/BasicTutorial. This takes you through the following.

The basics Hello World Geometric shapes Colours Line and border attributes Continuous applications Interactions Images Transforms

As teachers, you may be able to use Pyprocessing in year 8 – 10 classes. Year 7 pupils should be taught the basics of programming and be given an introduction to Python (and maybe Pyprocessing). Year 11 students on the other hand should only be approached if they have a desire/ passion to learn Python. (Many may want to focus on GCSE exams)

All lessons should be well structured and planned; especially a programming lesson. Lessons that are not well planned may not go as smoothly as intended. The best thing to do would be to follow a plan:

1.) Go through lesson objectives2.) Give an introduction to the topic (Python/ PyProcessing)3.) Set a task. (simple to begin with, then maybe a more advanced one for the pupils that can

cope)4.) Give your students some time getting used to the code and various Syntax.

a. Give them some assistance with the online documentation available.b. Python - http://www.python.org/ c. Pyprocessing - http://code.google.com/p/pyprocessing/

5.) Round off the lesson with a few challenges, get the pupils into groups (and work on one machine)

6.) Conclude – review peer work.

59 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Pyprocessing Variables All of the functions listed below are used to program Pyprocessing, can be found at: http://code.google.com/p/pyprocessing/wiki/QuickReference

This pack will not be going through all of them, however, you will have been given an introduction to coding using some of the functions below. It is advised that you take some time out and read the variables over the next several pages.

More advice on how to code using the various variables can be found at: http://www.processing.org/reference/

Structure

Processing PyProcessing Description

draw() draw() a function of your program that is called for drawing a frame

exit() exit() exits the application

loop() loop() makes draw() be called periodically

noLoop() noLoop() stops draw() from being called periodically

popStyle() popStyle() restores the prior style settings

pushStyle() pushStyle() saves the current style settings

redraw() redraw

N/A run() your program should call this to map the drawing window and start the event loop

setup() setup() a function of your program that is called automatically once by run()

size() size() used to establish the dimensions of the drawing window

Image

Processing PyProcessing Description

createImage() createImage() creates an empty PImage object

filter() screenFilter() applies a filter to the display window

image() image() displays a PImage object

imageMode() imageMode() changes the semantics of the arguments of image()

loadImage() loadImage() loads an image into a PImage object

loadPixels() loadPixels() loads the current canvas data into screen pixels

updatePixels() updatePixels() displays the data from screen pixels

60 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

get() get() returns a copy, a part of a pixel of the screen

set() setScreen() sets a position of the screen with data

Environment

Processing PyProcessing Description

cursor() cursor() Changes or shows the mouse cursor.

delay() delay() stops the program from running for a specified time

day() day() returns the value of the current day

focused N/A

frameCount frame.count Number of frames drawn so far.

frameRate() frameRate() Sets the number of times draw() will be called per second.

frameRate frame.rate Estimated number of frames per second for the recent past.

height height Height of the drawing window in pixels.

hour() hour() returns the value of the current hour

link() link() links to a webpage

millis() millis() returns the amount of milliseconds since starting a program

minute() minute() returns the value of the current minute

month() month() returns the value of the current month

noCursor() noCursor() Inhibits the display of the mouse cursor.

online N/A

screen screen holds the width, height and pixels of the display.

second() second() returns the value of the current second

year() year() returns the value of the current year

width width width of the drawing window in pixels

61 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

ColourSetting

Processing PyProcessing Description

background() background() clears the drawing with a background colour

colorMode() colorMode() sets up the colour system (RGB or HSB) for specifying colours

fill() fill() specifies the colour for drawing filled shapes

noFill() noFill() makes shapes be rendered non-filled

noStroke() noStroke() makes shapes be rendered without their borders

stroke() stroke() specifies the colour for drawing lines and shape borders

noTint() noTint() reverts to displaying images with their original values

tint() tint() sets the fill value for displaying images

Creating & Reading

Processing PyProcessing Description

alpha() alpha() returns the alpha (transparency) component of a colour

blendColor() blendColor() returns the blending between two colours

blue() blue() returns the blue component of a colour

brightness() brightness() returns the brightness of a colour

color() color() builds a colour value from its components

green() green() returns the green component of a colour

hue() hue() returns the hue of a colour

lerpColor() lerpColor() returns a linear interpolation between two colours

red() red() returns the red component of a colour

saturation() saturation() returns the saturation of a colour

62 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Shape2D Primitives

Processing PyProcessing Description

arc() arc() draws an arc of ellipse

ellipse() ellipse() draws an ellipse

line() line() draws a line segment

point() point() draws a point

quad() quad() draws a quadrilateral

rect() rect() draws a rectangle

triangle() triangle() draws a triangle

3D Primitives

Processing PyProcessing Description

box() box() draws a parallelepiped

sphere() sphere() draws a sphere

sphereDetail() sphereDetail() sets the level of detail used to render spheres

Curves

Processing PyProcessing Description

bezier() bezier() Draws a cubic Bézier curve

bezierDetail() bezierDetail() Changes sampling rate of Bézier curves

bezierPoint() bezierPoint() Evaluates one coordinate of a point on a Bézier curve

bezierTangent() bezierTangent() Evaluates one coordinate of a tangent of a Bézier curve

curve() curve() Draws a cubic Catmull-Rom curve

curveDetail() curveDetail() Changes the sampling rate of Catmull-Rom curves

curvePoint() curvePoint() Evaluates one coordinate of a point of a Catmull-Rom curve

curveTangent() curveTangent() Evaluates one coordinate of a tangent of a Catmull-Rom curve

curveTightness() curveTightness() Changes the tightness of Catmull-Rom curves

63 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Attributes

Processing PyProcessing Description

noSmooth() noSmooth() renders in non-antialiased mode

rectMode() rectMode() changes the semantics of the arguments of rect()

ellipseMode() ellipseMode() changes the semantics of the arguments of ellipse()

smooth() smooth() renders in antialiased mode

strokeCap() N/A

strokeJoin() N/A

strokeWeight() strokeWeight() changes the thickness of lines

Vertex

Processing PyProcessing Description

bezierVertex() bezierVertex() adds a Bézier arc to the shape

curveVertex() curveVertex() adds a Catmull-Rom arc to the shape

endShape() endVertex() finishes the shape

texture() texture() sets a texture to be applied when drawing

textureMode() textureMode() changes how texture coordinates are evalued

vertex() vertex() adds a vertex to the shape

InputMouse

Processing PyProcessing Description

mouseButton mouse.button tells what mouse button is pressed.

mouseClicked() mouseClicked() called when a mouse button is pressed and released

mouseDragged() mouseDragged() called when a mouse is dragged with a pressed button

mouseMoved() mouseMoved() called when a mouse is moved with buttons pressed

mousePressed() mousePressed() called when a mouse button is pressed

mousePressed mouse.pressed tells whether a mouse button is pressed

64 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

mouseReleased() mouseReleased() called when a mouse button is released

mouseX mouse.x current x position of the mouse

mouseY mouse.y current y position of the mouse

pmouseX pmouse.x previous x position of the mouse

pmouseY pmouse.y previous y position of the mouse

Keyboard

Processing PyProcessing Description

key key.char holds the char value of the most recently pressed key

keyCode key.code holds an int code of the most recently pressed key

keyPressed() keyPressed() called when a key is pressed

keyPressed key.pressed() tells whether a key is pressed

keyReleased() keyReleased() called when a key is released

keyTyped() keyTyped() called when a non-code key is pressed

Text

Processing PyProcessing Description

textAlign() textAlign() changes the text alignment attributes

createFont() createFont() creates a font

textFont() textFont() sets the received font as current font

htmlText() htmlText() draws the html text at the given position

text() text() draws the text at the given position

textSize() textSize() changes the current font size

textWidth() textWidth() returns the width of the received string rendered in the current font

textAscent() textAscent() returns the ascent of the current font

textDescent() textDescent() returns the descent of the current font

Math

Processing PyProcessing Description

65 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

PVector PVector a class used to describe two or three dimensional vectors

noise() noise() returns the perlin noise value at specified coordinates

binary() binary() converts a value to a string in binary notation

hex() hex() converts a value to a string in hexadecimal notation

unbinary() unbinary() converts a string in binary notation to its decimal value

unhex() unhex() converts a string in hexadecimal notation to its decimal value

byte() byte() converts a char or int to its byte representation

constrain() constrain() returns the constrained value according to the received parameters

dist() dist() returns the Euclidean distance between two points

map() map() re-maps a number from one range to another

mag() mag() returns the magnitude of a vector

lerp() lerp() returns a interpolation between two numbers

sq() sq() returns the square of a value

Transform

Processing PyProcessing Description

applyMatrix() applyMatrix() multiplies the current transformation matrix by a given matrix

getMatrix() getMatrix() returns the MODELVIEW matrix

popMatrix() popMatrix()discards the current (top) matrix from the

transformation matrix stack

printMatrix() printMatrix() prints the current transformation matrix

pushMatrix() pushMatrix() pushes a copy of the current matrix onto the transformation matrix stack

resetMatrix() resetMatrix() sets an identity matrix as the the current transformation matrix

rotate() rotate() rotates around a given axis

rotateX() rotateX() rotates around the x axis

66 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

rotateY() rotateY() rotates around the y axis

rotateZ() rotateZ() rotates around the z axis

shearX() shearX() shears a shape around the x axis

shearY() shearY() shears a shape around the y axis

scale() scale() performs a scale transformation

translate() translate() performs a translation transformation

Lights, CameraLights

Processing PyProcessing Description

ambientLight() ambientLight() adds an ambient light source

directionalLight() directionalLight adds a directional light source

lightFalloff() lightFalloff() sets attenuation factors for next light sources

lightSpecular() lightSpecular() sets specular coefficients for next light sources

lights() lights() turns on lighting and default light sources

noLights() noLights() turns off lighting

normal() normal() sets the normal vector for subsequent vertices

pointLight() pointLight() adds a point light source

spotLight() spotLight() adds a spot light source

67 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Camera

Processing PyProcessing Description

beginCamera() N/A

camera() camera() sets the camera transformation

endCamera() N/A

ortho() ortho() sets an orthogonal projection

perspective() perspective() sets a perspective projection

printCamera() printCamera() prints the current transformation matrix

getProjection() getProjection() returns the PROJECTION matrix

printProjection() printProjection() prints the current projection matrix

Coordinates

Processing PyProcessing Description

modelX() modelX() returns the screen x coordinate of given object coordinates

modelY() modelY() returns the screen y coordinate of given object coordinates

modelZ() modelZ() returns the screen z coordinate of given object coordinates

N/A modelXYZ() returns the screen coordinates of given object coordinates

screenX() screenX() returns the screen x coordinate of given object coordinates

screenY() screenY() returns the screen y coordinate of given object coordinates

screenZ() screenY() returns the screen z coordinate of given object coordinates

N/A screenXYZ() returns the screen coordinates of given object coordinates

Material Properties

Processing PyProcessing Description

ambient() ambient() sets the ambient properties of the next vertices

emissive() emissive() sets the emissive properties of the next vertices

shininess() shininess() sets the shininess property of the next vertices

specular() specular() sets the specular properties of the next vertices

68 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Pyglet Package – Extension taskIf you are asked, by IDLE to have Pyglet installed onto your machine when importing ‘Pyprocessing’ go to, www.pyglet.org/download.html. From here you will be given a list of options. We will be choosing ‘pyglet – 1.1.4.msi: Windows Installer, includes Avbin-5’ this version is for Windows.

Click on run.

The installation process chooses the root destination of the files (most likely within the Python folder). In order to use Pyprocessing you may need to install Pyglet.

69 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Now that Pyglet has been successfully installed there should be no error messages when attempting to import the files.

Now that this is done, and that it imports correctly, go back to the ‘Pyglet’ website. To find some examples of what Pyglet is used for, click on the link shown below, open or save it (I would save it within my Python 2.6 folder) N.B. It is in the Source Distributions section.

Locate the folder (unzip it, so you have access to the files) open up the folder (mine is located in the root folder of Python 2.6 (or equivalent for Pyprocessing) and have a look at the ‘Pyglet installed folder, and its ‘examples’, (for example my folder is saved in: C:\Python26\pyglet-1.1.4.).

70 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

If you require more assistance with using Pyglet, documentation is also available within the installation. Inside the Pyglet-1.1.4 folder click on ‘doc’ then ‘html’ – for a web based view, or ‘pdf’ for a text based view. Mine is located in: F:\Python26\pyglet-1.1.4\doc\pdf.

Some of the examples of Pyglet are fascinating, just to think Python (and its subsidiary modules) enable us to create such brilliant programs, both simple and advances

Simple text Image Games Multi-media HTML

Examples of which can be found in the ‘pyglet-1.1.4’ folder. Below are some program examples. (source on page 69)

Project

Have a look at the source code of some of the programs above; can you make/adapt any of these files?

71 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Lesson 5: Python Challenges QuestionsThis section provides you with some Python challenges, whereby you can attempt to code various programs. Remember to check sources online for help, it is not cheating!

As you code your program, it is advised that you keep documentation of the development stages; this is for your benefit, as you can then learn from your own code.

N.B. Answers can be found after this section – please try to answer the questions before looking at the answers.

1.) Code a star using logo in Python (8 sided star)

2.) When programming a game of ping pong, what are the main classes (components) needed?

3.) Code a small simple shape (using Python 2.x – via the graphics module)

4.) Create a program whereby a user can interact with it. Maybe a moving image, or a static program where a simple ’click of the mouse’ can change the position or colour of an image?

o Refer back to lesson 3 – “Understanding a created Library”o Example code in answers section – source Price (2012)o Note for this question you may need to use Python 2.x

5.) Create a simple calculation program – convert Celsius to Fahrenheit.a. You will need to know how to work out the difference between both.

6.) Go back to the PyProcessing section and try to create another ‘odd’ looking character like the one in ‘Example 1’ however alter the size, and maybe colour of the objects.

72 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Python Challenges Answers1.) import turtle

t = turtle.Pen()

for x in range(1,9): t.forward(100) t.left(225)

2.) Classes: Ball, Paddle, Wall

3.) [

from graphics import *

def main():

win = GraphWin("My Circle", 100, 100)

c = Circle(Point(50,50), 10)

c.draw(win)

win.getMouse() # pause for click in window

win.close()

main()

]

4.) 1. [

from graphics import *

def main()

win = GraphWin("My Circle",500,500)

c = Circle(Point(200,200),100)

c.setFill('red')

c.setOutline('green')

c.setWidth(10)

c.draw(win)

r = Rectangle(Point(300,300),Point(400,400))

r.setFill('orange')

r.setOutline('cyan')

r.setWidth(10)

73 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

r.draw(win)

# Now let's try to output some text

text = Text(Point(250,250), 'Hello');

text.setSize(20);

text.draw(win)

# now infinite loop to move a shape

while 1 == 1:

# wait until the mouse is clicked. Why can't we drag?

mouseLocn = win.checkMouse()

while mouseLocn == None :

mouseLocn = win.checkMouse()

circlLocn = c.getCenter()

c.move(mouseLocn.getX()-circlLocn.getX(),0)

# convert a number to a string

# display two elements into a string, the x and y components of a mouse position

text.setText(str(mouseLocn.getX()) + '\n' + str(mouseLocn.getY()) )

# waits for mouse click to close window

win.getMouse()

win.close()

main()

]

74 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

2. [

# CBP 24-10-12

# First explorations into Python (ctd)

# Includes new library CBPLib1 using Zwelle's to replicate Processing.

# Experimenting with movement (a la Processing)

# Wait function ivoking Python's sleep() to step an objec throug space.

# Mmm not happy about this.

from CBPLib1 import *

from graphics import *

def main():

# Let's draw a circle

fill(255,255,0)

stroke(0,255,255)

strokeWeight(4)

myCircle(100,100,50)

# Now let's move the circle to the right

x = 100

while x < 350:

x = x + 20

wait(1)

myCircle(10+x,10+x,10)

# check for a mouse click to interrupt (still Zelle)

# really must fix this

if win.checkMouse() != None:

win.close()

75 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

# Not happy about this. Could be instatiating multiple objects and

# relying on the garbage collector to help us out. Bad language :(

# must try in the next period to get the .move() fn working.

# waits for mouse click to close window.

# use Zelle for the mo. This may need some thought

win.getMouse()

win.close()

main()

]

5.) Celsius to Fahrenheit

[def C2F(): Celsius = input ('Enter degrees in Celsius: '); Fahrenheit = (9.0/5.0) * Celsius +32; print Celsius, 'Celsius =', Fahrenheit, 'Fahrenheit'; ]

7.) Sleep program [ from time import sleep

print("We'll start off by sleeping 5 seconds")# make the program sleep for 5 secondssleep(5)

print("Ok, time to wake up!")

wait_time = int(input("How much longer would you like to sleep? "))

while wait_time > 0: print("Ok, we'll sleep for " + str(wait_time) + " more seconds...") sleep(wait_time) wait_time = int( input( "How much longer would you like to sleep? "))

print( "We're done!" )]

76 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Appendix

Debugging1.[

# epdb1.py -- experiment with the Python debugger, pdba = "aaa"b = "bbb"c = "ccc"final = a + b + cprint final]

2. Insert – import pdb

3. insert (where you would like your tracing to begin) - pdb.set_trace()

4. your program now looks like;

[

# epdb1.py -- experiment with the Python debugger, pdbimport pdba = "aaa"pdb.set_trace()b = "bbb"c = "ccc"final = a + b + cprint final]

Python Basics - Maths[ >>> for n in range (1, 10): print (n**2)]

Python - Example 1: Numerical Input.py [print()print( "Welcome to the Area calculation program" )print( "---------------------------------------" )print()

# Print out the menu:print( "Please select a shape:" )print( "1 Rectangle" )

77 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

print( "2 Circle" )print()

# The input function both prompts the user for input and fetches it...shape = int( input( "> " ) )

# Calculate the area...if shape == 1: height = int( input("Please enter the height: ") ) width = int( input("Please enter the width: ") ) area = height*width print( "The area is", area )else: radius = int( input("Please enter the radius: ") ) area = 3.14*(radius**2) print( "The area is", area )

input( '\n\nPress Enter to exit...' )]

Example 2: GuessTheNumberBySaagarJagatia.py [

import random

num = random.randint(1, 100)

while True:

print('Guess a number between 1 and 100')

guess = input()

i = int(guess)

if i == num:

print('You guessed right')

break

elif i < num:

print('Try higher')

elif i > num:

print('Try lower')

]

78 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 3: HangmanBySaagarJagatia.py [import randommistakes = int(0)print("The Hangman Game Guess The Word!")print("But Be Quick You Only Have 7 Mistakes!!")

print("The Words Are Based On Python Programming")potentional_words = ["print", "import", "python", "rossum", "idle", "shell"] #all the words that the computer can chose fromword = random.choice(potentional_words)letters = list(word)print("") #making it look nice

if word == "print": blankedword = str("________") print("The Word Has 5 Letters In It. Guess What It Is")elif word == "import": blankedword = str("________") print("The Word Has 6 Letters In It. Guess What It Is")elif word == "python": blankedword = str("________") print("The Word Has 6 Letters In It. Guess What It Is") #tells the user how many letter they need to guesselif word == "rossum": blankedword = str("________") print("The Word Has 6 Letters In It. Guess What It Is")elif word == "idle": blankedword = str("________") print("The Word Has 4 Letters In It. Guess What It Is")elif word == "shell": blankedword = str("________") print("The Word Has 5 Letters In It. Guess What It Is")

print("")

guessedletters = list(blankedword)

while(mistakes != 7): #if they make 5 mistakes then the loop stops

if guessedletters == letters: print("") print("Welldone You Have Guessed The Word! You WIN!") #if they guess all the letters then they win input("") break

guess = str(input("What is your guess? "))

if word == "print": if guess == "p": guessedletters[0] = "p" print(str(guessedletters)) elif guess == letters[1]:

79 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

guessedletters[1] = "r" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "i" print(str(guessedletters)) elif guess == letters[3]: guessedletters[3] = "n" print(str(guessedletters)) elif guess == letters[4]: guessedletters[4] = "t" print(str(guessedletters)) print("Welldone You Have Guessed The Word! You WIN!") #if they guess the words then they win

input ("") break

else: mistakes = mistakes + 1 print("") print("WRONG! Adding 1 To Your Mistakes...") #if they make a mistake then it adds one to their mistakes print("You've Made", mistakes, "Mistakes") print("")

if word == "import": if guess == "i": guessedletters[0] = "i" print(str(guessedletters)) elif guess == letters[1]: guessedletters[1] = "m" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "p" print(str(guessedletters)) elif guess == letters[3]: guessedletters[3] = "o" print(str(guessedletters)) elif guess == letters[4]: guessedletters[4] = "r" print(str(guessedletters)) elif guess == letters[5]: guessedletters[5] = "t" print(str(guessedletters)) elif guess == word: print("Welldone You Have Guessed The Word! You WIN!")

input("") break

else: mistakes = mistakes + 1 print("")

80 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

print("WRONG! Adding 1 To Your Mistakes...") print("You've Made", mistakes, "Mistakes") print("")

if word == "python": if guess == "p": guessedletters[0] = "p" print(str(guessedletters)) elif guess == letters[1]: guessedletters[1] = "y" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "t" print(str(guessedletters)) elif guess == letters[3]: guessedletters[3] = "h" print(str(guessedletters)) elif guess == letters[4]: guessedletters[4] = "o" print(str(guessedletters)) elif guess == letters[5]: guessedletters[5] = "n" print(str(guessedletters)) elif guess == word: print("Welldone You Have Guessed The Word! You WIN!")

input("") break

else: mistakes = mistakes + 1 print("") print("WRONG! Adding 1 To Your Mistakes...") print("You've Made", mistakes, "Mistakes") print("")

if word == "rossum":

if guess == letters[0]: guessedletters[0] = "r" print(str(guessedletters)) elif guess == letters[1]: guessedletters[1] = "o" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "s" guessedletters[3] = "s" print(str(guessedletters)) #if they guess a letter that is in the word then it adds it splice the letter(s) into the guessed letters elif guess == letters[4]: guessedletters[4] = "u" print(str(guessedletters)) elif guess == letters[5]: guessedletters[5] = "m" print(str(guessedletters))

81 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

print("Welldone You Have Guessed The word! You WIN!") #if they guess the word then they win

input("") break

else: mistakes = mistakes + 1 print("") print("WRONG! Adding 1 To Your Mistakes...") #if they make a mistake then it adds one to their mistakes print("You've Made", mistakes, "Mistakes") print("")

if word == "idle": if guess == "i": guessedletters[0] = "i" print(str(guessedletters)) elif guess == letters[1]: guessedletters[1] = "d" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "l" print(str(guessedletters)) elif guess == letters[3]: guessedletters[3] = "e" print(str(guessedletters)) elif guess == word: print("Welldone You Have Guessed The Word! You WIN!")

input("") break else: mistakes = mistakes + 1 print("") print("WRONG! Adding 1 To Your Mistakes...") print("You've Made", mistakes, "Mistakes") print("")

if word == "shell": if guess == "s": guessedletters[0] = "s" print(str(guessedletters)) elif guess == letters[1]: guessedletters[1] = "h" print(str(guessedletters)) elif guess == letters[2]: guessedletters[2] = "e" print(str(guessedletters)) elif guess == letters[3]: guessedletters[3] = "l" guessedletters[4] = "l" print(str(guessedletters)) elif guess == word: print("Welldone You Have Guessed The Word! You WIN!")

82 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

input("") break else: mistakes = mistakes + 1 print("") print("WRONG! Adding 1 To Your Mistakes...") print("You've Made", mistakes, "Mistakes") print("")

if mistakes == 7:

print("You've Made Too Many Mistakes The", word, "Was Not Guessed, Better Luck Next Time") #if they have made 7 mistakes it tell them what the word was input("")]

Tkinter - Example 1:HelloWorld.py[

from tkinter import *

root = Tk()

w = Label(root, text="Hello, world!")

w.pack()

root.mainloop()

]

83 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 2: SimpleCalculator.py[

from tkinter import *

def frame(root, side):

w = Frame(root)

w.pack(side=side, expand=YES, fill=BOTH)

return w

def button(root, side, text, command=None):

w = Button(root, text=text, command=command)

w.pack(side=side, expand=YES, fill=BOTH)

return w

class Calculator(Frame):

def __init__(self):

Frame.__init__(self)

self.pack(expand=YES, fill=BOTH)

self.master.title('Simple Calculator')

self.master.iconname("calc1")

display = StringVar()

Entry(self, relief=SUNKEN,

textvariable=display).pack(side=TOP, expand=YES,

fill=BOTH)

for key in ("123", "456", "789", "-0."):

keyF = frame(self, TOP)

for char in key:

button(keyF, LEFT, char,

lambda w=display, s=' %s '%char: w.set(w.get()+s))

opsF = frame(self, TOP)

for char in "+-*/=":

if char == '=':

btn = button(opsF, LEFT, char)

btn.bind('<ButtonRelease-1>',

84 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

lambda e, s=self, w=display: s.calc(w), '+')

else:

btn = button(opsF, LEFT, char,

lambda w=display, c=char: w.set(w.get()+' '+c+' '))

clearF = frame(self, BOTTOM)

button(clearF, LEFT, 'Clr', lambda w=display: w.set(''))

def calc(self, display):

try:

display.set(eval(display.get()))

except ValueError:

display.set("ERROR")

if __name__ == '__main__':

Calculator().mainloop()

]

PyProcessing - Example 1:PyProcessing.py [## pyprocessing equivalent#from pyprocessing importsize (200, 200)rectMode(CENTER)rect(100,100,20,100)ellipse(100,70,60,60)ellipse(81,70,16,32) ellipse(119,70,16,32) line(90,150,80,160)line(110,150,120,160)run()]

85 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Example 2:HelloWorld.py [

from pyprocessing import *

size(300,300,caption="Hello")

textFont(createFont("Times", 36, bold=True, italic=True))

textAlign(CENTER)

text("Hello world", width/2, height/2)

run()

]

Example 3: HelloWorldRot.py

[

from pyprocessing import *

size(300,300)

textFont(createFont("Times New Roman", 36))

textAlign(CENTER,CENTER)

ang = 0

def draw():

global ang

background(0,0,0)

fill (255)

translate (width/2, height/2)

rotateZ (ang)

ang += 0.01

text("Hello world", 0, 0)

run()

]

86 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Something fun for class

1 player pong[

from tkinter import *

import random

import time

class Ball:

def __init__(self, canvas, paddle, color):

self.canvas = canvas

self.paddle = paddle

self.id = canvas.create_oval(10, 10, 25, 25, fill=color)

self.canvas.move(self.id, 245, 100)

starts = [-3, -2, -1, 1, 2, 3]

random.shuffle(starts)

self.x = starts[0]

self.y = -3

self.canvas_width = self.canvas.winfo_width()

self.canvas_height = self.canvas.winfo_height()

self.hit_bottom = False

def hit_paddle(self, pos):

paddle_pos = self.canvas.coords(self.paddle.id)

if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:

if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:

return True

return False

def draw(self):

self.canvas.move(self.id, self.x, self.y)

87 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

pos = self.canvas.coords(self.id)

if pos[1] <= 0:

self.y = 3

if self.hit_paddle(pos) == True:

self.y = -3

if pos[3] >= self.canvas_height:

self.hit_bottom = True

if pos[0] <= 0:

self.x = 3

if pos[2] >= self.canvas_width:

self.x = -3

class Paddle:

def __init__(self, canvas, color):

self.canvas = canvas

self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)

self.canvas.move(self.id, 200, 300)

self.x = 0

self.canvas_width = self.canvas.winfo_width()

self.started = False

self.canvas.bind_all('<KeyPress-Left>', self.turn_left)

self.canvas.bind_all('<KeyPress-Right>', self.turn_right)

self.canvas.bind_all('<Button-1>', self.start_game)

def draw(self):

self.canvas.move(self.id, self.x, 0)

pos = self.canvas.coords(self.id)

if pos[0] <= 0:

self.x = 0

elif pos[2] >= self.canvas_width:

88 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

self.x = 0

def turn_left(self, evt):

self.x = -2

def turn_right(self, evt):

self.x = 2

def start_game(self, evt):

self.started = True

tk = Tk()

tk.title("Game")

tk.resizable(0, 0)

tk.wm_attributes("-topmost", 1)

canvas = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)

canvas.pack()

tk.update()

paddle = Paddle(canvas, 'black')

ball = Ball(canvas, paddle, 'red')

while 1:

if ball.hit_bottom == False and paddle.started == True:

ball.draw()

paddle.draw()

tk.update_idletasks()

tk.update()

time.sleep(0.01)

89 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

] Source: Briggs (2012)

ReferencesAbelson. H, (2012) Logo Foundation: What is Logo? [Online] Available from: http://el.media.mit.edu/logo-foundation/index.html, [Accessed on: 16/12/2012]

Briggs. J, (2012) Python for Kids: A playful introduction. San Francisco. No Starch Press.

Claudio (2010) PyProcessing. [Online] Available from: http://code.google.com/p/pyprocessing/wiki/README. [Accessed on: 15/01/2013]

Dayley. B, (2006) Understanding Python: Python Objects, Modules, Classes and Functions, In: Python Phrasebook: Essential Code and Commands. UK. Sams

Doty. S, (2008) Python Basics. [Online] Available from: http://anh.cs.luc.edu/331/notes/PythonBasics.pdf. [Accessed on: 15/01/2013]

Downey. A, (2012) Think Python: How to Think Like a Computer Scientist. Massachusetts, Green Tea Press.

Fangohr. H, (2012) Introduction to Python for Computational Science and Engineering: A Beginners Guide. University of Southampton [Online]. Available at: http://www.southampton.ac.uk/~fangohr/training/python/pdfs/Python-for-Computational-Science-and-Engineering.pdf. [Accessed on: 22/11/2012]

Feurzeig. W, Papert. S, Lawler. B, (2011) Programming-Languages as a Conceptual Framework for Teaching Mathematics. Interactive Learning Environments. 19 (5) 487-501.

GNU. (2007) GUN Lesser General Public License. [Online] Available from: http://www.gnu.org/licenses/lgpl.txt. [Accessed on: 23/02/2013]

Goldberg. M, (1991) Portrait of Seymour Papert. Educational Leadership. 48 (7) 68-70.

Google Project Housing. (2012) A Processing Like Environment for Doing Graphics with Python. [Online] Available from: http://code.google.com/p/pyprocessing/. [Accessed on: 23/01/2013]

Grayson. J (2000) Python and Tkinter Programming. Greenwich Manning Publications.

Lodha. S, Somyalipi. S, (2013) Why Computer Science Matters: Introducing Computer Science using Scratch and Touch Develop. Computer and Information Science Education.

Lungdh. F, (1999) An Introduction to Tkinter. [Online] Available from: http://www.pythonware.com/library/tkinter/introduction/index.htm. [Accessed on: 21/01/2013]

Maruch. A, Maruch. S, (2006) Python for Dummies, UK, John Wiley & Sons, pp. 36-65

Massachusetts Institute of Technology (2012), Seymour Papert. [Online] Available from: http://web.media.mit.edu/~papert/. [Accessed on: 16/12/2012]

90 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3

Mertz. D, (2000) Charming Python: TK Programming in Python. [Online] Available from: http://www.ibm.com/developerworks/library/l-tkprg/. [Accessed on: 18/01/2013]

Oudkerk. R, (2008) Addition of the Multi-prcessing package to the Standard Library. [Online] Available from: http://pyprocessing.berlios.de/. [Accessed on: 15/01/2013]

Pitrou. A, (2012). A Finger-Grained Import Lock. [Online] Available from: http://docs.python.org/3/whatsnew/3.3.html [Accessed on: 21/11/2012]

Price. C (2012) Creative Computing: Learning to Code in Processing for KS3.COMP3007. Dissertation topic. 1st October. University of Worcester.

PyProcessing. (2012) PyProcessing: A Processing-Like environment for doing graphics with Python. [Online] Available from: http://code.google.com/p/pyprocessing/. [Accessed on:22/11/2012]

Rossum. G, (2012), Python Tutorial, [Online] Available from: http://docs.python.org. [Accessed on: 29/10/2012]

Rossum. G, (2012) Python Library Reference Manual, [Online] Available from: http://docs.python.org. [Accessed on: 29/10/2012]

Rossum. G, (2012) Python Library Reference: Release 2.5 [Online] Available from: http://www-mdp.eng.cam.ac.uk/web/CD/engapps/programming/python/lib.pdf. [Accessed on: 21/11/2012]

Shipman. J, (2013) Tkinter 8.5 Reference: a GUI for Python. [Online] Available from: http://infohost.nmt.edu/tcc/help/pubs/tkinter.pdf. [Accessed on: 26/02/2013]

Tkinter. (2013) Tkinter [Online] Available from: http://wiki.python.org/moin/TkInter. [Accessed on: 25/02/2013]

91 | P a g e C a n d i d a t e : 1 0 0 0 3 3 1 3