160 likes | 273 Views
COMPSCI 101 Principles of Programming. Lecture 23 – Nested Loops Dr. Patricia J. Riddle. Learning outcomes. At the end of this lecture, students should be able to: Use nested loops. Review of For Loops. For loop used to access the elements of a list (a sequence of data)
E N D
COMPSCI 101Principles of Programming Lecture 23 – Nested Loops Dr. Patricia J. Riddle
Learning outcomes • At the end of this lecture, students should be able to: • Use nested loops COMPSCI 101 - Principles of Programming
Review of For Loops • For loop • used to access the elements of a list (a sequence of data) • elements are accessed in order • each element is assigned to a variable • a block of instructions is executed after each assignment COMPSCI 101 - Principles of Programming
Nested Loops my_list = [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] , [ 7 , 8 , 9 ] ] for i in my_list: for j in i: print(j) my_words = ["one" , "two" , "three"] for word in my_words: for letter in word: print(letter) COMPSCI 101 - Principles of Programming
Exercise • Write a function named change_case2()that accepts a sentence and returns the same sentence in all uppercase or all lowercase, using nested loops. >>> change_case2("pApEr","upper") 'PAPER' >>> change_case2("PapeR","lower") 'paper' >>> change_case2("Can we dO a WHoleSentence","upper") 'CAN WE DO A WHOLE SENTENCE' COMPSCI 101 - Principles of Programming
Answer defchange_case2(sentence,my_type): new_sentence= "" uppercase = ["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"] lowercase = ["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 i in range(0,len(sentence)): if (my_type == "upper" and sentence[i] in uppercase) or (my_type == "lower" and sentence[i] in lowercase) or (sentence[i] == " "): new_sentence += sentence[i] else: for j in range(0,len(lowercase)): if my_type == "upper" and lowercase[j] == sentence[i]: new_sentence += uppercase[j] elifmy_type == "lower" and uppercase[j] == sentence[i]: new_sentence += lowercase[j] return new_sentence COMPSCI 101 - Principles of Programming
Exercise • Write a functionnamed isogram2()that uses nested loops and accepts a word as a parameter and returns True if it is an isogram and False otherwise. • An isogram, sometimes known as a nonpattern word, is a word or phrase in which every letter occurs the same number of times. >>> isogram2("subdermatoglyphic") True >>> isogram2("deed") True >>> isogram2("sara") False COMPSCI 101 - Principles of Programming
Answer def isogram2(word): num= 0 for letter in word: if word[0] == letter: num = num + 1 for i in range(1,len(word)): count = 0 for letter in word: if word[i] == letter: count = count + 1 if num != count: return False return True COMPSCI 101 - Principles of Programming
Exercise • Write a function named find_primes()that accepts a number as a parameter and returns a list of all the primes up to (and including) that number A prime number (or a prime) is a natural number greater than 1 that has no positive divisors other than 1 and itself. Wikipedia >>> find_primes(4) [2, 3] >>> find_primes(7) [2, 3, 5, 7] COMPSCI 101 - Principles of Programming
Answer deffind_primes(num): primes = [] for i in range(2,num+1): divisible = False for j in range(2,i): if i % j == 0: divisible = True if not divisible: primes += [i] return primes COMPSCI 101 - Principles of Programming
Exercise • Write a function named mutate() that accepts the filename of a file containing a small dictionary, and a word as parameters and returns a list of words which differ from the word by only 1 letter. >>> mutate("dict5.txt","cat") ['bat', 'eat', 'fat', 'hat', 'kat', 'lat', 'mat', 'oat', 'pat', 'qat', 'rat', 'sat', 'tat', 'vat', 'cit', 'cot', 'crt', 'cut', 'cab', 'cad', 'cam', 'can', 'cap', 'car', 'caw', 'cay'] >>> mutate("dict5.txt","frog") ['grog', 'prog', 'flog', 'froe', 'from', 'frow'] COMPSCI 101 - Principles of Programming
Answer def mutate(filename,word): dictionary_file = open(filename, "r") dictionary = dictionary_file.read() dictionary_list = dictionary.split() word_list = [] 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 i in range(0,len(word)): for new_letterin alphabet: if word[i] != new_letter: test_word= replace_letter(word,i,new_letter) if test_word in dictionary_list: word_list+= [test_word] return word_list defreplace_letter(word,i,new_letter): if i == 0: return new_letter + word[i+1:] elifi == len(word)-1: return word[:i] + new_letter else: return word[:i] + new_letter + word[i+1:] COMPSCI 101 - Principles of Programming
Exercise • Write a function named three_letter_anagram()that accepts a word and returns all anagrams of it. >>> three_letter_anagram("cat") ['tac', 'tca', 'atc', 'act', 'cta', 'cat'] >>> three_letter_anagram("men") ['nem', 'nme', 'enm', 'emn', 'mne', 'men'] >>> three_letter_anagram("see") ['ees', 'ese', 'ees', 'ese', 'see', 'see'] COMPSCI 101 - Principles of Programming
Answer defthree_letter_anagram(word): answer= "" answer_list = [] word_range = range(0,len(word)) for index1 in word_range: for index2 in word_range: if index2 != index1: index3 = 3 - index1 - index2 answer = "" + word[index1] + word[index2] + word[index3] answer_list.insert(0,answer) return answer_list COMPSCI 101 - Principles of Programming
Summary • Nested Loops • Can put a loop inside another loop • Just like you can put a conditional inside a loop COMPSCI 101 - Principles of Programming
Tomorrow • Random Number Generation, • User Input, • While Loops COMPSCI 101 - Principles of Programming