Incremental Development
Use incremental developent to check if word is palindrome. A palindrome is a word that is spelled the same backward and forward.First Step
Make the function's definition skeleton.
"""Palindrome string
Use incremental development to check if string is palindrome
A palindrome is a word that is spelled the same backward and forward.
Example: noon, redivider
We use built-in function len() to check the string length.
Version 1: define function
"""
def is_palindrome(word):
return True
assert is_palindrome("abc") == True
Second Step
Test if first is different than last.
"""Palindrome string
Use incremental development to check if string is palindrome
A palindrome is a word that is spelled the same backward and forward.
Example: noon, redivider
We use built-in function len() to check the string length.
Version 2: test first/last
"""
def is_palindrome(word):
first = word[0]
last = word[-1]
if (first != last):
return False
return True
assert is_palindrome("abca") == True
assert is_palindrome("abc") == False
Third Step
Test if the middle is palindrome.
"""Palindrome string
Use incremental development to check if string is palindrome
A palindrome is a word that is spelled the same backward and forward.
Example: noon, redivider
Version 3: test middle
"""
def is_palindrome(word):
if (word[0] != word[-1]):
return False
if (len(word) > 2):
middle = word[1:-1]
return is_palindrome(middle)
return True
assert is_palindrome("abcba") == True
assert is_palindrome("abca") == False
Final version
The final verions contains all the refactoring.
"""Palindrome string
Use incremental development to check if string is palindrome
A palindrome is a word that is spelled the same backward and forward.
Example: noon, redivider
Final version: refactoring
"""
def first(word):
return word[0]
def last(word):
return word[-1]
def middle(word):
return word[1:-1]
def is_palindrome(word):
if (first(word) != last(word)):
return False
if (len(word) > 2):
return is_palindrome(middle(word))
return True
assert is_palindrome("noon") == True
assert is_palindrome("redivider") == True
assert is_palindrome("to") == False
assert is_palindrome("moomm") == False
Last update: 450 days ago