Created
April 2, 2018 12:32
-
-
Save Nditah/97f2445c2e2efde538e189a4e4f4c564 to your computer and use it in GitHub Desktop.
GooglesPythonClassList1 created by Nditah - https://repl.it/@Nditah/GooglesPythonClassList1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 list 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 list2.py. | |
# A. match_ends | |
# Given a list of strings, return the count of the number of | |
# strings where the string length is 2 or more and the first | |
# and last chars of the string are the same. | |
# Note: python does not have a ++ operator, but += works. | |
def match_ends(words): | |
result = 0 | |
for x in words: | |
if (len(x) >= 2 and x[0] == x[-1]): result +=1 | |
return result | |
# B. front_x | |
# Given a list of strings, return a list with the strings | |
# in sorted order, except group all the strings that begin with 'x' first. | |
# e.g. ['mix', 'xyz', 'apple', 'xanadu', 'aardvark'] yields | |
# ['xanadu', 'xyz', 'aardvark', 'apple', 'mix'] | |
# Hint: this can be done by making 2 lists and sorting each of them | |
# before combining them. | |
def front_x(words = []): | |
words.sort() | |
aList = [] ; xList = []; | |
for x in words: | |
if((x[0]).upper() == 'X'): | |
xList.append(x) | |
else: aList.append(x) | |
result = xList + aList | |
return result | |
# C. sort_last | |
# Given a list of non-empty tuples, return a list sorted in increasing | |
# order by the last element in each tuple. | |
# e.g. [(1, 7), (1, 3), (3, 4, 5), (2, 2)] yields | |
# [(2, 2), (1, 3), (3, 4, 5), (1, 7)] | |
# Hint: use a custom key= function to extract the last element form each tuple. | |
def sort_last(tuples): | |
d = {} | |
lista = [] | |
result = [] | |
for x in tuples: | |
val = x[-1] | |
i = tuples.index(x) | |
d[i] = val | |
lista.append(val) | |
lista.sort() | |
for it in lista: | |
for key, value in d.items(): | |
if value == it: | |
vali = key | |
valf = tuples[vali] # get item tuple from tuple | |
result.append(valf) | |
return result | |
# 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))) | |
# Calls the above functions with interesting inputs. | |
def main(): | |
print 'match_ends' | |
test(match_ends(['aba', 'xyz', 'aa', 'x', 'bbb']), 3) | |
test(match_ends(['', 'x', 'xy', 'xyx', 'xx']), 2) | |
test(match_ends(['aaa', 'be', 'abc', 'hello']), 1) | |
print 'front_x' | |
test(front_x(['bbb', 'ccc', 'axx', 'xzz', 'xaa']), | |
['xaa', 'xzz', 'axx', 'bbb', 'ccc']) | |
test(front_x(['ccc', 'bbb', 'aaa', 'xcc', 'xaa']), | |
['xaa', 'xcc', 'aaa', 'bbb', 'ccc']) | |
test(front_x(['mix', 'xyz', 'apple', 'xanadu', 'aardvark']), | |
['xanadu', 'xyz', 'aardvark', 'apple', 'mix']) | |
print 'sort_last' | |
test(sort_last([(1, 3), (3, 2), (2, 1)]), | |
[(2, 1), (3, 2), (1, 3)]) | |
test(sort_last([(2, 3), (1, 2), (3, 1)]), | |
[(3, 1), (1, 2), (2, 3)]) | |
test(sort_last([(1, 7), (1, 3), (3, 4, 5), (2, 2)]), | |
[(2, 2), (1, 3), (3, 4, 5), (1, 7)]) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment