Logical Operators and Looping Structures



Review Question:
Write a program that reads an integer from the user, and prints a
message indicating whether or not the number is divisible by 4.



The logical operators:
and
or
not





Examples:
i = 14
j = 18
c1 = 'elf'
c2 = 'help'

print (i<j)   # output: true
print i < j and i == i   # output: true
test = not(i < j)   # test is false
test2 = c1 == c2   # test2 is false
test3 = i<j or c1>c2   # test3 is true
test4 = i<j and c1 > c2   # test 4 is false



Important Note about Comparing Floating-Point Numbers


Consider the following code:

import math   # import math library, which includes sqrt() function

root = math.sqrt(2)
double diff = root*root - 2   # we expect diff to be 0
 
if diff == 0:
   print "sqrt(2)^2 - 2 is 0"
else:
    print "sqrt(2)^2 - 2 is ", diff



Output:
sqrt(2)^2 - 2 is 4.4408920985e-16



You should compare whether floating-point numbers are "close enough", rather than exactly equal. Roundoff errors are unavoidable.



Exercise: Write a program that reads two floating-point numbers from the keyboard, and prints a message indicating whether they are within epsilon of each other, where epsilon is defined to be 0.0001.

Exercise: Write a program that reads a string from the keyboard, and prints a message indicating whether or not each of the vowels a, e, i, o and u occur in the string. To do this, we will need to import the string library, and use the find() function from this library.


Example:
import string
s = "hello world hello"
print string.find(s, "hello")

Output: 0




Iteration Structures




The while statement



Example:
while I'm hungry:
   eat another bite



Example:
while there are more lines of text in the input file:
    read the next line from the file



Syntax:
while condition:
    statement(s)



How it works:
A while statement executes a block of code repeatedly, as long as the associated condition is true. The condition is evaluated before each execution of the statements in the while body, and if the expression evalutes to false, execution of the while loop terminates.



Example:
count = 1
while count <= 5:
   count = count + 1

print "count is ", count




Example:
# initialize variables to use in loop
num = 1
sum = 0

# as long as num is at most 5, add num to the sum
while num <= 5:
    sum = sum + num  # add the current value of num to the sum
    num = num + 1    # add 1 to num - what happens if I omit this statement?

print "The sum of the first 5 positive integers is ", sum



Exercise: Write a program that prints the integers from 1 to 15 to the console window, one number per line.

Exercise: Write a program that asks the user to enter 10 numbers, and prints the sum of those numbers.