Lab 5: Strings
Goals and Objectives
The main goal this lab is for you to get a more practice with Pythons's strings, loops, and comparisons.
Task
You will write several functions that perform some simple computations on strings.
Background
Strings are used to store textual information. Nearly all text you see on a computer uses strings. Strings are sequences of Unicode characters. A font defines a visual presentation (a set of glyphs) for the individual characters. Not all fonts contain glyphs for all Unicode characters.
Introductions
Introduce yourself to your lab partner(s). Tell your lab partner(s) about your favorite fall activities.
Download the lab
Download the source file Lab05.py. It contains the stubs of Python functions. Open it in the online Python environment.
Getting Started
In this lab, you will practice writing functions that process strings.
You should start off with s1 driving and s2 navigating.
Complete the functions in Lab05.py
. You should change driver/navigator roles
after each method is completed.
Seek help as soon as you are experiencing difficulty with this assignment.
Do not wait until the deadline to seek help!
# Lab 5
# Your names and email addresses here
import string
import random
# returns a copy of the input string s
# study this copy function and understand why it works!
# Talk to your instructor if you are confused about any of it.
# These are the basis of several later functions
def copy(s):
t = ""
for c in s:
t = t + c
return t
def copy2(s):
t = ""
for i in range(len(s)):
t = t + s[i]
return t
def copy3(s):
t = ""
i = 0
while i < len(s):
t = t + s[i]
i = i + 1
return t
# Create a function that takes a single string parameter
# and returns a new string that is
# the same as the original string except all vowels are
# replaced with a '*' character.
# A grawlix is a word where characters in a profanity have
# been replaced by non-pronouncable symbols.
# Comics and cartoons occasionally use grawlixes
# do not use any string functions other than len()
def stars(s):
return None
# Create a function removePunctuation that takes a single
# string parameter and returns a string containing just
# letters (no spaces, digits, or other special characters).
# do not use any string functions other than len()
def removePunctuation(s):
return None
# Create a function reverse that takes a single string parameter
# and returns a string that contains the orginal string's characters
# in reverse order.
# don't use a built-in python reverse() function!
def reverse(s):
return None
# Create a function that takes a single string parameter
# and returns true if all the letters are lowercase
# Hint: use a loop, the in operator, string.ascii_letters,
# and string.ascii_lowercase
# do not use any string functions other than len()
def allLower(s):
return None
# Create a function that takes a single string parameter
# and returns true if it contains at least one uppercase letter
# and at least one lowercase letter
# Hint: use a loop, the in operator, string.ascii_letters,
# string.ascii_lowercase, and string.ascii_uppercase
# do not use any string functions
def hasMixedCase(s):
return None
# phrase same forward of backward, excluding case,
# whitespace, and punctuation.
# use your removePunctuation() and reverse()
# use python's lower() or upper() methods:
# t = s.lower() OR t = s.upper()
def palindrome(s):
return None
# Create a function that takes a single string parameter
# and returns true if it might be considered a strong
# password:
# 1. it is at least 8 characters long
# 2. it contains at least one upper and one lower case letter
# 3. it contains at least one digit (string.digits)
# 4. At least one punctuation character (string.punctuation)
def strongPassword(s):
return None
# Create a function that takes a single string parameter
# and returns a single characters from a
# randomly generated position in the original string.
def randomChar(s):
return None
# Create a function that takes a single string parameter and
# returns a new string that is 5 characters long with each
# character in the new string coming from a randomly generated
# position in the original string.
def rand5(s):
return None
# returns binary representation of n
# Use the + operator for strings
# use //2 and %2
# 6 (ten) = 110 (two)
# don't use the binary() function!
def bits(n):
return None
# returns the scrabble score of the string, nonletters have value 0
# other letters have the values indicated below
# ignore case
# 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
# 1, 3, 3, 2, 1, 4, 2, 4, 1, 8, 5, 1, 3, 1, 1, 3, 10, 1, 1, 1, 1, 4, 4, 8, 4, 10
def scrabbleScore(s):
return None
# Don't change main
def main():
print("items of note")
print(string.ascii_letters)
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.digits)
print(string.hexdigits)
print(string.punctuation)
print()
if True:
for j in range(20):
for i in range(40):
print(random.randrange(10),end=" ")
print()
print("copy:")
print(copy("computer"))
print("#"+copy("")+"#")
print(copy2("2: computer"))
print("#"+copy2("")+"#")
print(copy3("3: computer"))
print("#"+copy3("")+"#")
print("stars:")
print(stars("shot")) # sh*t
print(stars("FORT")) # F*RT
print(stars("pass")) # p*ss
print(stars("sequoia")) # s*q****
print(stars("grawlix")) # gr*wl*x
print(stars("Why!!!")) # Why!!! - don't change y
print("removePunctuation:")
print(removePunctuation("speed of art!")) # speedofart: not at the pool!
print(removePunctuation("childrens wear!")) # children swear: uh-oh
print("reverse:")
print(reverse("live")) # evil
print(reverse("reknits")) # stinker
print(reverse("desserts")) # stressed
print(reverse("12345")) # 54321
print("allLower:")
print(allLower("")) # true
print(allLower("computer")) # true
print(allLower("cOmPuTeR")) # false
print(allLower("Computer")) # false
print(allLower("computeR")) # false
print("hasMixedCase:")
print(hasMixedCase("")) # false
print(hasMixedCase("computer")) # false
print(hasMixedCase("cOmPuTeR")) # true
print(hasMixedCase("Computer")) # true
print(hasMixedCase("computeR")) # true
print(hasMixedCase("COMPUTER")) # false
print(hasMixedCase("ABC123")) # false
print(hasMixedCase("abc123")) # false
print(hasMixedCase("Albion, MI 49224")) # true
print("palindrome:")
print(palindrome("bob")) # true
print(palindrome("dave")) # false
print(palindrome("A man, a plan, a canal: Panama.")) # true
print(palindrome("Oozy rat in a sanitary zoo.")) # true
print(palindrome("computer science")) # false
print("strongPassword:")
print(strongPassword("hexagon")) # false
print(strongPassword("Hexagon")) # false
print(strongPassword("abcd1234")) # false
print(strongPassword("Abcd1234")) # false
print(strongPassword("ABC-1234")) # false
print(strongPassword("ABC-1234")) # false
print(strongPassword("Triangle123!")) # true
print("randomChar:")
print(randomChar(string.ascii_lowercase)) # a - maybe
print(randomChar(string.ascii_uppercase)) # B - maybe
print(randomChar(string.ascii_letters)) # c - maybe
print(randomChar(string.ascii_letters)) # D - maybe
print(randomChar(string.digits)) # 7 - maybe
print(randomChar("albion")) # n - maybe
print("rand5:")
print(rand5(string.ascii_lowercase)) # bkfst - maybe
print(rand5(string.ascii_uppercase)) # BKFST - maybe
print(rand5(string.ascii_letters)) # BkFsT - maybe
print(rand5(string.digits)) # 13579 - maybe
print(rand5("abcdefghijklmnopqurstuvwxyz")) # lunch - maybe
print(rand5("abcdefghijklmnopqurstuvwxyz")) # super - maybe
print(rand5("abcdefghijklmnopqurstuvwxyz")) # snack - maybe
print(rand5("a")) # aaaaa
print("bits(0) =", bits(0), "should equal", bin(0)[2:]) # 0
print("bits(1) =", bits(1), "should equal", bin(1)[2:]) # 1
print("bits(2) =", bits(2), "should equal", bin(2)[2:]) # 10
print("bits(6) =", bits(6), "should equal", bin(6)[2:]) # 110
print("bits(10) =", bits(10), "should equal", bin(10)[2:]) # 1010
print("bits(127) =", bits(127), "should equal", bin(127)[2:]) # 1111111
print("scrabbleScore:")
print(scrabbleScore("compute")) # 13
print(scrabbleScore("quiz")) # 22
print(scrabbleScore("Pack my box with five dozen liquor jugs.")) # 93
main()
Have Fun!
Final Steps
When done, email you lab partner and instructor your lab (.py file).