0 ratings0% found this document useful (0 votes) 108 views39 pagesCh. 1-6 Heatcote Python Programming
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
Chapter 1
Data types, operators and I-O
Objectives
* Run commands in interactive mode
* Use string, numeric and Boolean data types and operators
* Learn the rules and guidelines for naming variables
* Use input and output statements:
Programming in Python
Python is a popular, easy-to-learn programming language. A Python program is simply
a series of instructions written according to the rules or syntax of the language, usually
designed to perform some task or come up with a solution to a problem. You write the
instructions, and then the computer translates these instructions into binary machine
cods which the computer can execute, It will do this using a translator program,
Whiah could be either a compiler or an interpreter. Python uses elements of both an
interpreter and a compiler.
Python comes with an integrated development environment called IDLE which
enables you to enter your program, save it, edit it, translate it to machine cade and run
It once it is free of syntax errors. If you have written a statement wrongly, that will be
reported by the interpreter as a syntax error, and you ean correct it and try again.
Programming in interactive mode
Python has two modes of entering and running programs. In interactive mode, you
can type instructions and Python will respond immediately. This is very useful for trying
out statements that you are not sure about, and is a good place to start. However, you
cannot save a program that you have written in interactive mode. This has to be done
in script mode, described in the next chapter.LEARNING TO PROGRAM IN PYTHON
‘To begin an interactive session, from the Start menu choose Python 3.x /IDLE. You
will see a screen similar to the one below:
eg 3
File_fot_Shell_Bebug Options Window Help Hee
nen t AETS263e11, Dec 23 2016, S7:iB:10) [SC wad
tel)) on winsz
i Neopyright", “credics" or "license()" for moze information.
Python IDLE (interactive winciow)
In this window, which is called the Python Shell window. you can type commands at
the prompt, >>>,
>>> ("Hello Worle")
The Python interpreter responds to your command and you will see Hello World
appear on the next line, followed by a new line with the prompt.
Data types
String data type
In the above command, "Hello World" is a data type known as a string. A string
is simply one or more characters enclosed in quote marks, and it doesn't matter
whether you use single or double quotes. If your string contains speech or a quotation,
you can use whichever type of quote mark you did not use to enclose the whole string:
Do> print ("He said tHello!'*)
He said ‘We
The symbol + is used to concatenate, or join together, two or more strings.
>>> "John" +" " + "RiadeLI®
"John Riddel1"
Note that numbers enclosed in quotes, or input as strings, behave as strings,
not numbers.
Se Py
Numeric data types and Operators
‘A number can be either integer (a whole number) or floating point, (a number with a
decimal point) referred to in Python as int and float respectively,The standard arithmetic operators used by Python are +, -, * (multiply), /
for exponentiation (e.g. 8 = 2° or 2 ** 3), The normal rules of precedence hold, and you
can use parentheses to force the order of calculation. Two other useful operators are
% and //. % (mod in some programming languages) returns the remainder when one
integer is divided by another, and // (div in some languages) performs integer division,
Giscarding any remainder without rounding, So 19 % 5 = 4 and 19// 5 =3.
Note that the result of dividing two numbers, whether they are integer or floating point,
always results in a floating point answer.
pop 445*2
13
>>>
16
>>>
64
>e>
3.0
>e>
3.25
DATA TYPES, OPERATORS AND |-O
>o> 4,93+7.82
12.3
>>o1m//6
2
>>> 1786
Rounding a result
Python printed the result of 4.53 + 7.82 as 12.350000000000001.
Because computers work in binary and not decimal, this sort of rounding error often
‘occurs when working with floating point numbers (Le. numbers with a decimal point).
To print an answer to a given number of decimal places, use the round () function.
>>> result
>>> roundedResult =
>>> roundedResult
4.53 + 7.82LEARNING TO PROGRAM IN PYTHON
Relational and logical operators
A Boolean data type can be either True or False. Operators fall into two categories
‘relational operators such as >, == (equal) and != (not equal), and logical operators and,
or, not,
The following tatsle shows all the relational and logical operators.
Operation name Operator
Less than <
Greater than’ >
Less than or equal <=
Greater than or equal 3=
Equal
Not equal
Logical and
Logical or or
Logical not not
Table 1.1: Relational and logical operators
>>> 18
True
>>> 18
False
de> (5 > 2) 7>6
True
>>> (6 <8) © (7 < 5)
True {
63
6/3
Note that extra spaces in a statement are ignored, but are often used to aid legibility i
Naming objects
Strings, integers and floating point numbers are all objects in Python. Very often
we need to name objects so that we can refer to them later. The names are called
identifiers or variable names.Names are assigned to objects using assignment statements,
A.valid name, or identifier, can contain only letters, numbers and the underscore
character, and cannot start with a number. An assignment statement has the variable
ame on the left-hand side of an = sign, and the value to be assigned on the right-
hand side.
>>> length = 4
po> width = 3
>>> area = length * width
>>> perimeter = 2 * (length + width)
12
>>> perimeter
>> cA
Area = 12
+ area)
Guidelines for naming variables
Using meaningful variable names will help you to create programs which are easy to
follow, contain fewer errors and are easier for you or someone else to amend at a later
date, Here are a few tips:
* Use the standard naming conventions or traditions for Python. For example,
variable names should begin with a lowercase latter. If you define @ constant, such
as PI or VAT, use all uppercase letters for the name. That way you will know not
to change their value in a program.
* Use meaningful, descriptive names; length, width, area rather than x, y, z.
* Don’t make the names too long, and use "camel caps" to separate parts of a
name. For example, passMark, maxMark, averageMark,
+ Note that variable names are case-sensitive, so AverageMark is a different
variable name from averageMark
DATA TYPES, OPERATORS AND |-OLEARNING TO PROGRAM IN PYTHON
Augmented assignment Operators
These operators provide a quick way of writing assignment statements.
Equivalent to
score = score + 1
score = score - losses,
score = score * 2
i score = score / total
% score %= 7 score = score % 7
Ws score //=7 score = score // 7
The print statement
You have already seen the print statement, which is used to display text and data on
the screen.
Using a comma as a separator
You can use @ comma to separate strings or variables:
>>> length
>>> print (” ength is", length, “metres")
‘The length is 15 metres
Using a comma has the advantage that you do not have to worry about the variable
type. You cen mix integers, floating point numbers and strings in the print statement.
However, you cannot control the spacing. One space character is automatically
inserted between the output arguments of a print statement.
>>> cost = 15
>> ("The cost Is &", cost)
The cost is £ 15
Note: in some Python IDES, the £ sign is not recognised and will cause the program
to crash.Using + as a separator
Instead of using @ comma, you can use a + sign to concatenate strings in the output.
However, you cannot join a string to an integer or real number, so you first have to
convert any numbers to strings.
>>> cost
>>> print (
45
is £" + cost)
To convert @ number to a string, you use the str () function. This is discussed in
more detail in the next chapter. (See Converting between strings and numbers.)
‘You need to re-enter the statement as:
>>> print ("The o
The cost is £15
st is £" + str(cost))
Escape sequences
Escape sequences allow you to put special characters such as a newline or tab into
your strings,
Inserting a new line
\n skips to a new line
>>> s "\nHlello")
Hello
>>> print ("\n\nG
Goodbye
Inserting a tab character
Assume length = 4, width = 3andarea = 12. \¢t inserts a tab character
ped princ("\t\tColumnl" + "\E\tCoLumn2™ + "\t\tcoluma3")
Column column2 Colunn3
>>> (\e\t", length, "\e\c", width, "\r\r", area)
4 3 12
Note: Another method of formatting output is given in Chapter 10.
DATA TYPES, OPERATORS AND I-OLEARNING TO PROGRAM IN PYTHON
Printing two outputs on the same line
To avoid printing on a new line, add end
80 for example:
to the end of the print statement,
pend =" ")
ine") will output
This should all print on the same line
Note: You cannot show this in Python's Interactive mode, but you will sometimes
need the end parameter when you start writing programs. Whatever you out
‘between the quote marks, in this case a space, will be printed.
Writing a multi-line statement
‘The last question demonstrates that you can split a statement over several lines, so
long as you don't split it inside the quote marks.
IF you do need to spit a line within quote marks, type a backslash (\) at the end of the
first ine, press Enter and continue writing on the next line,
he quot:
This is a long line of text split in the middle of the quote
Outside quote marks, additional spaces between variables or operators are ignored,
Triple-quoted strings
Enclosing a string in triple quotes (either single or double quotes) allows you to retain
the formatting of the string, for exarnple if it extends over several lines. Try the following
‘example in IDLE:Joha Smith
Elm Street
Andover
The input statement
The input statement is used to accept input from the user, and assign the input to
variable on the left-hand side of an assignment statement. It can be used with or
without a prompt to tell the user what to do. (The prompt can be provided using @ print
statement in the line above, Both these techniques are shown below.)
>>> firstName = ("Please enter your first name: ")
Please enter your first name: Martha
>>> print ("Please enter your surnam:
Please enter your surname
>>> surname = input ()
Harris
>>> print ("full name is", firstName, surname)
Full name is Martha Harris
Note that the input () statement is always followed by parentheses even if there is
no prompt. In this case, you will not see any text as @ prompt for input ~ Python will
just wait until something is typed.
Mixing strings and variables in an input statement
‘You can use the + sign to include a variable in an input statement.
>>> phoneNumber = input (firstName +", " + "please enter \
your phone number: ")
Martha, please enter your phone number
You must remember to convert any numbers to strings:
>rqe3
>>> answer3 = (Enter the answer to question “+ str(a) +
my
Enter the answer to question 3: (Waits for user to enter data)
DATA TYPES, OPERATORS AND |-OLEARNING TO PROGRAM IN PYTHON
10
Exercises
1
no
2
(@) Write statements to prompt a user to input their favourite food and favourite
colour, and display this information in the format “My favourite food is x0 and my
favourite colour is yyy", using + symbols to concatenate the separate strings.
(©) Display the same information using the comma separator instead of + symbols.
(a) Write statements to ask the user to enter their name and telephone number and
then print this information on two separate lines, with a blank line in between.
(b) Print the name and telephone number on the same line, separated by a tab
character.
Write statements to:
{a) perform the integer division of 40 by 11
{b) find the remainder when 40 is divided by 11
{c) calculate 2'°
(d) test whether “three” is greater than “two”
{@) test whether “abo" is less than than “ABC”
{f test whether (1<=4 and 7<='
(g) find the result of the Boolean condition equivalent to: “Fred” not. equal to "fred"
is TrueCecleie: 4
Strings and numbers
Objectives
* write and execute programs in scriot mode
* learn some useful string methods and functions
© convert string input to numerical values and vice versa
© identify and correct syntax errors
Script mode
In the last chapter we used interactive mode, which allows you to test out
different Python statements and gives instant feedback. However, if you want to
save @ program so that you can load and run it later, you need to use script mode.
Alternatively, you can use one of the many interactive development enviranments.
(IDEs) that are available to create, edit, save and run Python programs. In this book the
screenshots show programs entered and executed in Python IDLE.
‘You can open an Editor window in Python's IDLE (integrated develooment
environment) from the interactive Shell window. Select File, New File from the menu
bar, and a new window will open. In this window, type @ one-line program:
© Before you can run the program, you must save it, so select File, Save from the
menu bar and save it with the name hello world.py in a suitable folder
© Then select Run, Run Module from the menu or use the shortcut key F5
© The interactive window will appear with the result:LEARNING TO PROGRAM IN PYTHON
2
12
You can leave the interactive window open while you are writing programs in script
mode. That way, if you are not sure about a statement, you can try it before writing it
your program,
Adding comments
It's @ good idea to inctude comments at the top of every program (beyond the very
trivial) that you write, giving the name and purpose of the program, your name end the
date you wrote the program. You may also want to document in which folder you have
saved it So you can quickly find it again after a few weeks or months,
‘Within the program, add comments to explain the purpose of any tricky bit of code
and how it works,
‘To write a comment, type the # symbol. Anything to the right of # will be ignored
Keeping the console window open
!f you run the Python program by double-clicking its name in your folder, rather
than launching it from IDLE, the program will run and then the console window will
immediately close so that you can’t see what happened. To keep it open, add a line to
the end of your program:
input ("
The window will remain open until the user presses the Enter key.
String methods
Every data type in Python is an object. Strings, integers and floating point numbers
are all objects, and they have built-in methods which perform useful tasks. Some
useful string methods are shown in Table 2.1
Method | Example Description
upper _|astring.upper) returns astring all in uppercase
lower | astring lower) retums astring all in lowercase
index [astring index(item) ratums the index of the first occurrence of
item in astring, oF an error if not found
find fastring finite) returns the index of the first occurrence of
item in astring, or -1 if not found
replace astring replace(old,new) replaces all occurrences of old substring
with new in astring
Table 2.1: Sting methodsLEARNING TO PROGRAM IN PYTHON,
12
‘You can leave the interactive window open while you are writing programs in script
mode. That way, if you are not sure about a statement, you can try it before writing it
your program,
Adding comments
I's @ good idea to include comments at the top of every program (oeyond the very
trivial) that you write, giving the name and purpose of the program, your name and the
date you wrote the program. You may also want to document in which folder you hav
saved it so you can quickly find it again after a few weeks or months
Within the program, add comments to explain the purpose of any tricky bit of code
and how it works.
To write a comment, type the # symbol. Anything to the right of # wil be ignored
Keeping the console window open
' you run the Python program by double-clicking its name in your folder, rather
than launching it from IDLE, the program will run and then the console window will
immediately close so that you can't see what happened. To keep it open, add a line tc
the end of your program:
put ("\nPress Enter to exit
The window will remain open until the user presses the Enter key.
String methods
Every data type in Python is an object. Strings, integers and floating point numbers
are all objects, and they have builtin methods which perform useful tasks. Some
useful string methods are shown in Table 2.1.
Method | Example Description
upper _| astring.upper() returns astring all in uppercase
lower —_|astring. lower) returns astring all in lowercase
index | astring.index(item) returns the index of the first occurrence of
item in astring, or an error if not found
find | astring finditern) returns the index of the first occurrence of
item in astring, or -1 if not found
replace | astring.replace(ald,new) replaces all occurrences of old substring
with new in astring
Table 2.1: String mathodsEvery character in a string may be referred to using its index or position in the string
1 ‘The first character in a string myStr ing is referred to as myString(0].
Below is a program which uses some of the string methods. It must be saved before
you can run it, All the programs given in the text as examples and exercises may be
downloaded from www.pgoniine.co.uk.
STRINGS AND NUMBERS
astring
princ ("Original str:
= ("Us
woe
("original atring:",astring)
print ("The word ‘done starts
"Yourve done a good job"
yastring)
bercase string:",astring.upper (1)
ing: ",astring. replace ("g004","5rilllant"))
index" astring. index ("done") )
When you run the pragram, the output appears in the Python Shell window:
original stri:
Uppercase etring: YOU'VE DONE A GOOD JOB
New Strin:
original string:
Youve done a good
You've done a brilliant
You’ ve done a good
The word ‘done! starts at index 7
Notice that the original string is left unchanged. If you want to save the changed string,
you could write, for example:
bstring ~ astring.upper()
on
astring = astring.upper()
Syntax errors
} if you make any mistakes when entering Python statements, ‘the computer will report a
syntax error.
Example 2
In the following screenshot, some errors have been inserted into the program in
Example 1
‘The Python interpreter looks at the lines one by one and as soon as it encounters a
syntax error, it will stop and give you a message “Invalid syntax"
i
iLEARNING TO PROGRAM IN PYTHON
14
atone
coo Hae
ring. tepe2)
Hhgreepiece "720", Yoel anes)
[1B sntaor x
Q wrstcrin
There is a missing comma before the variable name astring. You can click OK,
correct the error, resave and try again.
Inputting numbers
A simple program to find the cost of lunch is shown below.
Example 3
#Program name: Ch 2 Example 3 Cost of Lunch.py
main = 3.00
juice = 0.75
banana = 1.00
total = main + juice + banana
"Total for lunch: ",total)
This prints out
Total for lunch: 4.75
Example 4
To make the program more useful, we could ask the user to enter the cost of the main
course, juice and banana. Here is a first attempt:
#Program name:
main = ir
juice
banana = |<
total
main + juice + banana
for Lu ", total)
i
aWhen you run this program, the output could be (depending on what the user inputs).
4.00
‘What has happened is that Python has treated each of the inputs as strings, not
numbers, and concatenated the strings instead of adding the numbers.
Converting between strings and numbers
Whenever you input numerical values, you have to convert from string to integer
or float. Here are some useful conversion functions:
Function |Description Example | Returns
float(x) _ | converts a string to a floating point value | float("4.65")_| 4.65
intéx) converts a string to an integer int(’3") 3
str(e) Converts anumberxtoastring value | str(5.0) 5.0"
Table 2.2: Type conversion functions
Example 5
You can do the conversion in the same line as the input stateme
* ane: Ch of lunch v3.py
main c £ main cl »
juice = float (ins £ juice
banana »
total = main + juice + banana
("Total for lunch: *,total)
This produces the following output:
Enter cost of main course: 4.00
Enter cost of juice: .50
Ente: banana: 1
Total 5.5
cost of
for lunch:
Formatting outout is covered in Chapter 9, pages 68-69. An explanation is left until
‘then; however, if you change the last line of the program to
("Total for lunch:",total))
the 16-character text is left-justified, five characters with 2 characters after the decimal
point are allowed for the variable total and the output will appear as
STRINGS AND NUMBERSLEARNING TO PROGRAM IN PYTHON
16
Functions and methods
Note the different ways in which functions and methods are written. A method is,
written using the dot notation, with the name of the object followed by a full-stop and
then the method name:
posa = astring.find("3")
Finding the length of a string
‘A function is written with the function name followed by the name of the object
in parentheses. The example below shows a useful function to find the number of
characters in a string:
numchars = l= (astring)
In Chapter 8 you will earn how to write your own functions. Built-in methods are used.
in this book, but you will not need to create your own methods until you start object-
oriented programming, which is not covered in this textbook.
Exercises
1, Write a program to do the following:
* assign the string “A picture's worth a thousand words" to proverb
* replace “A picture's” with “An image is" and assign the new string to
proverbImage
© find the first occurrence of the letter “o" in the original string and assign the value of
the index to firsto
© convert the original string to uppercase and assign it to proverbUpper
* find the number of characters in the string
* display the results of all these operations, as well as the original string.
2. Write a program to ask the user to enter the radius of a circle and print out the area,
‘x and the circumference, nr, (r = 3.14159)
3. Write a program which asks the user to type in two floating point numbers num
and num2, then rounds and prints their sum and product to the specified number of
decimal places:
‘The sum of numl and num2 is annn.nn
The product of num and num2 is nann.nnn
For example:
The sum of 3,453 and 2.1 is 5.55
The product of 3.453 and 2.1 is 7.251feo]
Selection
Objectives
* Learn to write conditional statements using Boolean expressions
* Write selection statements using if, else, elif
+ Use nested if statements
* Use complex Boolean expressions involving and, or and not.
Import a Python library module and use the randint () function to generate
random numbers
Programming constructs
There are three basic ways of controlling the order in which program statements are
carried out:
* Sequence
* Selection
+ Iteration
In the previous two chapters we wrote program statements one after the other in the
‘order in which they were to be executed. This is the sequence programming construct.
In this chapter we will use selection statements to control program flow. These statements
all start with the keyword i £, followed by a condition to be tested. For example:
Ls shape = "circle":
area = PI * r*¥2
area = length * breadth
Note the colons at the end of the i f and e1se conditions, and the indentation of
statements following each of these lines, all of which are mandatory.LEARNING TO PROGRAM IN PYTHON
Boolean conditions
‘The following Boolean conditions may be used in if statements:
equal to
ot equal to
> [greater than
>= _| greater than or equal
<__|less than
<= _ [less than or equal
Using a Boolean variable in a condition statement
A Boolean variable can only take the value True or False. So for example we could
write a conditional statement such as:
amount < 10:
validamount = 101
and later in the program the Boolean variable validAmount: could be tested:
validamount == :
“This is 2 valid anoun
However, the statement can also be written more simply as:
L> validamount:
("This is a valid amount")
The elif clause
This is useful if there are several possible routes through the program depending on
the value of a variable.
Example 1
‘Students are assigned a grade of A, B, C or F depending on the average mark they
have achieved over a number of assignments.
Mark of 75 or more: A
Mark of 60 - 74: B
Mark of 50 - 59: c
Mark less than 50: FWrite a statement to assign the grade to a variable grade depending on the value
of mark.
mark
grade
mark
grade
mark
grade
grade =
‘A particular ¢1i£ is tested only when all previous if and elif statements are False.
When one if or e1if is True, all subsequent tests are skipped.
Nested selection statements
If there is more than one condition to be tested, you can use a nested selection
statement.
Example 2
firm hiring new employees reauires all applicants to take an aptitude test. If they
pass the test, they are interviewed and if they pass the interview, they are offered
‘employment. If they fail the interview, they are rejected. If they fail the aptitude test,
they are given the opportunity to resit the test at a future date.
testResult == "Pas
interviewOK:
int ("Hired")
("Resit test")
Complex Boolean expressions
Boolean expressions may include ana, or or not.
Operator
Description
and
Returns True if both conditions are true
or
Returns True if either or both conditions are true:
not
‘A true expression becomes False and vice versa
SELECTIONExample 3
Here are some complex Boolean expressions used in if statements:
@) day
weekendRate
(bo) 25 (nor day ( z
weekendRate
fo) 25 (testResult and (interviewOk) :
(nati
Re.
Importing library modules
In Chapter 2 we used some built-in functions such as int, str and float. In
addition to these built-in functions, Python has a liorary of useful modules such as
datetime, time, random, sqlite3, tkinter, pdb (a debugging module) which
can be imported into a program.
LEARNING TO PROGRAM IN PYTHON,
Generating a random number
‘The randint () function generates a random number. It is a function included in
the random module and to use it, you must first import the module by ‘including
the statement
import random
at the start of the program. This imports the module called random. Then in your
Program, to generate a random integer between a range of integers a and b you write
num = random. randint (a,b)
Example 4
Generate two random numbers between 1 and 6 to reprasent the throw of two dice. If
the numbers are equal, print, for example, “You threw a double 5*
diel = random. randint (1,6)
die2 = random. randint (1,6)
diel
die
", diet)
i, diel, die2)
20Exercises
4
Write a program to allow the user to enter the length and width of a rectangle and
calculate the area. If the length and width are equal, print “This is a square of
area nn.nn’, Othemise, print "This is a rectangle of area nn.nn’.
Write a program to display a menu of options:
Menu
1. Music
2, History
3. Design and Technology
4. Exit
Please enter your choice:
‘The user then enters a choice and the program prints a message such as “You
chose History”. If they choose option 4, the program prints "Goodbye".
\Write a program to simulate the throw of two dice (each between 1 and 6). Print the
numbers representing the two throws.
If the numbers on the two dice are not equal, the player's score is the sum of the
numbers thrown. Print the score.
Ifthe numbers on the two dice are equal, the player scores twice the sum of the
number thrown. Print “You threw a double”, and the score.
‘Write a program to input the value of goods purchased in a shop. A discount is
subtracted from the value to find the amount owed.
IT the value is £200 or more, 10% discount is given
If the value is between £100 and £199.99, 5% discount is given.
Print the value of goods, discount given and amount owed.
Write a program to caloulate car park charges. Up to 2 hours costs £3.50, up to
4 hours £6.00, up to 12 hours £10.00. The driver enters the number of hours they
require and the machine prints the current time, expiry time and charge. For example:
Time now: Wed Mar 8 15:47:46 2017
Thu Mar 9 03:47:46 2017
10.00
expire
charge
Tip: Use the Python library function time by writing import time at the top of the
program. The time in seconds since January 1st 1970 is given by
currentTime = time.time()
This can be formatted as shown in the sample output above with the statement:
currentTimeFormatted = time. ctime(currentTime)
SELECTIONExample 3
Here are some complex Boolean expressions used in if statements:
| @ & day = . say"
| weekendRate
| ® | C= day © > aay
| weekendRate = =) =
©! (eestResult == "Pass") ss (interviewox) :
("Hired
r ("Rejected")
Importing library modules
In Chapter 2 we used some built-in functions such as int, str and float. In
addition to these built-in functions, Python has a liorary of useful modules such as
datetime, time, random, sqlite3, tkinter, pdb (a debugging module] which
can be imported into a program.
LEARNING TO PROGRAM IN PYTHON
Generating a random number
ee!
The randint () function generates a random number. It is a function included in
3 the random module and to use it, you must first import the module by including
the statement
ee import random
at the start of the program. This imports the module called random. Then in your
program, to generate a random intager between a range of integers a and b you write
, num = random. vandint (a,b)
Example 4
Generate two random numbers between 1 and 6 to represent the throw of two dice. If
the numbers are equal, print, for example, “You threw a double 5”
diel = random.randint (1,6)
die2 = random.randint (1,6)
diel == die2:
+ diel)
(Not a double:", diel, diez)
20Exercises
1
Write 2 program to allow the user to enter the length and width of a rectangle and
calculate the area, if the length and width are equal, print ‘This is a square of
area nn.nn’, Otherwise, print "This is a rectangle of area nn.nn’,
Write @ program to display a menu of options:
Menu
1. Music
2. History
3. Design and Technology
4. Exit
Please enter your choice:
‘The user then enters a choice and the program prints @ message such as “You
chose History". If they choose option 4, the program prints "Goodbye".
Write a program to simulate the throw of two dice (each between 1 and 6). Print the
numbers representing the two throws.
If the numbers on the two dice are not equal, the player's score is the sum of the
numbers thrown. Print the score,
If the numbers on the two dice are equal, the player scores twice the sum of the
number thrown. Print “You threw @ double”, and the score.
Write a program to input the value of goods purchased in a shop. A discount is
subtracted fram the value to find the amount owed.
If the value is £200 or more, 10% discount is given,
If the value is between £100 and £199.99, 5% discount is given.
Print the value of goods, discount given and amount owed,
Write a program to calculate car park charges. Up to 2 hours costs £3.50, up to
4 hours £5.00, up to 12 hours £10.00. The driver enters the number of hours they
require and the machine prints the current time, expiry time and charge. For example’
Wed Mar 8 15:47:46 2017
Expires: Thu Mar 9 03:47:46 2017
charge = 10.00
Tip: Use the Python library function time by writing import time at the top of the
program. The time in seconds since January 1st 1870 is given by
currentTime = time.time()
This can be formatted as showr
Time now
the sample output above with the statement:
currentTimeFormatted = time.ctime (currentTime)
SELECTION
21are
22
Chapter 4
Iteration
Objectives
* Use for loops (definite iteration)
* Use whi Le loops (indefinite iteration)
© se string functions and operators
The for loop
‘Sometimes in a program, you want to repeat a sequence of steps a certain number
of times. A for loop can iterate over a sequence of numbers in a range in different
ways. For example, the programmer can specify that a number used as @ counter has
arange a. .b, meaning from a up to but not including b.
Example 1
program name: Ch 4 Example 1
# Sam
print("Numbers from 1-!
foe number ange (1,6)
(number, end - "
ge 1: print the nun
)
#Sample ra
("\eNumb:
f= number
(\ng)
punber
(number, end =
y third number in
(2,17,3) +
atNested loops
number 2 (5,0,-1)+
rine (number, end =" ")
ery number from 5 down to 1:" }
ITERATION
The output is:
Numbers from 1-5:
12345
Numbers from 0-4:
01234
Every third number from 1-16:
1471013 16
Every number from 5 down to 1:
54321
Note the following points in the sample ranges:
«Sample range 1 shows that if you want the range to go from 1 to 5, you must
specify the range as range (1, 6). The range will start with the first numiber
specified, and go up to but not including the second number specitied.
‘* Sample range 2 shows that if you specify only one value in the range, this is taken
as the end of the range. The first value in the range defaults to 0. Thus range (5)
includes the five values 0, 1, 2, 3, 4.
Sample range 3 shows that you can count in threes. You can increment the
counter by any integer value.
» Sample range 4 shows that you can increment the counter by a negative value.
The counter will then count down from the first value specified. It will not include
the last number in the specified range.
(See Chapter 5 for an alternative and powerful way of specifying the range at the start
of a for loop.)
You can have one loop “nested” inside another. The next example shows how you
could print all the multiplication tables from 2 to 10.
Example 2
#Progrem Example 2 Multiplication t
table is = (2,11):
("\n" + sc: (table) +" Times Table ")
n (2,13):
(os (table) 4" <" + sce (nyt "=" 4 ove (table * 9)The while loop
‘The while loop is used when the number of times the loop will be performed is
initially unknown, The loop is performed as long as a specified Boolean condition is
True. If the condition is False before the while statement is encountered, the loop
will be skipped.
The Boolean condition is tested in the while statement at the start of the loop, and
again each time the loop is completed. If it becomes True halfway through the loap,
the remaining statements in the loop will be executed before the condition is re-tested.
LEARNING TO PROGRAM IN PYTHON
Example 3.
‘Write code to accept a series of integer test results from a user, find and print the
maximum and minimum results. Assume all the results are between O and 100. The
end of the inout is signalled by an input of -1
4 20
testResult = in
# Set maximum and minimum
maxResult = testResult
minResult = testResult
testResult != -1:
testResult > maxResult:
maxResult = testResult
testResult < minResult:
minResult = testResult
testResult = is°( ("Pa
2)
e c » maxResult)
(Minimum test result =", minResult)
24The output will be similar to this:
Please enter
© result: 45
Please enter test result (-1 to finish): 63
Please enter test result (-1 to finish): 24
Please enter test result (-1 to finish): 33
Please enter test result (-l to finish): 45
Please enter test result (-1 to finish): -L
ITERATION
Maximum test result = 63
Minimum test result = 24
Note carefully the technique of writing the first input statement before entering the
whi Le loop. This value is then processed and subsequent input statements are
executed at the end of the laop, so that as soon as ~1 is input, the next thing that
happens is that the condition is tested and the loop is exited.
String processing
Loops are often used when processing strings. In the example below, the for loop
condition is written in an alternative way so that each character in the string is processed.
Recall fromm Chapter 2, page 16, that the function Len (string) returns the number
of characters in a string.
Example 4
Count and print the number of words and the number of characters in a piece of text.
You can count wards by counting the number of spaces in the text, and adding 1 to
the total. (This assumes there is exactly one space between each word.)LEARNING TO PROGRAM IN PYTHON
26
#rogram name 4 Exane entence
sentence = ca
nunwords = 1
letter -- sentence:
letter ==" "
numilords +
t(*Number of w
print ("Number of ch
> =", numiords)
acters =", len(sentence))
Indexing strings
Each character in a string can be referenced by its index, starting at 0. Thus, if
a variable called word contains the characters "python", word[0] = “p",
word(1] = y",word[2] = "t" andsoon,
Example 5
Find the index of the first occurrence of the letter “e" in a sentence input by the user.
In this example, we will make use of the “break” statement. This breaks out of
the loop, transferring control to the first statement after the loop. Although this is.
‘sometimes considered by some to be bad practice in structured programming, others
disagree and it often simplifies the code.
#erogram name: Ch 4 Example $ first e.py
eIndex = -1
sentence = input ("Please enter a sentence: ")
ePosition in cance
sentence [Position]
elIndex
(sentence) ) :
ePosition
is", etndex)
sentence
iSlicing strings
Using indexing, you can isolate a single character in a string. Using slicing, you can
isolate anything from a single character to the whole string, so for example you
could look at the first three characters of a car registration number, or the middle five
characters of a nine character string
Example 6
You can try out various slices using an interactive session.
>>> name = "Phillip"
>>> nickname ~ name[0:5)
pep
>>>
>>>
(nickname)
Phill
(name [1:5])
>>> bill
‘With both indexing and slicing, you can use negative numbers. Sometimes it makes
more sense to start counting position numbers from the end of a string. You can
visualise the end points with alternative numberings as shown in the figure below:
1 2 38 4 5 6 7
ee
CEE E ET
pr Tt ttt
pops
hil
{name [-6:
If you specify an impossible slice, where the starting point is bigger than the end point,
like name [3:1] of name [4:-5], Python will return an empty string.
>>> impossible = name (5:1)
>>> impossible
However, you can mix positive and negative end points:
o> (name [-6:4])
hil
ITERATIONLEARNING TO PROGRAM IN PYTHON
28
Interrupting execution
Sometimes a logic error may result in a program looping endlessly. You can terminate
(kil) a running program by selecting Shel, interrupt execution from the menu bar in the
Python Shell menu, or by pressing the shortcut key combination Ctrl-C.
Example 7
In the following example, the programmer has forgotten to write an input statement
at the end of the while loop.
$Progran
con
endless Loop
("\nYou can stop it by select
2")
the menu in che python
name Enter a name, xxx to end
(Number of
(name) )
The output will be something like:
Wunbe
of lett
Number of letters in name:
Number of letters in name: 9
{endlessly repeated)
Exercises
1. Write a program to generate 10 random numbers between 1 and 10, and print out
the 10 numbers and the total of the numbers.
2, Extend the program in Exercise 1 to repeat the generation of 10 random numbers
1000 times. Do not print out the random numbers or the total of each set of 10
numbers — just print the average of the totals at the end of the program. Is the
answer what you would expect?
3. Write a program to allow the user to enter a number of 5-character product codes,
beginning with the letters "AB" or “AS” followed by 3 numeric characters,
Count and print the total number of product codes starting with “AB" and the total
number of product codes ending in "00"
Test your program by entering product codes AS123, AS101, ABI11, AB345,
00222, AB200.(aac |
Lists and tuples
Objectives
© Understand why lists are useful
* declare a list and use list functions and methods
* use one- and two-dimensional lists to solve problems
* distinguish between lists and tuples
Python lists
A list in Python Is a type of sequence, like a string. However, unlike a string, which can
contain only characters, a list can contain elements of any type. A list could contain,
for example, several names:
name = ["Mark", "Juan", "Ali", "Cathy", "Sylvia", "Noah"]
‘These names can be indexed, just like the elements of a string, 80
name (0) Noah”
A\list can hold elements of different types, so for example you could define a lst like this:
"Ben Charlton", 14,17, 16, 15,17)
Defining a list
A list may be defined in a Python program as in the examples above. You can also
define an empty list, or alist with many elements of the same value, as shown in the
interactive session below:
>>> abist = (J
>>> abist
0
>>> bhist = [1 * 10
>>> bhistLEARNING TO PROGRAM IN PYTHON
(None, No!
>>> chist
>>> cList
10, 0, 0, 0, 0
None is a special value in Python which acts as a useful placeholder for a value. It
evaluates to False when tested in a conditional statement.
Operations on lists
‘Some list methods are shown in the table below. Assume a = (45,13, 19,13,8]
List me List contents Return
Spee || Dretet Example [following execution | value
‘Add a new iter to
appendiitem) |lstto the end of the | a.append(a) |[45, 19, 19, 13, 8, 33]
fist
Remove the frst
remove(ter) occurrence of an | aremove(13) | 45, 19, 19, 8, 23]
item from lst
len) Batam gre number | enjay 145, 19, 138,33) [5
indexftem) | Ratu the postion | aindexte) | (45, 19, 13,8, 93] |3
Insert a new item at
ingertipositem) | Meh oe ainsert(2,7). |[45, 19, 7, 13, 8, 33)
Remove and return
pop) the astitem inthe | 2.p0p0 45, 19.7,13.6) |33
list
Remove and return
poptoos) —_thettemat position [apoptt) | 45, 7, 13, 8] 19
os
Note that Len () isa function, not a method, and is written in a different way.
Example 1
Determine whether the number 100 is in the list listB = [56,78,100,45,88,71],
and if so, print its index.
fecogeam nae: Ch § Example 1 List of numb:
ListB = (56,78, 100,45, 88,71]
100.) 1istB:
("100 is at position ", ListB.index(100))
("100 is not in the list™)Example 2
\Write code to print the numbers in 1istB on separate lines
num i> ListB:
(aun)
Alternatively, you could write
ror index =n r
Appending to a list
(ier QistB)) +
yint (ListBlindex] )
Ast is a fixed size; you cannot, for example, add a new item to ListB by writing
ListB[6) = 81
You will get an “index out of range” error.
Instead, you must use the append method, defined in the table on the previous page.
List8.append(81)
This will result in ListB being set equal to (56, 78, 100, 45, 88, 71,81)
You can append one list to another. If you want to concatenate (join together) two lists
aumbistl and numbist2, you can use the augmented operator
interactive session shows this:
>>> numbistl = [1,2,3,4]
>>> numbist2 = [5,6,7,8]
>>> numbistl += numbist2
>>> numbist1
E> [1,2,3,4,5,6,7,8)
Alternatively, write
numbistl = numbist1 + numbist2
= , The following
LISTS AND TUPLESList processing
Items are often held in lists for further processing. The items may be input by the user
or read from a file on disk, for example. Sometimes the list of values may be defined in
the program.
Example 3
Define a list containing the names of students in a class. Ask the user to input the
exam results for each student. Print a report showing the data with column headings
Student Exam mark
LEARNING TO PROGRAM IN PYTHON
At the end of the report, print the name of the student with the highest mark, and the
mark obtained.
In the following program, names have been padded with spaces to enable printing in
neat columns using the tab escape sequence \t.
Milner, Angela “,
topMark
numberOfStudents ~ topMark:
topMark = mark
topStudent = studentNames[etudent]
int ("\nstud )
student — (numberofstudents)
(studentNames [student], "\c", results [student] )
(\ntop
sie: ",topstudent, topMark)
32t
;
;
f
E
i
This produces output in the format:
enter mark for Khan, Afridi 56
enter mark for Milner, Ang ea
Enter mark for Philips, Justine : 71
Eater mark for Osmani, Pias : 52
student Exam mark
Khan, Afridi
Milner, Angela a
Philips, Justine
Osmani,
Top result: Philips,
Two-dimensional lists
In some applications you may need a table of values rather than a one-dimensional list.
Suppose you wanted to hold the data in the following table, which shows the average
maximum and minimum temperatures (°C) in London for each month of the year.
Month Max temp (°C)_| Min temp (°C)
January 6 3
February 7 3
March 10 4
April 13 6
May 7 9
une 20 12
July 22. 14
August 24 14
September 19 12
Oxtober 14 9
November 10 6
December 7 3
These values could be stored in a two-dimensional list named monthlyAvg:
monthlyavg = [ ("January", 6,3],
["Pebruary",7, 3),
['March", 10,4],
and s0 on down to
("December",7,3] 1
LISTS AND TUPLESLEARNING TO PROGRAM IN PYTHON
34
Each element of the two-dimensional lst is referred to by two indices giving the row
index (between 0 and 11) and column index (between 0 and 2)
‘The average maximum temperature in March would be referred to as
month1yAvg[2] [1]
‘The data for March is ("March", 10,4] and is held in monthlyAvg [2]
Example 4
Write @ program to enable a user to enter the average maximum and minimum
temperatures for each month and store them in a two-dimensional list named
month1yAvg. Print the monthiy data when it has all been entered
Some things to note about this program:
«The month names are supplied in a list so that the user does not have to enter them,
+ The table monthLyAvg which will hold the monthly averages is initialised to an
empty list. It will eventually contain 12 elements, each element being a list of
3 elements.
+ The three values in each row (monthName [m], maximum and minimum) have
been assigned to a list variable called row, which is then appended to the table
month1yavg.
Recall that adding end = " " tothe end of a print statement means that one
space will be printed at the end of the line, and the next print statement will print
the data on the same line.gram name:Ch § Exampl
#program
allow the user to average maximum
wapeil"; "May",
ber,"
tober", "No
monthlyavg = (
ange (12
("Enter average maximum
4 minimum foc " + monthName(m])
maximum = 290 ( (Maximum:
minimum = int (icpuc("Winimum: "))
row = [monthName[m], maximum, minimum]
monthlyAvg.append (row)
print the
ce ™\n")
fox index in canga(3):
monthlyAvg{m] [index] ,end = " ")
print (*\n")
Tuples
Tuples are very similar to lists, with one major difference: they are immutable, which
means that once defined, they cannot be changed. Like a list, a tuple can hold a
number of items of the same or different types, and can be indexed, sliced and sorted.
tuple is written in parentheses (round brackets) rather than square brackets. The
{following interactive session demonstrates the immutability of a tuple.
>>> name = ("ilary", "Jenny", "George", "Ben")
pe> or int (name (2])
George
>>> name[2] = "Jorge"
LISTS AND TUPLESLEARNING TO PROGRAM IN PYTHON
36
Exercises
1
Write Python statements to:
(@) define an empty list called alist
{0} append a string element "apple" to alist
(c) define alist named b1ist containing 20 integer elements, all zero
(d) concatenate alist and blist and assign the result to clist
(6) remove the last element of clist and assign it to Last
Write 2 program to do the following:
Initialise an empty list. Ask the user to input as many names as they like, until they
enter "End” instead of a name. Slice the list in half and print the first half of the list,
If the list contains an odd number of values, ¢.g. nine values, print only the first
four values.
Write @ program to accept a student name, and the marks obtained on 10 weekly
tests. Print the name, average mark, top three marks and bottom three marks.
(Use sortedMarks = sorted(markList, reverse = True) to sort the list)
Extend the program shown in Example 3 to find the months with the hottest average
‘temperature and the coldest average temperature. Print the month names and relevant
‘temperatures of these months.
Write a program to simulate how the top scores of several players playing an online
game many times could be held in a list
(@) Define a two-dimensional list which will hold in each row, a user ID and their top
score for an online game. The two-dimensional list is to be initialised with the
following values:
userID topScore
ARADL = 135,
BBBOl 87
cccol «188
pppol = 109
(0) Ask a user to enter their ID. Check if the user ID is in the list. fit is not found,
append a new row containing the user ID and a score of zero.
(c) Generate a random number between 50 and 200 to represent the score for this
game. Locate the user. Check whether the new score is greater than the score in
‘the list, and if 80, replace it
(d) Print the whole list of players and scores.
Repeat steps b to d until a user ID of xxx is entered,