On 11 Sep, 04:12, t...@thsu.org wrote: > On Sep 10, 7:47 am, Peter Otten <__pete...@web.de> wrote: > > > > > > > > > > > Tigerstyle wrote: > > > I'm strugglin with some homework stuff and am hoping you can help me > > > out here. > > > > This is the code: > > > > small_words = ('into', 'the', 'a', 'of', 'at', 'in', 'for', 'on') > > > new_title = [] > > > title_split = title.strip().lower().split() > > > for word in title_split: > > > if title_split[0] in small_words: > > > new_title.append(word.title()) > > > elif word in small_words: > > > new_title.append(word.lower()) > > > else: > > > new_title.append(word.title()) > > > The logic of the for-loop is flawed; the expression > > > title_split[0] in small_words > > > will always evaluate to True if the first word is a "small word", even when > > the loop is already past the first word. You can work around that with a > > flag along these lines > > > first = True > > for word in title_split: > > if first: > > # special treatment for the first word > > first = False > > else: > > # put checks for all words but the first here > > new_title.append(fixed_word) # assuming you have stored the titlecased > > # or lowercased word in the fixed_word > > # variable > > Another way to tackle this is to just capitalize the entire sentence > before returning it. > > new_title = [] > title_split = title.strip().lower().split() > for word in title_split: > if word in small_words: > new_title.append(word.lower()) > else: > new_title.append(word.title()) > return(''.join(new_title).capitalize()) > > However, I'm only helping with your homework, because I want to point > out that doctest comments should be *readable*. Don't just throw them > in, take the extra 10-15 seconds to make them easier on the eyes. In > the workplace, months will pass before you review this code again, so > you want to make it easier for an older version of yourself to > remember it. > > And it takes very little effort to make it readable. Here's your > doctest string, reformatted with just a tiny bit more whitespace. I > even cut out a sentence. > > def book_title(title): > """ > All words EXCEPT for small words are made title case > unless the string starts with a preposition, in which > case the word is correctly capitalized. > > >>> book_title('DIVE Into python') > 'Dive into Python' > >>> book_title('the great gatsby') > 'The Great Gatsby' > >>> book_title('the WORKS OF AleXANDer dumas') > 'The Works of Alexander Dumas' > """ > -- > // T.Hsu
It capitalises the phrase, but still the rest of the phrase is in lower case. -- http://mail.python.org/mailman/listinfo/python-list