zoukankan      html  css  js  c++  java
  • Python基础之字符串的练习

    练习1

    #!/usr/bin/python -tt
    # Copyright 2010 Google Inc.
    # Licensed under the Apache License, Version 2.0
    # http://www.apache.org/licenses/LICENSE-2.0
    
    # Google's Python Class
    # http://code.google.com/edu/languages/google-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:
        return "Number of donuts: "+str(count)
      else: return "Number of donuts: many"
    
    # 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 :
        return s[:2]+s[-2:]
      else: 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+++
      return s[0]+s.replace(s[0],'*')[1:]
    
    
    # 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+++
      return a.replace(a[:2],b[:2])+" "+b.replace(b[:2],a[:2])
    
    
    # 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('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')
    
    
    # Standard boilerplate to call the main() function.
    if __name__ == '__main__':
      main()

    练习2

    #!/usr/bin/python -tt
    # Copyright 2010 Google Inc.
    # Licensed under the Apache License, Version 2.0
    # http://www.apache.org/licenses/LICENSE-2.0
    
    # Google's Python Class
    # http://code.google.com/edu/languages/google-python-class/
    
    # Additional basic string exercises
    
    # D. verbing
    # Given a string, if its length is at least 3,
    # add 'ing' to its end.
    # Unless it already ends in 'ing', in which case
    # add 'ly' instead.
    # If the string length is less than 3, leave it unchanged.
    # Return the resulting string.
    def verbing(s):
      # +++your code here+++
      if len(s) < 3 : return s
      elif s.endswith('ing') : return s+'ly'
      else : return s+'ing'
      return
    
    
    # E. not_bad
    # Given a string, find the first appearance of the
    # substring 'not' and 'bad'. If the 'bad' follows
    # the 'not', replace the whole 'not'...'bad' substring
    # with 'good'.
    # Return the resulting string.
    # So 'This dinner is not that bad!' yields:
    # This dinner is good!
    def not_bad(s):
      # +++your code here+++
      not_p=s.find('not')
      bad_p=s.find('bad')
      
      if not_p>bad_p:
        return s
      else: return s.replace(s[not_p:bad_p+3],'good')
       
      return  
    
    
    # F. front_back
    # Consider dividing a string into two halves.
    # If the length is even, the front and back halves are the same length.
    # If the length is odd, we'll say that the extra char goes in the front half.
    # e.g. 'abcde', the front half is 'abc', the back half 'de'.
    # Given 2 strings, a and b, return a string of the form
    #  a-front + b-front + a-back + b-back
    def front_back(a, b):
      # +++your code here+++
      a_odd=len(a)%2
      b_odd=len(b)%2
      if a_odd:
        a_front=a[:len(a)//2+1]
        a_back=a[len(a)//2+1:]
      else:
        a_front=a[:len(a)//2]
        a_back=a[len(a)//2:]
        
      if b_odd:
        b_front=b[:len(b)//2+1]
        b_back=b[len(b)//2+1:]
      else:
        b_front=b[:len(b)//2]
        b_back=b[len(b)//2:]
      return a_front + b_front + a_back + b_back
    
    
    # Simple provided 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))
    
    
    # main() calls the above functions with interesting inputs,
    # using the above test() to check if the result is correct or not.
    def main():
      print 'verbing'
      test(verbing('hail'), 'hailing')
      test(verbing('swiming'), 'swimingly')
      test(verbing('do'), 'do')
    
      print
      print 'not_bad'
      test(not_bad('This movie is not so bad'), 'This movie is good')
      test(not_bad('This dinner is not that bad!'), 'This dinner is good!')
      test(not_bad('This tea is not hot'), 'This tea is not hot')
      test(not_bad("It's bad yet not"), "It's bad yet not")
    
      print
      print 'front_back'
      test(front_back('abcd', 'xy'), 'abxcdy')
      test(front_back('abcde', 'xyz'), 'abcxydez')
      test(front_back('Kitten', 'Donut'), 'KitDontenut')
    
    if __name__ == '__main__':
      main()
  • 相关阅读:
    导出数据到Excel文件
    判断是否在某个时间段以内
    获取网络图片并保存到指定目录
    创建目录并且将数据写入txt文件、删除指定目录下的文件
    获取二维数组中指定字段的值,并且将值组成一维数组
    JS--获取月份天数
    php---邮件发送
    3D--魔方
    leetcode每日一题之10.分割回文串 II
    leetcode每日一题之9.最长递增子序列
  • 原文地址:https://www.cnblogs.com/sdet/p/3677070.html
Copyright © 2011-2022 走看看