# let us create a test string
testString1 = "Hello World!"
print "Original String: "+ testString1
# Print this string in lower case
# Converting a string to lower case
print "Converting to LowerCase"
print testString1.lower()
# Converting a string to upper case
print "Converting to Upper Case"
print testString1.upper()
# Capitalizing a string
# Only the first letter in the string will be capitalized
print "Capitalizing the String"
print testString1.capitalize()
# Trying to slice out a substring between given indexes
print "Substring from index 1 to 7"
print testString1[1:8]
#Substring from the start till character at index = 7 (start of string is index 0)
print "Substring from the start till character at index = 7 (start of string is index 0): "
print testString1[:8]
#Substring from the character at index = 7, till the end of the string (remember: start of string is index 0)
print "Substring from the character at index = 7, till the end of the string (remember: start of string is index 0): "
print testString1[7:]
#Find the position of a substring within the string
#This gives us the first index during a left to right scan. If the string is not found, it returns -1
print "Find the index from which the substring 'llo' begins within the test string"
print testString1.find('llo')
print "Now, let's look for a substring which is not a part of the given string"
print testString1.find('xxy')
# Now, trying to find the index of a substring between specified indexes only
print "Now, trying to find a substring between specified indexes only: looking for 'l' between 4 and 9"
print testString1.find('l',4,9)
# rfind is used, to find the index from the reverse
# So, testString1.rfind('l') will look for the last index of l in the string
print "find('l') on the given string returns the following index (scanning the string from left to right):"
print testString1.find('l')
print "rfind('l') on the given string returns the following index (this scans the string from right to left):"
print testString1.rfind('l')
# Now let us try to replace/substitute a substring of this string with another string
print "Replacing World with Planet"
print testString1.replace("World","Planet")
# Now let us try to split the string, into separate words
# let us split it wherever there is a space
print "Splitting the string into words, wherever there is a space"
print testString1.split(" ")
print testString1.rsplit(" ")
# Remove leading and trailing whitespace characters
testString2 = "Hello World! "
print "Current Test String=" + testString2
print "Length (there are whitespaces at the end):" + `len(testString2)`
print "Length after stripping "+ `len(testString2.strip())`
txt = "this is a wild string"
print(txt.replace("i", "x")) # print string with all i characters replaced with x
print(txt.replace("i", "x", 2)) # print string with first two i characters found with x
print(txt.upper()) # print string in all uppercase letters
print(txt.lower()) # print string in all uppercase letters
print(ord('A')) # print the ordinal value of a character
print(chr(95)) # print character from its ordinal value
print('Yes' * 5) # print string Yes 5 times
# Reference strings by index
print(txt[0]) # print first letter of string from starting index
print(txt[0:2]) # print first two letters from starting index
print(txt[1:]) # print all characters except the first letter
print(txt[0::2]) # print every second character
print(txt[::-1]) # print string in reverse
print(txt[-1]) # print the last character in a string
print(txt[-2:]) # print the last who characters in a string
# check if a wild is found in txt
if "wild" in txt:
print("wild is found in txt")
# check if a blah is not found in txt
if "blah" not in txt:
print("is not found in txt")
# Check if txt starts with this
if txt.startswith("this"):
print("Starts with this")
# check if txt ends with ing
if txt.endswith("ing"):
print("Ends with ing")
# Split a string into a tuple when the delimiter is first encountered
txt = 'random-data'
data_split = txt.partition('-')
print(data_split)
# output ('random', '-', 'data')
len(txt) # Return length of string
# loop through each character in string
for char in txt:
print(char)
# Display price with commas and 2 digit precision
price = 9749000
display_price = f"My price {price:,.2f}"
print(display_price)
fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
fruits.count('apple') # count number of apples found in list
# output 2
fruits.count('tangerine') # count number of tangerines in list
# output 0
fruits.index('banana') # find the first index of banana
# output 3
fruits.index('banana', 4) # Find next banana starting a position 4
# output 6
fruits.reverse() # reverse fruits array
fruits
# output ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange']
fruits.append('grape') # append grape at the end of array
fruits
# output ['banana', 'apple', 'kiwi', 'banana', 'pear', 'apple', 'orange', 'grape']
fruits.sort()
fruits
# output ['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear']
len(fruits) # length of fruits array
# output 8
# loop and print each fruit
for fruit in fruits:
print(fruit)
empty_set = set()
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # show that duplicates have been removed
# output {'orange', 'banana', 'pear', 'apple'}
# check if orange is in basket set
print('orange' in basket)
# output true
# convert a string to a set of letters - sets contains no duplicates
set_a = set('abcd')
set_b = set('bcde')
# the operations below returns new sets
# print letters in set_a but not in set_b - difference
print(set_a - set_b)
# output {'a'}
# print set letters that is in either set a or b - union
print(set_a | set_b)
# output {'a', 'c', 'e', 'b', 'd'}
# print letters that are in both set_a and set_b - intersection
print(set_a & set_b)
# output {'c', 'd', 'b'}
# print letters that are in set_a and set_b when the letters are found in a set but no the other set - symmetric_difference()
print(set_a ^ set_b)
# output {'a', 'e'}
# Creating dictionaries
dict1 = {'color': 'blue', 'shape': 'square', 'volume': 40}
dict2 = {'color': 'red', 'edges': 4, 'perimeter': 15}
# Creating new pairs and updating old ones
dict1['area'] = 25 # {'color': 'blue', 'shape': 'square', 'volume': 40, 'area': 25}
dict2['perimeter'] = 20 # {'color': 'red', 'edges': 4, 'perimeter': 20}
# Accessing values through keys - an KeyError will occur if the key does not exists
print(dict1['shape'])
# You can also use get, which doesn't cause an exception when the key is not found
dict1.get('false_key') # returns None
dict1.get('false_key', "key not found") # returns the custom message that you wrote
# Delete item key and return the value if the key does not exists a KeyError occurs
print(dict1.pop('volume'))
# Merging two dictionaries
dict1.update(dict2) # if a key exists in both, it takes the value of the second dict
dict1 # {'color': 'red', 'shape': 'square', 'area': 25, 'edges': 4, 'perimeter': 20}
# Getting only the values, keys or both (can be used in loops)
dict1.values() # dict_values(['red', 'square', 25, 4, 20])
dict1.keys() # dict_keys(['color', 'shape', 'area', 'edges', 'perimeter'])
dict1.items()
# dict_items([('color', 'red'), ('shape', 'square'), ('area', 25), ('edges', 4), ('perimeter', 20)])
# create a shallow copy of dict1
dict3 = dict1.copy()
# dict3 = {'color': 'red', 'shape': 'square', 'area': 25, 'edges': 4, 'perimeter': 20}