如何解决除了合并new_title语句外,如何使用Python3重构此代码?请帮助:(
||small_words = (\'into\',\'the\',\'a\',\'of\',\'at\',\'in\',\'for\',\'on\')
def book_title(title):
\"\"\" Takes a string and returns a title-case string.
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\'
\"\"\"
lst_of_words = title.lower().split()
num_of_words = len(lst_of_words)
if num_of_words < 1:
return \'\'
new_title = lst_of_words.pop(0)
new_title = new_title[0].upper() + new_title[1:]
tpl_of_words = tuple(lst_of_words)
for word in tpl_of_words:
prep_word = False
for prep in small_words:
if prep == word:
new_title = new_title + \' \' + word
new_title = new_title + word
prep_word = True
break
if prep_word == True:
continue
new_title = new_title + \' \'+ word[0].upper()+ word[1:]
new_title = new_title + word[0].upper()
new_title = new_title + word[1:]
return new_title
def _test():
import doctest,refactory
return doctest.testmod(refactory)
if __name__ == \"__main__\":
_test()
解决方法
return \' \'.join((new[0].upper() + new[1:]) if (ix == 0 or new not in small_words)
else new for (ix,new) in enumerate(title.lower().split()))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。