Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.
-
Upload
jean-meriwether -
Category
Documents
-
view
219 -
download
1
Transcript of Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.
![Page 1: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/1.jpg)
Lecture 20 – Boolean OperatorsDr. Patricia J. Riddle
COMPSCI 101Principles of Programming
![Page 2: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/2.jpg)
2COMPSCI 101 - Principles of Programming
At the end of this lecture, students should be able to:
Use and, or and not in conditional conditions
Understand basic truth tables
Use short circuit evaluation
Learning outcomes
![Page 3: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/3.jpg)
3COMPSCI 101 - Principles of Programming
Booleans represent truth values True False
Relational operators compare two different things Evaluate to Boolean values == < <= > >= !=
Review of Booleans
![Page 4: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/4.jpg)
4COMPSCI 101 - Principles of Programming
Boolean Operators are and, or and not:
if palindrome("word")
if not palindrome("word")
if palindrome("word") and heterogram("word")
if palindrome("word") or heterogram("word")
Boolean Operator Examples
![Page 5: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/5.jpg)
5COMPSCI 101 - Principles of Programming
P Q not P P and Q P or Q
True True False True True
True False False False True
False True True False True
False False True False False
Boolean Operator Truth Tables
![Page 6: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/6.jpg)
6COMPSCI 101 - Principles of Programming
Write a function named is_a_leap_year() that accepts a year as a parameter and returns True if the year is a leap year and False otherwise.
A year is a leap year if it is divisible by 400, or divisible by 4 but not by 100.
Exercise
![Page 7: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/7.jpg)
7COMPSCI 101 - Principles of Programming
From lecture 12, slide 19
def is_leap_year(year): if year % 400 == 0: return True elif year % 100 == 0: return False elif year % 4 == 0: return True else: return False
Original Leap Year Code
![Page 8: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/8.jpg)
8COMPSCI 101 - Principles of Programming
def is_a_leap_year(year): if not isinstance(year,int): print("year is not an integer") return False if (year % 400) == 0 or ((year % 4) == 0
and (year % 100) != 0): return True return False
Answer
![Page 9: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/9.jpg)
9COMPSCI 101 - Principles of Programming
If A and B B is not evaluated unless A is True
If A or B B is not evaluated unless A is False
Examples
If divisor != 0 and numerator/divisor > 4:
If divisor = 0 or numerator/divisor > 4:
Short Circuit Evaluation
![Page 10: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/10.jpg)
10COMPSCI 101 - Principles of Programming
Write a function named find_names_with() that accepts a letter, a location and a list of names, and returns the list of names that have the letter in the specified location.
find_names_with("r", 3, ["Sara","Fred","Al","Tar"])['Sara', 'Tar']
Exercise
![Page 11: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/11.jpg)
11COMPSCI 101 - Principles of Programming
def find_names_with(letter, place, names_list): name_list = [] for name in names_list: if len(name) >= place and
name[place-1] == letter: name_list += [name] return name_list
Answer
![Page 12: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/12.jpg)
12COMPSCI 101 - Principles of Programming
Write a function named pangram() that accepts a string parameter and returns True if the string is a pangram and False otherwise.
A pangram is a sentence which contains every letter in the alphabet.
“The quick brown fox jumps over the lazy dog”
Perfect panagrams “TV quiz jock, Mr. PhD, bags few lynx”“Glum Schwartzkopf vex'd by NJ IQ”“Blowzy night-frumps vex'd Jack Q”
Exercise
![Page 13: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/13.jpg)
13COMPSCI 101 - Principles of Programming
def pangram(sentence): if not isinstance(sentence,str): print("sentence is not a string") return False alphabet = ["a", "b", "c", "d", "e", "f",
"g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
for letter in alphabet: if letter not in sentence: return False return True
Answer
![Page 14: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/14.jpg)
14COMPSCI 101 - Principles of Programming
Write a function named pangram2() that accepts a string parameter and returns True if it is a Pangram and False otherwise, and works for both uppercase and lowercase letters
Perfect panagrams “TV quiz jock, Mr. PhD, bags few lynx”“Glum Schwartzkopf vex'd by NJ IQ”“Blowzy night-frumps vex'd Jack Q”
Exercise
![Page 15: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/15.jpg)
15COMPSCI 101 - Principles of Programming
def pangram2(sentence): if not isinstance(sentence,str): print("sentence is not a string") return False alphabet = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]
capital_alphabet = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y”, "Z"]
alphabet_range = range(0,len(alphabet)) for index in alphabet_range: if alphabet[index] not in sentence and capital_alphabet[index] not in sentence: return False return True
Answer
![Page 16: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/16.jpg)
16COMPSCI 101 - Principles of Programming
http://en.wikipedia.org/wiki/Conway%27s_Game_of_Life
The universe of the Game of Life is an infinite two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, alive or dead. Every cell interacts with its 8 neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur: Any live cell with fewer than two live neighbours dies, as if caused by under-
population. Any live cell with two or three live neighbours lives on to the next generation. Any live cell with more than three live neighbours dies, as if by overcrowding. Any dead cell with exactly three live neighbours becomes a live cell, as if by
reproduction. Wikipedia
The Game of Life
![Page 17: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/17.jpg)
17COMPSCI 101 - Principles of Programming
Write a function named is_alive() that accepts 2 parameters: a Boolean value (alive) and a number between 1 and 8 (live_neighbours) and returns True if the cell should turn on and False otherwise
>>> is_alive(True,1)False
>>> is_alive(True,3)True
>>> is_alive(False,3)True
>>> is_alive(False,4)False
Exercise
![Page 18: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/18.jpg)
18COMPSCI 101 - Principles of Programming
Nested if statements can be hard to read
def is_alive(alive,neighbours_alive): if alive: if neighbours_alive < 2: return False if neighbours_alive > 3: return False return True if neighbours_alive == 3: return True return False
Answer
![Page 19: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/19.jpg)
19COMPSCI 101 - Principles of Programming
def is_alive2(alive,neighbours_alive): its_dead = False its_alive = True if alive and (neighbours_alive < 2 or
neighbours_alive > 3): return its_dead if not alive and neighbours_alive != 3:
return its_dead return its_alive
Answer
![Page 20: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/20.jpg)
20COMPSCI 101 - Principles of Programming
Basic Truth tables and or not
Use of Complex conditions: Use of “and”, “not”, and “or”
Benefits of Short Circuit evaluation: Allows you to write code that will not trigger error messages
Summary
![Page 21: Lecture 20 – Boolean Operators Dr. Patricia J. Riddle.](https://reader035.fdocuments.us/reader035/viewer/2022062318/551c0b34550346a34f8b50fb/html5/thumbnails/21.jpg)
21COMPSCI 101 - Principles of Programming
Complex String Processing
Tomorrow