2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
The last case shows that a string has to be a syntactically legal number, otherwise you’ll get one of
those pesky runtime errors.
The type converter float can turn an integer, a float, or a syntactically legal string into a float.
The type converter str turns its argument into a string:
2.8. Order of operations
When more than one operator appears in an expression, the order of evaluation depends on the rules
of precedence. Python follows the same precedence rules for its mathematical operators that
mathematics does. The acronym PEMDAS is a useful way to remember the order of operations:
1.  Parentheses have the highest precedence and can be used to force an expression to evaluate in
the order you want. Since expressions in parentheses are evaluated first, 
2 * (3-1) is 4, and
(1+1)**(5-2) is 8. You can also use parentheses to make an expression easier to read, as in
(minute * 100) / 60, even though it doesn’t change the result.
2.  Exponentiation has the next highest precedence, so 
2**1+1 is 3 and not 4, and 
3*1**3 is 3 and
not 27.
3.  Multiplication and both Division operators have the same precedence, which is higher than
Addition and Subtraction, which also have the same precedence. So 
2*3-1 yields 5 rather than
4, and 
5-2*2 is 1, not 6.
4.  Operators with the 
same
precedence are evaluated from left-to-right. In algebra we say they
are 
left-associative
. So in the expression 
6-3+2, the subtraction happens first, yielding 3. We
then add 2 to get the result 5. If the operations had been evaluated from right to left, the result
would have been 
6-(3+2), which is 1. (The acronym PEDMAS could mislead you to thinking that
3
>>> int(3.0)
3
>>> int(-3.999            # Note that the result is closer to zero
-3
>>> int(minutes/60)
10
>>> int("2345"            # parse a string to produce an int
2345
>>> int(17                # even works if arg is already an int
17
>>> int("23 bottles")
Traceback (most recent call last):
File "<interactive input>", line 1in <module>
ValueError: invalid literal for int() with base 10'23 bottles'
>>> float(17)
17.0
>>> float("123.45")
123.45
>>> str(17)
'17'
>>> str(123.45)
'123.45'
Pdf password online - C# PDF Password Library: add, remove, edit PDF file password in C#.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
break a pdf password; create password protected pdf reader
Pdf password online - VB.NET PDF Password Library: add, remove, edit PDF file password in vb.net, ASP.NET, MVC, WinForms, WPF
Help to Improve the Security of Your PDF Document by Setting Password
pdf password online; creating password protected pdf
2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
division has higher precedence than multiplication, and addition is done ahead of subtraction -
don’t be misled. Subtraction and addition are at the same precedence, and the left-to-right rule
applies.)
Due to some historical quirk, an exception to the left-to-right left-associative rule is the
exponentiation operator **, so a useful hint is to always use parentheses to force exactly
the order you want when exponentiation is involved:
The immediate mode command prompt of Python is great for exploring and experimenting with
expressions like this.
2.9. Operations on strings
In general, you cannot perform mathematical operations on strings, even if the strings look like
numbers. The following are illegal (assuming that 
message has type string):
Interestingly, the 
+ operator does work with strings, but for strings, the 
+ operator represents
concatenation, not addition. Concatenation means joining the two operands by linking them end-to-
end. For example:
The output of this program is 
banana nut bread. The space before the word 
nut is part of the string,
and is necessary to produce the space between the concatenated strings.
The 
* operator also works on strings; it performs repetition. For example, 
'Fun'*3 is 
'FunFunFun'. One
of the operands has to be a string; the other has to be an integer.
On one hand, this interpretation of 
+ and 
* makes sense by analogy with addition and multiplication.
Just as 
4*3 is equivalent to 
4+4+4, we expect 
"Fun"*3 to be the same as 
"Fun"+"Fun"+"Fun", and it is. On
the other hand, there is a significant way in which string concatenation and repetition are different
from integer addition and multiplication. Can you think of a property that addition and multiplication
have that string concatenation and repetition do not?
2.10. Input
There is a built-in function in Python for getting input from the user:
A sample run of this script in PyScripter would pop up a dialog window like this:
>>> 2 ** 3 ** 2     # the right-most ** operator gets done first!
512
>>> (2 ** 3** 2   # Use parentheses to force the order you want!
64
message-1   "Hello"/123   message*"Hello"   "15"+2
1
2
3
fruit = "banana"
baked_good = " nut bread"
print(fruit + baked_good)
1
= input("Please enter your name: ")
Online Remove password from protected PDF file
Online Remove Password from Protected PDF file. Download Free Trial. Remove password from protected PDF file. Find your password-protected PDF and upload it.
convert password protected pdf to excel online; pdf protected mode
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
change password on pdf document; pdf password unlock
2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
The user of the program can enter the name and click OK, and when this happens the text that has
been entered is returned from the input function, and in this case assigned to the variable n.
Even if you asked the user to enter their age, you would get back a string like 
"17". It would be your
job, as the programmer, to convert that string into a int or a float, using the int or float converter
functions we saw earlier.
2.11. Composition
So far, we have looked at the elements of a program — variables, expressions, statements, and
function calls — in isolation, without talking about how to combine them.
One of the most useful features of programming languages is their ability to take small building
blocks and compose them into larger chunks.
For example, we know how to get the user to enter some input, we know how to convert the string we
get into a float, we know how to write a complex expression, and we know how to print values. Let’s
put these together in a small four-step program that asks the user to input a value for the radius of a
circle, and then computes the area of the circle from the formula
Firstly, we’ll do the four steps one at a time:
Now let’s compose the first two lines into a single line of code, and compose the second two lines
into another line of code.
If we really wanted to be tricky, we could write it all in one statement:
Such compact code may not be most understandable for humans, but it does illustrate how we can
1
2
3
4
response = input("What is your radius? ")
= float(response)
area = 3.14159 * r**2
print("The area is ", area)
1
2
= floatinput("What is your radius? ") )
print("The area is "3.14159 * r**2)
1
print("The area is "3.14159*float(input("What is your radius?"))**2)
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
open password protected pdf; convert password protected pdf files to word online
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
document protection. Users are able to set a password to PDF online directly in ASPX webpage. C#.NET: Edit PDF Permission in ASP.NET.
reader save pdf with password; break pdf password online
2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
compose bigger chunks from our building blocks.
If you’re ever in doubt about whether to compose code or fragment it into smaller steps, try to make
it as simple as you can for the human to follow. My choice would be the first case above, with four
separate steps.
2.12. Glossary
assignment statement
A statement that assigns a value to a name (variable). To the left of the assignment operator, 
=, is
a name. To the right of the assignment token is an expression which is evaluated by the Python
interpreter and then assigned to the name. The difference between the left and right hand sides
of the assignment statement is often confusing to new programmers. In the following
assignment:
n plays a very different role on each side of the 
=. On the right it is a 
value
and makes up part of
the 
expression
which will be evaluated by the Python interpreter before assigning it to the name
on the left.
assignment token
= is Python’s assignment token, which should not be confused with the mathematical comparison
operator using the same symbol.
comment
Information in a program that is meant for other programmers (or anyone reading the source
code) and has no effect on the execution of the program.
composition
The ability to combine simple expressions and statements into compound statements and
expressions in order to represent complex computations concisely.
concatenate
To join two strings end-to-end.
data type
A set of values. The type of a value determines how it can be used in expressions. So far, the
types you have seen are integers (
int), floating-point numbers (
float), and strings (
str).
evaluate
To simplify an expression by performing the operations in order to yield a single value.
expression
A combination of variables, operators, and values that represents a single result value.
float
A Python data type which stores 
floating-point
numbers. Floating-point numbers are stored
internally in two parts: a 
base
and an 
exponent
. When printed in the standard format, they look
like decimal numbers. Beware of rounding errors when you use 
floats, and remember that they
are only approximate values.
= n + 1
C# HTML5 PDF Viewer SDK to create PDF document from other file
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
pdf open password; convert protected pdf to word document
VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
protected pdf; password protected pdf
2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
int
A Python data type that holds positive and negative whole numbers.
integer division
An operation that divides one integer by another and yields an integer. Integer division yields
only the whole number of times that the numerator is divisible by the denominator and discards
any remainder.
keyword
A reserved word that is used by the compiler to parse program; you cannot use keywords like 
if,
def, and 
while as variable names.
operand
One of the values on which an operator operates.
operator
A special symbol that represents a simple computation like addition, multiplication, or string
concatenation.
rules of precedence
The set of rules governing the order in which expressions involving multiple operators and
operands are evaluated.
state snapshot
A graphical representation of a set of variables and the values to which they refer, taken at a
particular instant during the program’s execution.
statement
An instruction that the Python interpreter can execute. So far we have only seen the assignment
statement, but we will soon meet the 
import statement and the 
for statement.
str
A Python data type that holds a string of characters.
value
A number or string (or other things to be named later) that can be stored in a variable or
computed in an expression.
variable
A name that refers to a value.
variable name
A name given to a variable. Variable names in Python consist of a sequence of letters (a..z, A..Z,
and _) and digits (0..9) that begins with a letter. In best programming practice, variable names
should be chosen so that they describe their use in the program, making the program 
self
documenting
.
2.13. Exercises
1.  Take the sentence: 
All work and no play makes Jack a dull boy.
Store each word in a separate
variable, then print out the sentence on one line using 
print.
2.  Add parenthesis to the expression 
6 * 1 - 2 to change its value from 4 to -6.
VB.NET PDF - Create PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF PDF; Merge PDF Files; Split PDF Document; Remove Password from PDF; Change PDF
convert password protected pdf to normal pdf online; convert password protected pdf to word
VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer. Explanation about transparency. VB.NET HTML5 PDF Viewer: Annotate PDF Online. This
password pdf; adding a password to a pdf using reader
2. Variables, expressions and statements — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/variables_expressions_statements.html[1/4/2012 9:36:56 PM]
index
next |
previous  |
How to Think Like a Computer Scientist: Learning with Python 3 »
3.  Place a comment before a line of code that previously worked, and record what happens when
you rerun the program.
4.  Start the Python interpreter and enter 
bruce + 4 at the prompt. This will give you an error:
Assign a value to 
bruce so that 
bruce + 4 evaluates to 
10.
5.  The formula for computing the final amount if one is earning compound interest is given on
Wikipedia as
Write a Python program that assigns the principal amount of R10000 to variable p, assign to n
the value 12, and assign to r the interest rate of 8%. Then have the program prompt the user for
the number of months t that the money will be compounded for. Calculate and print the final
amount after t months.
© 
Copyright 2011, Peter Wentworth, Jeffrey Elkner, Allen B. Downey and Chris Meyers. Created using 
Sphinx 1.0.7.
NameError: name 'bruce' is not defined
3. Hello, little turtles! — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html[1/4/2012 9:37:01 PM]
index
next |
previous  |
How to Think Like a Computer Scientist: Learning with Python 3 »
3. Hello, little turtles!
There are many 
modules
in Python that provide very powerful features that we can use in our own
programs. Some of these can send email, or fetch web pages. The one we’ll look at in this chapter
allows us to create turtles and get them to draw shapes and patterns.
The turtles are fun, but the real purpose of the chapter is to teach ourselves a little more Python, and
to develop our theme of 
computational thinking
, or 
thinking like a computer scientist
. Most of the
Python covered here will be explored in more depth later.
3.1. Our first turtle program
Let’s write a couple of lines of Python program to create a new turtle and start drawing a rectangle.
(We’ll call the variable that refers to our first turtle alex, but you can choose another name if you
follow the naming rules from the previous chapter).
When we run this program, a new window pops up:
Here are a couple of things you’ll need to understand about this program.
The first line tells Python to load a module named 
turtle. That module brings us two new types that
we can use: the 
Turtle type, and the 
Screen type. The dot notation 
turtle.Turtle means 
“The Turtle
type that is defined within the turtle module”
. (Remember that Python is case sensitive, so the module
name, with a lowercase t, is different from the type Turtle.)
1
2
3
4
5
6
7
8
9
import turtle             # allows us to use turtles
wn = turtle.Screen()      # creates a playground for turtles
alex = turtle.Turtle()    # create a turtle, assign to alex
alex.forward(50         # tell alex to move forward by 50 units
alex.left(90            # tell alex to turn by 90 degrees
alex.forward(30         # complete the second side of a rectangle
wn.mainloop()             # Wait for user to close window
3. Hello, little turtles! — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html[1/4/2012 9:37:01 PM]
We then create and open what it calls a screen (we would perfer to call it a window), which we assign
to variable wn. Every window contains a canvas, which is the area inside the window on which we can
draw.
In line 3 we create a turtle. The variable alex is made to refer to this turtle. These first three lines set
us up, ready for doing some useful things.
In lines 5-7, we instruct the object alex to move, and to turn. We do this by invoking, or activating,
alex’s methods — these are the instructions that all turtles know how to respond to.
The last line plays a part too: the wn variable refers to the window shown above. When we invoke its
mainloop method, it enters a state where it waits for events (like keypresses, or mouse movement and
clicks). The program will terminate when the user closes the window.
An object can have various methods — things it can do — and it can also have attributes —
(sometimes called 
properties
). For example, each turtle has a 
color
attribute. The method invocation
alex.color(“red”) will make alex red, and drawing will be red too. (Note the word color is spelled the
American way!)
The colour of the turtle, the width of its pen, the position of the turtle within the window, which way it
is facing, and so on are all part of its current state. Similarly, the window object has a background
colour, and some text in the title bar, and a size and position on the screen. These are all part of the
state of the window object.
Quite a number of methods exist that allow us to modify the turtle and the window objects. We’ll just
show a couple. In this program we’ve only commented those lines that are different from the previous
example (and we’ve used a different variable name for this turtle):
When we run this program, this new window pops up, and will remain on the screen until we close it.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import turtle
wn = turtle.Screen()
wn.bgcolor("lightgreen")      # set the window background colour
wn.title("Hello, Tess!")      # set the window title
tess = turtle.Turtle()
tess.color("blue"           # tell tess to change her color
tess.pensize(3              # tell tess to set her pen width
tess.forward(50)
tess.left(120)
tess.forward(50)
wn.mainloop()
3. Hello, little turtles! — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html[1/4/2012 9:37:01 PM]
Extend this program ...
1.  Modify this program so that before it creates the window, it prompts the user to enter the desired
background colour. It should store the user’s responses in a variable, and modify the colour of the
window according to the user’s wishes. (Hint: you can find a list of permitted colour names at
http://www.tcl.tk/man/tcl8.4/TkCmd/colors.htm. It includes some quite unusual ones, like “peach
puff” and “HotPink”.)
2.  Do similar changes to allow the user, at runtime, to set tess’ colour.
3.  Do the same for the width of tess’ pen. 
Hint:
your dialog with the user will return a string, but tess’
pensize method expects its argument to be an int. So you’ll need to convert the string to an int before
you pass it to 
pensize.
3.2. Instances — a herd of turtles
Just like we can have many different integers in a program, we can have many turtles. Each of them is
called an instance. Each instance has its own attributes and methods — so alex might draw with a
thin black pen and be at some position, while tess might be going in her own direction with a fat pink
pen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import turtle
wn = turtle.Screen()         # Set up the window and its attributes
wn.bgcolor("lightgreen")
wn.title("Tess & Alex")
tess = turtle.Turtle()       # create tess and set some attributes
tess.color("hotpink")
tess.pensize(5)
alex = turtle.Turtle()       # create alex
tess.forward(80)             # Make tess draw equilateral triangle
tess.left(120)
tess.forward(80)
tess.left(120)
tess.forward(80)
tess.left(120              # complete the triangle
tess.right(180             # turn tess around
tess.forward(80)             # and move her away from the origin
alex.forward(50            # make alex draw a square
3. Hello, little turtles! — How to Think Like a Computer Scientist: Learning with Python 3
http://openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html[1/4/2012 9:37:01 PM]
Here is what happens when alex completes his rectangle, and tess completes her triangle:
Here are some 
How to think like a computer scientist
observations:
There are 360 degrees in a full circle. If you add up all the turns that a turtle makes, 
no matter
what steps occurred between the turns
, you can easily figure out if they add up to some
multiple of 360. This should convince you that alex is facing in exactly the same direction as he
was when he was first created. (Geometry conventions have 0 degrees facing East, and that is
the case here too!)
We could have left out the last turn for alex, but that would not have been as satisfying. If
you’re asked to draw a closed shape like a square or a rectangle, it is a good idea to complete
all the turns and to leave the turtle back where it started, facing the same direction as it started
in. This makes reasoning about the program and composing chunks of code into bigger
programs easier for us humans!
We did the same with tess: she drew her triangle, and turned through a full 360 degress. Then
we turned her around and moved her aside. Even the blank line 18 is a hint about how the
programmer’s 
mental chunking
is working: in big terms, tess’ movements were chunked as
“draw the triangle” (lines 12-17) and then “move away from the origin” (lines 19 and 20).
One of the key uses for comments is to record your mental chunking, and big ideas. They’re not
always explicit in the code.
And, uh-huh, two turtles may not be enough for a herd, but you get the idea!
3.3. The for loop
When we drew the square, it was quite tedious. We had to move then turn, move then turn, etc. etc.
23
24
25
26
27
28
29
30
31
alex.left(90)
alex.forward(50)
alex.left(90)
alex.forward(50)
alex.left(90)
alex.forward(50)
alex.left(90)
wn.mainloop()
Documents you may be interested
Documents you may be interested