除了合并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()))
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...