1,760
edits
Changes
no edit summary
<font color='red'>
'''** DO NOT USE - TO BE UPDATED FOR CENTOS 8.0 **'''
</font>
= OBJECTIVES =
:The '''first investigation''' in this lab will focus on '''Data Structures'''. Each data structure has its own advantages and limitations. This lab will provide you will additional scripting tools to help us write even more effective Python scripts to be applied to practical application involving VM management and deployment in future labsemphasize the most important differences between them.
:The '''first second investigation''' in this lab will focus on '''Data Structures'''. In Wikipedia (http://searchsqlserverstrings.techtarget.com/definition/data-structure)<br>''"A data structure is defined as a specialized format for organizing You have been using and storing datastrings since our first class, however in this lab we will dive into the more complex nature of string manipulation. Any data structure is designed to organize data Finally, this lab will cover how to suit use a specific purpose so that it can be accessed variety of regular expression functions for searching and worked with in appropriate waysinput validation."''
:The '''second investigation''' will focus closely on strings. You have been using and storing strings since our first classAs you develop your Python scripting skills, however in this lab we will dive into you may start to be "overwhelmed" with the more complex nature volume of string manipulationinformation that you have absorbed over these labs. Finally, this lab will cover how One way to help is to learn to use a variety of different regular expression functions, for searching online references effectively in order to obtain information regarding Python scripting techniques and input validationtools. === PYTHON REFERENCE ===
:As you develop your Below is a table with links to useful online Python scripting skills, you reference sites (by category). You may start to be "overwhelmed" with the volume of information that you have absorbed over find these labs. One way to help, is to write what you have learned in your labs into your lab logbook. Alsoreferences useful when performing assignments, in programming, it is important to use online references in order to obtain information regarding Python scripting techniques and toolsetc.
|- style="border: 2px solid black;font-weight:bold;text-align:center;"
| style="border: 2px solid black;" | Data Structures
|- style="background-color:white;border:none;"
| style="border: 2px solid black;" valign="top"| :*[https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences Tuples]<br> :*[https://docs.python.org/3/tutorial/datastructures.html#sets Sets]| style="border: 2px solid black;" | :*[https://docs.python.org/3/tutorial/introduction.html#lists Lists]<br>:*[https://docs.python.org/3/tutorial/datastructures.html#more-on-lists More on Lists]<br>:*[https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions List Comprehensions]| style="border: 2px solid black;" valign="top"| :*[https://docs.python.org/3/tutorial/introduction.html#strings Strings]<br>:*[https://docs.python.org/3/library/string.html String Comparisons]| style="border: 2px solid black;" valign="top"| :*[https://docs.python.org/3/library/re.html Regular Expression Operations]<br>:*[https://docs.python.org/3/howto/regex.html Regular Expressions (HOWTO)]| style="border: 2px solid black;" valign="top"| :*[https://docs.python.org/3/tutorial/datastructures.html#dictionaries Dictionaries]
|}
= INVESTIGATION 1: DATA STRUCTURES =
:In this investigation, you will learn several data structures commonly used in Python scripting. These tools include '''lists''', '''tuples''', '''sets''', and '''dictionaries'''. == PART 1 - Tuple Tuples == :Many often confuse a '''tuple''' with a '''list''' (which you learned about in a previous lab). A Python Tuple '''tuple''' is a number type of immutable Python list whose valuescannot be changed. This is similar to In fact, nothing in a tuple can be changed after it's created (like adding, removing list elements). :There are many advantages to using tuples when creating Python scripts: ::*'''Data protection''' (eg. values are are NOT allowed to change so you won't modify them accidentally)::*Tuples can be used as '''keys in data dictionaries''' (which are NOT allowed to change)::*Tuples allow for '''faster access''' than lists :The term to indicate that a lot of ways, except that, data structure cannot be changed is called '''immutable''' (as opposed to ''"mutable"'' which means the value inside cannot data structure can be changed).
:'''Perform the Following Steps:'''
:#Start by opening the ipython3 shellLet's create two tuples in a temporary Python file, so we can learn how to use them and learn how they differ from lists.<sourcebr>ipython</sourcebr>Note:#Create two '''tuples are defined by using parenthesis ( )''' as opposed to experiment with'''lists which are defined by using square brackets [ ]'''<sourcelang="python">
t1 = ('Prime', 'Ix', 'Secundus', 'Caladan')
t2 = (1, 2, 3, 4, 5, 6)
</source>
:#Values from a tuple can be retreived retrieved in the same way as a list.For example:<sourcelang="python">print(t1[0])print(t2[2:4])</source>:#You can also check to see whether a value exists inside a tuple or not. To demonstrate try:<source lang="python">print('Ix' in t1)print('Geidi' in t1)</source>Let's now see how a tuple differs from a list. We will now create a list and note the difference between them:<source lang="python">list2 = [ 'uli101', 'ops235', 'ops335', 'ops435', 'ops535', 'ops635' ]
</source>
:#Or check See if a you can change the value exists inside a tuple.of your list:<sourcelang="python">list2[0]= 'Ixica100' in t1'Geidi' in t1print(list2[0])print(list2)</source>You should have been successful in changing the value of your list.<br><br> :#Try Now, try changing a the value of your previously-created tuple value.:<sourcelang="python">
t2[1] = 10
</source>:#Did it work? Once created the tuple values will not be able to change. <br><br>If you would like a tuple with different values than the tuple you currently have, then you must create a new one.<br><br>:#The following creates a new tuple (t3) with a contents from a slice of the t2 tuple. Slicing works the same way for tuples as for lists:<sourcelang="python">
t3 = t2[2:3]
</source>
:#You however can still use most of the basic operations you might expect from tuples.<source>len(t1) # list the length of the tuplet1 * 3 # repititiont1 + t2 # concatenation, remember this is creating a new tupleAlso, not modifying</source>:#Like as with lists, you can also loop through use for loops to iterate the values of tuples.:<sourcelang="python">
for item in t1:
print('item: ' + item)
== PART 2 - Sets ==
:So far, you have been exposed to two structures that are used to contain data:''lists'Perform ' and ''tuples''. You can modify the values within a list as well as modify the Following Stepsstructure of a list (i.e. add and remove elements), whereby you cannot with a tuple. :In this section, you will learn about '''sets'''. A set has similar characteristics as a list, but there are two major differing characteristics: ::*Sets are '''un-ordered''':#Start the ipython3 shell:<source>*Sets '''cannot contain duplicate values'''ipython3</source>:Since new duplicate entries will be automatically removed when using sets, they are very useful for performing tasks such as '''comparisons''': '''finding similarities or differences in multiple sets'''. :#Create a couple some sets to work with.in a temporary Python file:<sourcelang="python">
s1 = {'Prime', 'Ix', 'Secundus', 'Caladan'}
s2 = {1, 2, 3, 4, 5}
s3 = {4, 5, 6, 7, 8}
</source>Note: '''Sets are defined by using braces { }''' as opposed to tuples which use parenthesis ( ), or lists which use square brackets [ ]'''<br /><br />
:#Try to access a set through the index:<source lang="python">
print(s1[0])
</source>This should have caused an '''error'''. You cannot access data inside a set this way because the elements inside are '''unordered'''. Instead, you should use the '''in''' method to check to see whether a value is contained in the set:<source lang="python">
print('Ix' in s1)
print('Geidi' in s1)
</source><br>'''Sets can be combined''', but it is important to note that any '''duplicate values (shared among sets) will be deleted'''.<br><br>
:#Print the contents of the sets and note the values that are common:<source lang="python">
print(s2)
print(s3)
</source>
</source>
:#In order to see every difference between both Sets can also have their values compared against other sets, . First find the symmetric differenceout what items are in '''s2''' but not in '''s3'''. This will return is also called a set that shows all numbers that both sets do not share together.'''difference''':<sourcelang="python">print(s2)print(s3)print(s2 ^ - s3 ) # returns a set containing all values in s2 that both sets DO NOT shareare not found in s3print(s2.symmetric_differencedifference(s3) ) # same as s2 ^ - s3
</source>
:#These powerful features can be useful and efficient, try applying them In order to lists. Lists cannot perform these operations on themsee <u>every</u> difference between both sets, instead we have you need to convert find the lists into '''symmetric difference'''. This will return a set that shows all numbers that both sets do not share together:<source lang="python">print(s2 ^ s3) # returns a set containing all values that both setsDO NOT shareprint(s2. Perform symmetric_difference(s3)) # same as s2 ^ s3</source>Note: the comparision then '''set()''' function can convert lists into sets, and the '''list back to a set()''' function can convert sets into lists. There are two problems with doing The operations in this: Firstsection can only be applied to sets, sets are unordered so if the list order is important this will cause problems and remove orderyou need to perform a union, secondintersection, sets cannot contain duplicate valuesor difference between lists, if the list contains any duplicate values they will be deleted. However, if the list does not have any of the above requirements this is a great solution you need to convert them to some problemssets first.For example:<sourcelang="python">
l2 = [1, 2, 3, 4, 5]
l3 = [4, 5, 6, 7, 8]
</source>
:'''Perform the Following Instructions'''
#!/usr/bin/env python3
def join_sets(set1s1, set2s2): # join_sets will return a set that has contains every value from both set1 s1 and set2 inside its2
def match_sets(set1s1, set2s2): # match_sets will return a set that contains all values found in both set1 s1 and set2s2
def diff_sets(set1s1, set2s2):
# diff_sets will return a set that contains all different values which are not shared between the sets
</source>
set1: {1, 2, 3, 4, 5, 6, 7, 8, 9}
set2: {5, 6, 7, 8, 9, 10, 11, 12, 13, 14}
diff: {1, 2, 3, 4, 10, 11, 12, 13, 14}
</source>
import lab4a
set1 = {1,2,3,4,5}
set2 = {2,1,0,-1,-2}
print(lab4a.join_sets(set1,set2))# Will output {-2, -1, 0, 1, 2, 3, 4, 5}print(lab4a.match_sets(set1,set2))# Will output {1, 2}print(lab4a.diff_sets(set1,set2))# Will output {-2, -1, 0, 3, 4, 5}
</source>
<ol><li value='3' style="margin-left:::3. Exit the ipython3 shell, download 25px;">Download the checking script and check your work. Enter the following commands from the bash shell.:<sourcelang="bash">
cd ~/ops435/lab4/
pwd #confirm that you are in the right directory
ls CheckLab4.py || wget matrix.senecachttps://raw.ongithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab4.py
python3 ./CheckLab4.py -f -v lab4a
</source></li><li style="margin-left:::4. 25px;">Before proceeding, make certain that you identify any and all errors in lab4a.py. When the checking script tells you everything is OK before proceeding - proceed to the next step.</li></ol>
:'''Perform the Following Instructions'''
#!/usr/bin/env python3
def join_lists(list1l1, list2l2): # join_lists will return a list that contains every value from both list1 l1 and list2 inside itl2
def match_lists(list1l1, list2l2): # match_lists will return a list that contains all values found in both list1 l1 and list2l2
def diff_lists(list1l1, list2l2):
# diff_lists will return a list that contains all different values, which are not shared between the lists
print('diff: ', diff_lists(list1, list2))
</source>
list1: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list2: [5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
join: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
match: [8, 9, 5, 6, 7, 8, 9]
diff: [1, 2, 3, 4, 10, 11, 12, 13, 14]
</source>
import lab4b
list1 = [1,2,3,4,5]
list2 = [2,1,0,-1,-2]
print(lab4b.join_lists(list1,list2)))# Will output [0, 1, 2, 3, 4, 5, -2, -1]print(lab4b.match_lists(list1,list2) ) # Will output [81, 9, 5, 6, 72]print(lab4b.diff_lists(list1,list2) ) # Will output [1, 20, 3, 4, 105, 11-2, 12, 13, 14-1]
</source>
cd ~/ops435/lab4/
pwd #confirm that you are in the right directory
python3 ./CheckLab4.py -f -v lab4b
</source>
::'''Perform the Following Steps:'''::#Start the ipython3 shell:<source>ipython3</source>::#Start Let's begin by creating a new dictionary to practice within a temporary Python file:<sourcelang="python">
dict_york = {'Address': '70 The Pond Rd', 'City': 'Toronto', 'Postal Code': 'M3J3M6'}
</source>::#The You should note that the syntax here to define a dictionary is similar to use defining sets (i.e. using '''{}''' to create a ), but unlike sets dictionaries use '''<code>key:value</code>''' pairs within the dictionary and placing , each ''key:value pairs inside '' pair is separated by commas.::#Take All the values in a close look at all the available functions available to dictionary objects<source>dir(dict_york)help(dict_york)</source>::#All values can be viewed retrieved by using the '''dictionary.values() ''' function. This particular function provides a '''list''' containing all values:<sourcelang="python">helpprint(dict_york.values()dict_york.values()</source>::#All keys to access the ''key:pair'' values within a dictionary can be viewed by retrieved using the '''dictionary.keys() function. This function provides a '''list''' containing all keysfunction:<sourcelang="python">help(dict_york.keys)
dict_york.keys()
</source>We can retrieve <u>individual</u> values from a dictionary by providing the key associated with the value:<source lang="python">
print(dict_york['Address'])
print(dict_york['Postal Code'])
</source>
::#We Dictionary keys can retrieve individual values from a dictionary by provide the key associated with the value<source>dict_york[be any '''Addressimmutable']dict_york['Postal Code']</source>::#Dictionary keys can values (i.e. not permitted for value to be any immutable changed). Types of values, such asinclude: '''strings''', '''numbers''', and '''tuples'''. Trying ::#Try adding a couple new keys key and values value to the dictionary:<sourcelang="python">
dict_york['Country'] = 'Canada'
print(dict_york)print(dict_york.values())print(dict_york.keys())
</source>
::#Study Let's change the output and add another keyprovince value to BC:value pair<sourcelang="python">
dict_york['Province'] = 'BC'
print(dict_york)print(dict_york.values())print(dict_york.keys())</source>:'''WARNING:#Dictionary keys must be unique'''. Attempting to add a key that already exists in the dictionary will <u>overwrite </u> the existing value for that key! For example:<sourcelang="python">
dict_york['Province'] = 'ON'
print(dict_york)print(dict_york.values())print(dict_york.keys())</source>::#These You should notice that value for the 'Province' key has been changed back to 'ON'.<br><br>The lists that contain the values and keys of the dictionary are not <u>real </u> python lists, - they are view "views of the dictionary::#However we can " and therefore are <u>immutable</u>. You could change these from views into usable lists by using the '''list() ''' function, the index can be used to access individual values:<sourcelang="python">
list_of_keys = list(dict_york.keys())
print(list_of_keys[0]</source> ::#Lists can be changed into sets if we would like to perform comparisons with another set<source>set_of_keys = set(dict_york.keys())set_of_values = set(dict_york.values())set_of_keys | set_of_values
</source>
::#The lists Lists can be iterated over in a used with '''for looploops''':<sourcelang="python">
list_of_keys = list(dict_york.keys())
for key in list_of_keys:
print(key)
for value in dict_york.values():
print(value)
</source>
:'''Perform the Following Instructions'''
::#Create the '''~/ops435/lab4/lab4c.py''' script. The purpose of this script will be to create dictionaries, extract data from dictionaries, and to make comparisons between dictionaries.
::#Use the following as a template:<sourcelang="python">
#!/usr/bin/env python3
def create_dictionary(keys, values):
# Place code here- refer to function specifics in section below
def shared_values(dict1, dict2):
# Place code here- refer to function specifics in section below
if __name__ == '__main__':
york = create_dictionary(list_keys, list_values)
print('York: ', york)
common = shared_values(dict_york, dict_newnham)
print('Shared Values', common)
</source>
:::*The script should contain '''threetwo''' functions::::*::'''create_dictionary() '''<ol><li>'''accepts ''' two lists as arguments keys and values, '''combines ''' these lists together to '''create ''' a dictionary<br>('''Tip:::*create_dictionary(''' use a while loop to access elements in both the keys and values lists at the same time) </li><li>'''returns a dictionary''' that has the keys and associated values from the lists</li></ol>:::*split_dictionary() accepts a single dictionary as a argument and splits the dictionary into two lists, keys and values:::*split_dictionary'''shared_values() '''returns two lists<ol><li>''': return keys, values:::*shared_values() accepts ''' two dictionaries as arguments and '''finds ''' all values that are shared between the two dictionaries<br>('''Tip:::*shared_values(''' generate sets containing only values for each dictionary, then use a function mentioned in a previous section to store the values that are common to <u>both</u> lists) </li><li>'''returns a set''' containing '''ONLY values ''' found in '''BOTH dictionaries'''</li></ol>
:::*make sure the functions have the correct number of arguments required
:::*The script should show the exact output as the samples
:::*The script should contain no errors
::::'''Sample Run 1:'''<source>
York: {'Country': 'Canada', 'Postal Code': 'M3J3M6', 'Address': '70 The Pond Rd', 'Province': 'ON', 'City': 'Toronto'}
Shared Values {'Canada', 'ON', 'Toronto'}
</source>
::::'''Sample Run 2(with import):'''<source>
import lab4c
dict_york = {'Address': '70 The Pond Rd', 'City': 'Toronto', 'Country': 'Canada', 'Postal Code': 'M3J3M6', 'Province': 'ON'}
list_values = ['70 The Pond Rd', 'Toronto', 'Canada', 'M3J3M6', 'ON']
york = lab4c.create_dictionary(list_keys, list_values) york{'Address': '70 The Pond Rd', 'City': 'Toronto', 'Country': 'Canada', 'Postal Code': 'M3J3M6', 'Province': 'ON'} keys, values = split_dictionary(dict_newnham)
</source>
:::3. Exit the ipython3 shell, download Download the checking script and check your work. Enter the following commands from the bash shell.<sourcelang="bash">
cd ~/ops435/lab4/
pwd #confirm that you are in the right directory
ls CheckLab4.py || wget matrix.senecachttps://raw.ongithubusercontent.cacom/~acoatleySeneca-willisCDOT/ops435/master/LabCheckScripts/CheckLab4.py
python3 ./CheckLab4.py -f -v lab4c
</source>
:::4. Before proceeding, make certain that you identify any and all errors in lab4c.py. When the checking script tells you everything is OK before proceeding proceed to the next step.
= INVESTIGATION 2: STRINGS =
:Strings are basically a list of characters (bits of text). This section will investigate strings in more detail such as '''cutting strings into sub-strings''', '''joining strings''', '''formatting strings''', '''searching through strings''', and '''matching strings against patterns'''.<br><br>Strings are '''immutable''' data objects - this means that once a string is created, it <u>cannot</u> be modified. In order to make a change inside a string, you would first make a copy of the part of the string (i.e. sub-string) for manipulation.
== PART 4 1 - List Comprehension Strings and Substrings ==:We've already covered lists to a degree. Lets move into more advanced functions to use and generate lists. This is a very common practice in Pythonfirst part will explain basic concepts of using strings, understanding how to generate, manipulateprinting strings, and apply functions to items inside a list can be incredibly useful. List comprehension is a way to build new lists from existing list and to do it faster than simply looping over listsmanipulating sub-strings.
:'''Perform the Following Steps:''':#Create some strings in a temporary Python file:<source lang="python">course_name = 'Open System Automation'course_code = 'OPS435'course_number = 435</source>Strings can contain any '''characters''' inside them, whether they are '''letters''', '''numbers''', or '''symbols'''.:#Strings can also be '''concatenated''' (i.e. "combined together") by using the '''+''' sign, just make sure string are only concatenating strings with strings (no lists, no numbers, no dictionaries, etc.):<source lang="python">print(course_name)print(course_code)print(str(course_number))print(course_name + ''+ course_code + '' + str(course_number))</source>When using the '''print()''' function, you can display '''special characters'''. One such special character is the is the newline character (denoted by the symbol: '''\n'''). This allows you to separate content between new lines or empty lines:<source lang="python">print('Line 1\nLine 2\nLine 3\n')</source>:#Strings have many built-in functions that we can use to manipulate text. [https://docs.python.org/3/library/stdtypes.html#string-methods Here's a list].:#Lets start try out several different functions:<source lang="python">print(course_name.lower()) # Returns a string in lower-case lettersprint(course_name.upper()) # Returns a string in upper-case lettersprint(course_name.swapcase()) # Returns a string with upper-case and lower-case letters swappedprint(course_name.title()) # Returns a string with creating upper-case first letter of each word, lowercase for remaining textprint(course_name.capitalize()) # Returns a string with upper-case first letter only, lowercase for remaining text</source>:#These values can be saved inside new strings and then reused:<source lang="python">lower_name = course_name.lower() # Save returned string lower-case string inside new string variableprint(lower_name)</source>:#If a string contains many values separated by a single character, such as a space, the string can be split on those values and create a list and applying some of values<source>lower_name.split(' ') # Provide the split() function with a character to each split on</source>The above example will return a list of strings, which we can access just like all of lists. <br><br>:#Let's practice more string manipulation:<source lang="python">list_of_strings = lower_name.split(' ') # Split string on spaces and store the list in a variableprint(list_of_strings) # Display listprint(list_of_strings[0]) # Display first item in list</source>Since lists are actually a list of '''strings''', you should be able to use any function that works with a string on a list:<source lang="python">list_of_strings[0].upper() # Use the function after the index to affect a single string within a listfirst_word = list_of_strings[0]print(first_word)</source>The '''index''' that is used to access <u>items</u> within a list, can also be used to access <u>characters</u> within a string. The below will For practice, let's create a new string, and start accessing the strings index:<source>course_name = 'Open System Automation'course_code = 'OPS435'course_number = 435print(course_code[0]) # Print the first character in course_codeprint(course_code[2]) # Print the third character in course_codeprint(course_code[-1]) # Print the last character in course_codeprint(str(course_number)[0]) # Turn the integer into a string, return first character in that string, and print itprint (course_code[0] + course_code[1] + course_code[2])</source>:#You can use a technique that uses index numbers of a string to '''cut-out the square ''' or '''"parse"''' smaller portions of each itemtext within a string. This term is referred to as a '''substring'''.We can use this to create a new string or display only a small portion of it:<sourcelang="python">l1 = print(course_name[0:4]) # Print the first four characters (values of index numbers 0,1, 2, and 3) first_word = course_name[0:4] # Save this substring for later useprint(course_code[0:3]) # Print the first three characters (values of index numbers 0, 41, and 2)</source>:# The index allows a few '''extra functions''' using the same parsing technique:<source lang="python">course_name = 'Open System Automation'print(course_name[12:]) # Print the substring '12' index until end of stringprint(course_name[5:]) # Print the substring '5' index until end of stringprint(course_name[-1]) # Print the last characterfor item in l1</source>With '''negative indices''', '''-1''' would represent the '''last''' character, '''-2''' index would represent the '''second last''' character, etc.:<source lang="python">course_name = 'Open System Automation'print(course_name[-1]) print(item ** course_name[-2])
</source>
:#To store these squares for later use, create a new list and append Practice some of the squares to it. This will generate a new list skills that contains squared values you have learned in the same positions of the first list. This is using an existing list to create a new list.this section:<source>l1 course_name = 'Open System Automation'print(course_name[1, 2, 3, -10:]) # Return the last ten charactersprint(course_name[-10:-6]) # Try and figure out what this is returning print(course_name[0:4, 5]+ course_name[-10:-6]) # Combine substrings togetherl2 substring = course_name[0:4]+ course_name[-10:-6] # Save the combined substring as a new string for item in l1:later l2.appendprint(item ** 2substring)l1l2
</source>
:#Move the squaring The real power found in substrings goes beyond just manually writing index values and getting back words. The next part of numbers out into it's own separate function. While the squaring example is this investigation will cover how to search through a string for a simple functionspecific word, this example could include a more complex function letter, number, and return the index to that does more processing on each item in the listsearch result.<source>def square(number): return number ** 2
</source>
</source>
:#Using the list comprehensions above our code will be faster and more efficient than using multiple variables and loops.::'''Sample Run 2 (with import)'''<source>import lab4d
str1 = INVESTIGATION 2: STRINGS 'Hello World!!'str2 = 'Seneca College'num1 =1500:Strings are in their most basic form a list of characters, or a bit of text. Strings store text so that we can use them later. In this section we will cover more than just displaying that text to the screen. Here, we will go over cutting strings into sub-strings, joining strings together, searching through strings, and matching strings against patternsnum2 = 1.50
</source>
</source>
::4. Before proceeding, make certain that you identify all errors in lab4d.py. When the checking script tells you everything is OK -->== PART 1 - String Manipulation == == PART 1 - Regular Expressions ==proceed to the next step.
= LAB 4 SIGN-OFF (SHOW INSTRUCTOR) =
:'''Have Ready to Show Your Instructor:'''
::<span style="color:green;font-size:1.5em;">✓</span> xOutput of: <code>./CheckLab4.py -f -v</code>::<span style="color:green;font-size:1.5em;">✓</span> x:Output of:<span style="color:green;font-size:1code>cat lab4a.py lab4b.py lab4c.py lab4d.5em;">✓py</spancode> Lab4 logbook notes completed = LAB REVIEW =
# What is the purpose of a '''tuple'''? How does a tuple differ from a list?# How do you define elements within a tuple?# Write Python code to confirm if the string ''''OPS435'''' exists within the tuple called '''courses'''.# What is the purpose of a '''set'''? How do sets differ from lists or tuples?# How do you define elements within a set?# Assuming you have defined two sets called '''set1''' and '''set2'''. Write Python code to:<ol type= Practice For Quizzes"a"><li>Return a set containing all values of both sets</li><li>Returns a set containing all values in set1 that are not found in set2</li><li>Return a set containing all values that both sets DO NOT share</li></ol># What is the purpose of a dictionary?# How do you define elements within a dictionary?# Write Python commands to display for a dictionary called '''my_dictionary''' the dictionary key called '''my_key''' and a dictionary value for that key?# What is the purpose for the '''range()''', Tests'''len()''', Midterm & Final Exam '''append()''', and '''map()''' functions for a dictionary?# List and briefly explain the following functions (methods) that can be used with strings:<br>'''lower()''' , '''upper()''' , '''swapcase()''' , '''title()''' , '''captilize()''' , '''split()'''# Assume you issued the following command in your ipython3 shell:<br>'''course_name = 'Programming with Python''''<br>What will be the output for each of the following Python commands?<ol type="a"><li>'''course_name[3:11]'''</li><li>'''course_name[10:]'''</li><li>'''course_name[-1]</li></ol>