# a1.py # PUT YOUR NAME(S) AND NETID(S) HERE # Sources/people consulted: FILL IN OR WRITE "NONE" # PUT DATE YOU COMPLETED THIS HERE # Skeleton by Prof. Lee (cs1110-prof@cornell.edu), Feb 14 2018 """ Functions for finding whether a class is open or closed on a roster. We use "backwards single quotes" --- like this: `hi there` --- in the docstrings below to visually set off variable names. """ # Helper function def before_first_double_quote(text): """Returns: the part of string `text` right up to but not including the first double-quote. Precondition: string `text` contains at least one double-quote. Example: before_first_double_quote('abd"def') returns the string abd """ pass # IMPLEMENT THIS FUNCTION # Helper function def after(tag, text): """Returns: all of string `text` that occurs just after the first occurrence of string `tag` in `text`. Preconditions: `text` [str] contains an instance of `tag` `tag` [str] has length > 0 Example: if `tag` is the string and `s` is the string start xthis that the other then this functions returns the string xthis that the other """ pass # IMPLEMENT THIS FUNCTION def open_status(class_num, data): """Returns the open-ness status of class `class_num` according to `data`. `class_num`: string version of a class number, e.g., "10776" at Cornell. `data`: a string whose preconditions are easiest explained by example. Suppose `class_num` is "10775". Then, `data` must contain somewhere within it a single occurrence of and this is followed by text where the first occurrence of the string open-status- (the ending hyphen is important) is one of open-status-open" or open-status-closed" or any string of the form open-status-???" (the ending double-quote is important to notice) where the ??? stands for a sequence of characters not containing quotes that represents the open-ness status of the course. (For example, maybe there is such a thing as open-status-waitlist") This function returns whatever ??? is. Example: if `class_num` is "10775", and `data` is the string fa-circle open-status-open"> then this function returns the string open Example: if `class_num` is "10775", and `data` is the string dum dee dum open-stat open-status-CLOSED" tral la la then this function returns the string CLOSED Example: if `class_num` is "432" and `data` is the string ha open-status-open" open-status-never!"" then this function returns the string never! (The exclamation point must be included.) Example: if `class_num` is "432" and `data` is the string ho open-status-open" open-status-nope." then this function returns the string nope. (The number of spaces matters between the `a` and the `id` matters.) """ # STUDENTS: YOUR IMPLEMENTATION MUST CALL AND MAKE USE OF THE RETURN # VALUE OF helper functions `after` and `before_first_double_quote` # (or new helper functions you write that call them). # HINT for how to find where to begin searching in the string. # It might not work to run data.index("10775") to find the location # of '' in data. (See test case 2 in # a1test.test_open_status to see why not.) # But the following is a legal expression: # data.index('') # as is # data.index("") # Can you adapt either idea to your situation? pass # IMPLEMENT THIS FUNCTION def label(class_num, data): """Returns, as a single string, the common name, component and component number for class `class_num` according to `data`. `class_num`: string version of a class number, e.g., "10776" at Cornell. `data`: a string whose preconditions are easiest explained by example. Suppose `class_num` is "10782". Then, `data` matches the pattern ... ... class="course-repeater">CS 1110 ... data-ssr-component="DIS" data-section="208" And the function should return the string CS 1110 DIS 208 with no beginning or trailing whitespace. That is, `data` must contain somewhere within it a single occurrence of and this is followed by text where the first occurrence of the string class="course-repeater"> (the ending quote and angle-bracket is important) is followed by the common name of the course, and then the string   and the first occurrence of the string data-ssr-component=" is followed by the component, followed by a double-quote, and the first occurrence of the string data-section=" is followed by the component number followed by a double-quote. The function returns the string formed by concatenating the common name, then a space, then the component, then a space, then the component number. """ pass # IMPLEMENT THIS FUNCTION # STUDENTS: YOUR IMPLEMENTATION MUST CALL AND MAKE USE OF THE RETURN # VALUE OF helper functions `after` and `before_first_double_quote` # (or new helper functions you write that call them). # HINT: You may find it easier to develop this function incrementally, # That is, consider the following outline. # 1. Just get the function to store the common name in a variable. # 2. Once that's working, get it to store the component in another variable. # 3. Then, get it to store the component number in a third variable. # 4. Figure out how to combine the values of the three variables to # get the desired return value