1
Elementary Python Programming
2
Quadratic Roots
Our goal is to write a simple Python script (program) to find the real
roots of a quadratic equation.
Here is what a run of the program should look like.
3
First Steps
We first print the program description:
print("
\
nYou are to enter the",
"coefficients a,b,c of the",
"quadratic equation")
print ("ax^2 + bx + c = 0 and the“,
"solution will be presented
\
n")
4
First Steps
Next, prompt for, and input, the coefficients:
a = int(raw_input("Enter coefficient a: "))
b = int(raw_input("Enter coefficient b: "))
c = int(raw_input("Enter coefficient c: "))
Why did we use the int() converter?
Because the raw_input() function always return a string.
5
Mathematical Solution
6
Branching
Notice that we must do different things depending on
the truth value of an expression
Most programming languages provide for these
situations by means of
if
statements
Python versions:
if <condition>:
<statements1>
else:
<statements2>
if <condition1>:
<statements1>
elif <condition2>:
<statements2>
else:
<statements3>
7
Square Roots
The square root function is not a Python built

in
function
However, it is provided by the Python
math
module
So we must
import
that module by placing the
following statement at the top of our program file:
import math
Now we may use the function
sqrt
to calculate a
square root.
However, since it comes from an imported module,
we must precede it by the module name and a .:
math.sqrt
()
8
Finishing the Script
So here is the final part of our script.
d = b*b

4*a*c
# the discriminant
if d < 0:
print('The equation has no real roots')
elif
d == 0:
print('The equation has unique root',

b/
(
2*a
)
)
else:
r1 =
(

b +
math.sqrt
(d)
)
/
(
2*a
)
r2 =
(

b

math.sqrt
(d)
)
/
(
2*a
)
print('The roots of the equation are',r1,r2)
9
A More Complicated Problem
We want to determine if a string could overlap itself.
For example s = '
abcdefabc
' overlaps itself as follows:
abcdef
abc
abc
defabc
So does the string t = '
abcda
' :
abcd
a
a
bcda
So we want to write a function that finds the minimum index
i
such that the first
i
characters are the same as the last
i
characters of a string.
10
A More Complicated Problem
We want to write a function that finds the smallest positive
index
i
such that the first
i
characters of a string
s
are the
same as the last
i
characters of
s
.
How can we describe the first
i
characters of string
s
?
s[:i]
, which is the same as
s[0:i]
and consists of the
characters at indices
0,1, …,i

1
.
The last
i
characters are given by
s[

i:].
The obvious approach is to
compare
s[:1]
with
s[

1]
then compare
s[:2]
with
s[

2]
and so on until we either find a match or our comparison index reaches
len(s)
Most programming languages provide ways to do repeated
execution, and the
while
construct is a common methodology
11
While Loops
The general form of a Python
while
statement is:
while
<condition>
:
<one or more statements
>
# body
where
<condition>
is an expression that evaluates to either
True
or
False
.
Execution proceeds as follows:
<condition>
is evaluated
if the result is
False
, execution continues with the
statement after the
while
statement.
if the result is
True
, the body is executed and the condition
is evaluated;
This continues until the condition becomes false.
12
While Loops
Very simple example to print the numbers from 1 to 3:
i
= 1
while
i
<= 3:
print(
i
)
i
+= 1
Loop unwound:
Output
i
= 1
1 <= 3 True
print(1)
1
i
= 2
2 <= 3 True
print(2)
2
i
= 3
3 <= 3 True
print(3)
3
i
= 4
4 <= 3 False, so done
13
While Loops
So here is the code for our overlap function, which we would
put in a file called, say,
myoverlap.py
.
def
overlaps(s):
i
= 1
while
i
<
len
(s) and s[:
i
] != s[

i
:]:
i
+= 1
if
i
==
len
(s):
return

1
else:
return
i
14
Simple Assignment
Assignment: Right Triangle
In a file called rightTriangle.py, create a python script in the file that
prompts for and inputs three integers;
then prints a statement indicating whether the numbers are the lengths of the sides of a
right triangle.
Your output should be one of the following:
The numbers are the side lengths of a right triangle
The numbers are not the side lengths of a right triangle
Note
:
three numbers are the side lengths of a right triangle if and only the
square of one of them is the sum of the squares of the others.
15
Random Module
The random module provides for the generation of (pseudo) random
numbers
We will now illustrate the use of this module for a very, very simple
simulation example.
The game of craps is played with two six

sided dice.
To start a game, the player rolls the dice and checks the total of the
values on the up side of the two dice.
If the total is 7 or 11, the player wins immediately
If the total is 2, 3 or 12, the player loses immediately
Otherwise the total becomes the “point”
The player now continue to roll the dice until he hits either the point
value or 7
If he hits the point, he wins; if he hits 7, he loses
16
Craps Simulation
We will put our code in a file named
craps.py
First, we create a function named
roll_and report()
that
simulates a single roll of the dice.
The function will generate a random integer between 1 and 6 for the
value on the first die
Then generate a second value for the second die
Finally,
roll_and report()
will report the die values and the total
to the user and return the total
Next, we create a function
play_game
to simulate the playing of one
game
The rest of our script consists of a call to the
play_game
function
We will ignore for now the value returned by
play_game
Roll and Report Function
import random
# Now the methods from the random module are available
def roll_and_report():
die1 = random.randint(1,6)
# 1 ≤ die1 ≤ 6
die2 = random.randint(1,6)
# 1 ≤ die2 ≤ 6
total = die1+die2
print(
'
\
ndie1: '
,
die1
,
'
\
ndie2: '
,
die2
,
'
\
ntotal: '
,
total
,'
\
n')
return total
17
Function play_game
def
play_game():
print
("Here we go with your first roll.")
total = roll_and_report()
if
total == 7
or
total == 11:
print
("Congratulations! You won the game on the first roll.
\
n")
elif
total == 2
or
total == 3
or
total == 12:
print
("Uh

oh, you lost the game on the first roll!
\
n")
# The total now becomes the “point” and we continue rolling the dice
18
Function play_game
else:
raw_input("Hit enter to continue
\
n")
# For better presentation on screen
point = total
print("You must roll a total of ", point, " to win")
print("If you roll a 7 before ",point,", you lose")
raw_input("
\
nHit enter to continue")
total = roll_and_report()
while total != 7 and total != point:
total = roll_and_report()
raw_input("
\
nHit enter to continue")
if total == 7:
print('
\
nGame over, you lose')
return 0
else:
print("
\
nYou hit the point, you win!")
return 1
19
Rest of the Script
print("
\
n
\
nWelcome to the Casino game of Craps")
play_game()
20
Sample Runs of craps.py
21
Sample Runs of craps.py
22
Another Assignment
You are to modify the file craps.py so that the user plays a game, then is asked
whether she wishes to play again (response should be ‘Y’ or ‘N’)
If
‘Y’
, another game is played and the question asked again.
This continues until the player enters ‘N’
Addendum: you might make your code a little more friendly by recognizing ‘y’
as ‘Y’ and ‘n’ as ‘N’.
23
Comments 0
Log in to post a comment