Transcript Objectives

2. WRITING SIMPLE
PROGRAMS
Rocky K. C. Chang
September 10, 2015
(Adapted from John Zelle’s slides)
Objectives
• To be able to understand and write Python statements to
output information to the screen, assign values to
variables, get numeric information entered from the
keyboard, and perform a counted loop
The Software Development Process
Source:
http://en.wikibooks.org/wiki/Introduction_to_Software_Engineering/Process/Life_Cyc
le#mediaviewer/File:SDLC_-_Software_Development_Life_Cycle.jpg
Example Program: Temperature
Converter
• Analysis – the temperature is given in Celsius, user wants
it expressed in degrees Fahrenheit.
• Specification
• Input – temperature in Celsius
• Output – temperature in Fahrenheit
• Output = 9/5(input) + 32
Example Program: Temperature
Converter
• Design
• Input, Process, Output (IPO)
• Prompt the user for input (Celsius temperature)
• Process it to convert it to Fahrenheit using F = 9/5(C) + 32
• Output the result by displaying it on the screen
Example Program: Temperature
Converter
• Before we start coding, let’s write a rough draft of the
program in pseudocode.
• Pseudocode is precise English that describes what a
program does, step by step.
• Using pseudocode, we can concentrate on the algorithm
rather than the programming language.
Example Program: Temperature
Converter
• Pseudocode:
• Input the temperature in degrees Celsius (call it celsius)
• Calculate fahrenheit as (9/5)*celsius+32
• Output fahrenheit
• Now we need to convert this to Python!
Example Program: Temperature
Converter
#convert.py
# A program to convert Celsius temps to Fahrenheit
# by: Susan Computewell
def main():
celsius = eval(input("What is the Celsius temperature?
"))
fahrenheit = 9/5 * celsius + 32
print("The temperature is", fahrenheit, "degrees
Fahrenheit.")
main()
Example Program: Temperature
Converter
• Once we write a program, we should test it!
>>>
What is the Celsius
The temperature is
>>> main()
What is the Celsius
The temperature is
>>> main()
What is the Celsius
The temperature is
>>>
temperature? 0
32.0 degrees Fahrenheit.
temperature? 100
212.0 degrees Fahrenheit.
temperature? -40
-40.0 degrees Fahrenheit.
EXERCISE 2.1
Modify convert.py so that it will take the
degree in Fahrenheit and change it back to
Celsius.
A sample output:
>>>
What is the Celsius temperature? 100
The temperature is 212.0 degrees Fahrenheit.
The temperature is 100.0 degrees Celsius.
>>>
Naming the identifiers
• Names are given to variables (celsius, fahrenheit),
modules (main, convert), etc.
• These names are called identifiers.
• Every identifier must begin with a letter or underscore
(“_”), followed by any sequence of letters, digits, or
underscores.
• Note that “—”, “.” and many other symbols are not allowed.
• Identifiers are case sensitive.
• Identifiers cannot be Python’s keywords.
Python’s keywords
EXERCISE 2.2
Say, if you suspect that a word might be a
Python keyword, how would you find out
without looking up the table of the keywords?
Expressions
• The fragments of code that produce or calculate new data
values are called expressions.
• A (numeric/string) literal, which is the simplest kind of
expression, is used to represent a specific value, e.g. 10
or “rocky”.
• A simple identifier can also be an expression.
• Simpler expressions can be combined using operators +,
-, *, /, and **.
• The normal mathematical precedence applies.
• Only round parentheses can be used to change the precedence,
e.g., ((x1 – x2) / 2*n) + (spam / k**3).
• Try “i” + “love” + “you”.
EXERCISE 2.3
If you assign 5 to x and then type x, the shell
will return 5 to you. What if you type y but
without assigning any value to it before?
Output statements
• Recall from your previous print exercises:
• Each print statement will print their content on a different line.
• The items are separated by a single space
• Formally,
• print(*objects, sep=' ', end='\n',
file=sys.stdout)
• To make it simple,
• print(<expr>, <expr>, …, <expr>, sep=' ',
end='\n', file=sys.stdout)
• sep: how are the items separated?
• end: how is the printed content ended?
• file: where is the content printed?
EXERCISE 2.4
o By setting sep appropriately, print out 1*2*3*4.
o Use a print statement to print 1 and 2, and a
second print statement to print 3 and 4. By
setting end appropriately, 1, 2, 3, and 4 are
printed on the same line.
Assignment statements
• Simple assignment: <variable> = <expr>
variable is an identifier, expr is an expression
• The expression on the RHS is evaluated to produce a
value which is then associated with the variable named on
the LHS.
Behind the scene
• Python does not recycle these memory locations.
• Assigning a variable is more like putting a “sticky note” on
a value and saying, “this is x”.
• The memory for the old value will be “released”
automatically (i.e., garbage collection).
Assigning Input
• The purpose of an input statement is to get input from the
user and store it into a variable.
• <variable> = input(<prompt>)
• E.g., x = eval(input(“Enter a temperature in
Celsius: ”))
• Print the prompt.
• Wait for the user to enter a value and press <enter>.
• The expression that was entered is evaluated and assigned to the
input variable.
• Two kinds of input: character string or number
EXERCISE 2.5
o Prompt user for a number and then print it out
using just input(<prompt>).
o Prompt user for a number and then print it out
using eval(input(<prompt>)).
o What is the difference between the two?
o Remove eval() from convert.py and does
it still run?
EXERCISE 2.6
Ask users to input two numbers and print out
the two numbers in a reversed order.
Simultaneous Assignment
• Several values can be calculated at the same time.
• <var>, <var>, … = <expr>, <expr>, …
• Evaluate the expressions in the RHS and assign them to
the variables on the LHS.
• E.g., sum, diff = x+y, x-y
• E.g., x, y = eval(input("Input the first and
second numbers separated by a comma: "))
EXERCISE 2.7
Simplify your codes in exercise 2.6 using
simultaneous assignment statements.
Definite Loops
• A definite loop executes a definite number of times, i.e., at
•
•
•
•
the time Python starts the loop it knows exactly how many
iterations to do.
for <var> in <sequence>:
<body>
The beginning and end of the body are indicated by
indentation.
The variable after for is called the loop index. It takes on
each successive value in sequence.
E.g.,
for i in range(10):
x = 3.9 * x * (1 - x)
print(x)
EXERCISE 2.8
o Replace range(10) by
[0,1,2,3,4,5,6,7,8,9] and rerun
chaos.py. Any difference?
o Replace [0,1,2,3,4,5,6,7,8,9] with
[0,1,3,5,7,9] and rerun chaos.py.
Any difference?
Flow chart for the definite loop
END