2

だから私はPythonをよりよく学ぼうとしていて、このウェブサイトhttp://www.learnpython.org/を使っています。

私は今関数に取り組んでいます。コードはこちらです

#Add your functions here (before the existing functions) 

def list_benefits():
    myList = ['More organized code','More readable code','Easier code reuse','Allowing     programmers to share and connect code together']
    return myList

def build_sentence(info):
    addMe = " is a benefit of functions!"
    for i in info:
        meInfo = i + addMe
    return meInfo
        
    
def name_the_benefits_of_functions():
    list_of_benefits = list_benefits()
    for benefit in list_of_benefits:
        print build_sentence(benefit)

name_the_benefits_of_functions()

出力は

eは関数の利点です!

eは関数の利点です!

eは関数の利点です!

r は関数の利点です!

香り全体を返すために何が欠けていますか

4

5 に答える 5

5

中身 def build_sentence(info):

info文字ごとに取得するため、ループする必要はありません。

def build_sentence(info):
    addMe = " is a benefit of functions!"
    return info + addMe

また、この部分では:

for i in info:
        meInfo = i + addMe
    return meInfo

ループ内で常にその値を変更するたびに meInfo を設定しています。最後に、ループから取得した最後の値を返すだけです

于 2012-09-28T03:13:23.743 に答える
2

関数build_sentence()は、渡された文字列を繰り返し処理し、各文字と他の文字列を順番ににバインドしmeInfoます。最後の文字で終了すると、値を返します。修正は、文字列の反復を停止し、代わりにすべてを追加して戻ることです。

于 2012-09-28T03:10:15.060 に答える
0

あなたが書くとき:

def name_the_benefits_of_functions():
    list_of_benefits = list_benefits()
    for benefit in list_of_benefits:
        print build_sentence(benefit)

文字列引数を指定して build_sentence() を呼び出します。次に、build_sentence が文字列内の文字を繰り返し処理し、ご覧のとおりの効果が得られます。

代わりに、リスト全体を渡して build_sentence を呼び出します。これはlistを反復処理し、追加のテキストをリスト内の各項目に追加します (文字列内の各文字ではありません)。

def name_the_benefits_of_functions():
    list_of_benefits = list_benefits()
    print build_sentence(list_of_benefits)

また、build_sentence 内で、各リスト項目から作成されたテキストを作成して破棄し、最後の項目と余分なテキストのみを返します。それぞれを印刷したい場合は、printステートメントを build_sentence() 関数に移動するか (おそらく名前を print_sentence() に変更するか、その関数内にリストを作成してリストを返すことができます:

def build_sentence(info):
    addMe = " is a benefit of functions!"
    result = []
    for i in info:
        result.append(i + addMe)
    return result
于 2012-09-28T03:13:40.500 に答える
0

上記で定義した文字列のリストを返すように、この関数を変更します。

def list_benefits():
    return "More organized code", "More readable code", "Easier code reuse", "Allowing programmers to share and connect code together"

def build_sentence(info):
    return "%s is a benefit of functions!"% (info)

この関数を変更して、各利点に連結します - 「関数の利点です!」:

def name_the_benefits_of_functions():
    list_of_benefits = list_benefits()
    for benefit in list_of_benefits:
        print build_sentence(benefit)

name_the_benefits_of_functions()
于 2013-09-09T19:51:23.657 に答える
0

ここで発生している問題はbuild_sentence()、引数を取得している (各呼び出しは単一の文字列を使用している) が、それを反復処理して最後の結果のみを返すことです (したがって、文字列の最後の文字と残りの文字を含む文を返します)。静的に定義された文の)。

文字列を反復処理すると、文字列の各文字が処理されます。

何かのようなもの:

def build_sentence(benefit):
    '''Returns a sentence from a template filling in benefit as the subject'''
    return "%s is a benefit of functions!' % benefit

...残りのコードで動作します。

build_sentences()または、次のような関数を使用できます。

def build_sentences(*benefits):
    '''Returns a list of sentences from a template touting each benefit'''
    results = list()
    for each in benefits:
        results.append("%s is a benefit if functions!" % each)
    return results

...そして、次のような利点のリストを使用して、その関数を単純に呼び出します。

build_sentences('More organized code','More readable code','Easier code reuse','Allowing programmers to share and connect code together')

... また

build_sentences(*myList)

この特定の形式 (*benefits関数定義のパラメーターとして使用して、関数呼び出しに可変数の引数を提供するか、*myListフォームを使用してリストの内容を展開し、そのリストを「varargs」引数リストに適用することは、もう少し高度です (この場合も厳密には必要ではありません。*関数のパラメーター定義と関数の呼び出し引数の両方からプレフィックスを削除できます。その場合、利点のリテラル リストを使用して関数を呼び出すときは、ラップする必要があります。それらをリテラル文字列にするためのリテラル文字列引数[...]:

def tout_benefits(benefits):
    '''Given a list of benefits tout them using a template'''
    return [ "%s is a benefit of functions!" % x for x in benefits ]

tout_benefits(['More organized code','More readable code','Easier code reuse','Allowing programmers to share and connect code together'])
# Notice called with `[ ..., ..., ... ]`

また、この最後の形式では、for ...ループをよりコンパクトな「リスト内包表記」とリストを返す式に減らしていることに注意してください。前の例でもその形式を使用できました。しかし、varargs (可変パラメーター/引数) の処理についてのポイントを作成することとは別に、それを紹介したかったのです。

また、これらすべての例で+、の代わりに式を使用できることにも注意してください。"%s ..." %ただし、「文字列フォーマット」演算子を使用すると、値がテンプレート/文字列に補間される方法をより正確に制御でき、複数の値、型、数値精度、および単純な文字列連結 ( を使用+) をはるかに超えるその他の多くの機能を使用できます。

于 2012-09-28T03:35:38.090 に答える