Python Exercise Help

1,619 views
Skip to first unread message

Halldk

unread,
May 25, 2012, 4:03:40 AM5/25/12
to python-g...@googlegroups.com
Hey, i am trying out the python course you guys have here on google, and i have run into a little problem with the examples i've downloaded, i get the answer they want me to, like they want the number of donuts to say "Number of donuts: 4" i get this exact answer, but it still has an x for the prefix, which says im wrong. here is the code that i used

********************************************************************CODE****************************************************************************
#!/usr/bin/python -tt
# Copyright 2010 Google Inc.
# Licensed under the Apache License, Version 2.0

# Google's Python Class

# Basic string exercises
# Fill in the code for the functions below. main() is already set up
# to call the functions with a few different inputs,
# printing 'OK' when each function is correct.
# The starter code for each function includes a 'return'
# which is just a placeholder for your code.
# It's ok if you do not complete all the functions, and there
# are some additional functions to try in string2.py.


# 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):
  # +++your code here+++
  if count >= 10:
    print 'Number of donuts: many'
  else:
    print 'Number of donuts:', 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):
  # +++your code here+++
  if len(s) <=2:
    print 
  else:
    print s[0:2] + s[-2:]
  return


# 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):
  # +++your code here+++
  stra = s[0]
  s.find(stra)
  strb = "*"
  strc = s[1:]
  strc.replace(stra, strb)
  strd = s[0] + strc.replace(stra, strb)
  print strd
  return


# 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):
  # +++your code here+++
  stra = a[0:2]
  strb = b[0:2]
  strc = a.replace(stra, strb)+", " +b.replace(strb, stra)
  print strc
  return




# 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))




# Standard boilerplate to call the main() function.
# 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('babble'), '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')
if __name__ == '__main__':
  main()
************************************************************************************END CODE***********************************************************************
with out all of the astrides of course, and when i run this i get something like this (because i cant copy it from my command prompt, and frankly, im too lazy to type it all)

string1.py
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'

and so on and so forth, 

both_ends
spng
    X  got: None expected: 'spng'
Helo
    X  got: None expected: 'Helo'

and so on and so forth, same with all the others. I know this should not bother me, seeing as how i know i have the right answer, but, i want to know why it isnt giving me credit for it (I know this seems stupid, but im 16, everything i do is stupid)
Any idea whats wrong? 

Robert Mandić

unread,
May 25, 2012, 4:44:33 AM5/25/12
to python-g...@googlegroups.com
User RETURN instead of PRINT in your function.
--
Lp, Robert

Hubert campbell

unread,
Jun 26, 2012, 12:56:26 AM6/26/12
to python-g...@googlegroups.com
ugh... did I miss the Return function in the video lecture? It's not in the notes.

Dustin Hall

unread,
Jun 26, 2012, 2:17:13 AM6/26/12
to python-g...@googlegroups.com
I dont think they specify, but instead of using print, you use return, and it sends it to the command line interface, so it can be checked
Reply all
Reply to author
Forward
0 new messages