# A. donuts
# Given an int count of a number of donuts, return a string
# of the form 'Number of donuts: <count>', where <count> is the number
# passed in. However, if the count is 10 or more, then use the word 'many'
# instead of the actual count.
# So donuts(5) returns 'Number of donuts: 5'
# and donuts(23) returns 'Number of donuts: many'
def donuts(count):
if count >= 10 :
print('Number of donuts: many')
else :
print('Number of donuts: %d '%(count))
#print('Number of donuts: %d ',%(count))
return
# B. both_ends
# Given a string s, return a string made of the first 2
# and the last 2 chars of the original string,
# so 'spring' yields 'spng'. However, if the string length
# is less than 2, return instead the empty string.
def both_ends(s):
'''l = len(s)
if l >= 2:
return s[:2] + s[(l-2):]
else :
return ''
'''
#return l >= 2?(s[:2] + s[(l-2):]):'' invalid
return s[:2] + s[(len(s)-2):] if len(s) >= 2 else ''
# C. fix_start
# Given a string s, return a string
# where all occurences of its first char have
# been changed to '*', except do not change
# the first char itself.
# e.g. 'babble' yields 'ba**le'
# Assume that the string is length 1 or more.
# Hint: s.replace(stra, strb) returns a version of string s
# where all instances of stra have been replaced by strb.
'''def fix_start(s):
l = len(s)
i = 1
while i < l:
if s[0] == s[i]:
s = s.replace(s[i],"*")
print('this is %d to replace with * and output of this time is %s'%(i,s))
i += 1
else:
i += 1
continue
return s
def fix_start(s):
l = len(s)
i = 1
f = s[0]
print('s[0]: ',s[0])
while i < l:
if s[i] == f:
s = s.replace(s[i],"*")
print('this is %d to replace with * and output of this time is %s'%(i,s))
i += 1
else:
i += 1
continue
return s'''
def fix_start(s):
return s[0] + s[1:].replace(s[0],'*')
# D. MixUp
# Given strings a and b, return a single string with a and b separated
# by a space '<a> <b>', except swap the first 2 chars of each string.
# e.g.
# 'mix', pod' -> 'pox mid'
# 'dog', 'dinner' -> 'dig donner'
# Assume a and b are length 2 or more.
def mix_up(a, b):
temp = a[:2]
a = a.replace(a[:2],b[:2])
b = b.replace(b[:2],temp)
c = a + ' ' + b
return c
# Provided simple test() function used in main() to print
# what each function returns vs. what it's supposed to return.
def test(got, expected):
if got == expected:
prefix = ' OK '
else:
prefix = ' X '
print('%s got: %s expected: %s' % (prefix, repr(got), repr(expected)))
# Provided main() calls the above functions with interesting inputs,
# using test() to check if each result is correct or not.
def main():
print('donuts')
# Each line calls donuts, compares its result to the expected for that call.
test(donuts(4), 'Number of donuts: 4')
test(donuts(9), 'Number of donuts: 9')
test(donuts(10), 'Number of donuts: many')
test(donuts(99), 'Number of donuts: many')
print
print('both_ends')
test(both_ends('spring'), 'spng')
test(both_ends('Hello'), 'Helo')
test(both_ends('a'), '')
test(both_ends('xyz'), 'xyyz')
print
print('fix_start')
test(fix_start('babbleb'), 'ba**le*')
test(fix_start('aardvark'), 'a*rdv*rk')
test(fix_start('google'), 'goo*le')
test(fix_start('donut'), 'donut')
print
print('mix_up')
test(mix_up('mix', 'pod'), 'pox mid')
test(mix_up('dog', 'dinner'), 'dig donner')
test(mix_up('gnash', 'sport'), 'spash gnort')
test(mix_up('pezzy', 'firm'), 'fizzy perm')
# Standard boilerplate to call the main() function.
if __name__ == '__main__':
main()
OUTPUT IS:
donuts
Number of donuts: 4
X got: None expected: 'Number of donuts: 4'
Number of donuts: 9
X got: None expected: 'Number of donuts: 9'
Number of donuts: many
X got: None expected: 'Number of donuts: many'
Number of donuts: many
X got: None expected: 'Number of donuts: many'
both_ends
OK got: 'spng' expected: 'spng'
OK got: 'Helo' expected: 'Helo'
OK got: '' expected: ''
OK got: 'xyyz' expected: 'xyyz'
fix_start
OK got: 'ba**le*' expected: 'ba**le*'
OK got: 'a*rdv*rk' expected: 'a*rdv*rk'
OK got: 'goo*le' expected: 'goo*le'
OK got: 'donut' expected: 'donut'
mix_up
OK got: 'pox mid' expected: 'pox mid'
OK got: 'dig donner' expected: 'dig donner'
OK got: 'spash gnort' expected: 'spash gnort'
OK got: 'fizzy perm' expected: 'fizzy perm'