# Author: James Tam # Version: November 4, 2021 # Learning objective: traversing a 1D list and checking the state of each # list element. import random ''' New learning objective: how to modify select elements of a 2D list based on a condition. ''' # CONSTANTS SIZE = 20 EMPTY = " " SMILE = ":-)" BIG_SMILE = ":-D" ERROR = "!!!" ''' @ checkForEmoticons() @ argument: 1D list of Strings @ return value: none @ @ Display a status message for different types of emoticons. ''' def checkForEmoticons(world): r = -1 for r in range (0,SIZE,1): if (world[r] == SMILE): print("Someone is happy!") elif (world[r] == BIG_SMILE): print("Someone is VERY happy!!!") ''' @ display() @ argument: 1D list of Strings @ return value: none @ @ Shows the current state of the world. To make it easier to see and @ interpret the state elements are separated by vertical bars. ''' def display(world): r = -1 for r in range (0,SIZE,1): #Display a vertical bar before each element print("|%s" %world[r], end="") #Add a final bar after the last element print("|") ''' @ generateElemement @ a random number argument (precondition 1<=number<=100) @ returns a string of length one (an element to populate world ''' def generateElement(randomNumber): element = ERROR if ((randomNumber >= 1) and (randomNumber <= 85)): element = EMPTY elif ((randomNumber >= 86) and (randomNumber <= 95)): element = SMILE elif ((randomNumber >= 96) and (randomNumber <= 100)): element = BIG_SMILE else: element = ERROR return(element) ''' @ initialize() @ no parameters @ returns a fully initialized randomly generated world ''' def initialize(): world = [] r = -1 randomNumber = -1 newElement = ERROR for r in range (0,SIZE,1): randomNumber = random.randrange(1,101) element = generateElement(randomNumber) world.append(element) # Add new element to the end of the row return(world) # MAIN EXECUTION POINT def start(): world = initialize() display(world) checkForEmoticons(world) start()