-3

私はこの質問を進めましたが、常にリストの最初の値のみを返します。私のコードには何が欠けていますか?

1 つのリスト パラメーターを受け取る add_numbers という関数を作成します。少なくとも 10 個が見つかるまで、リスト内のすべての数値の合計を最初から返します。10 以上の数値が見つからない場合は、リスト内のすべての数値の合計を返します。

def add_numbers(a):

total = 0

i = 0

  while a[i] < 10:

    total = total + a[i]

    i = i + 1

    return total

2 つ目は次のとおりです。

1 つの数値パラメーターを受け取る make_list という関数を作成します。0 から数値パラメーターより 1 小さい数値のリストを返します。

これを行う方法は、すべての数値の合計を求められた場合であることは知っていますが、リストに混乱しています。

最後のものは次のとおりです。

1 つの数値パラメーターを受け取る count_bricks という関数を作成します。この関数は、そのレベルの高さのピラミッド内のレンガの数を返します。ピラミッドの各レベルには、その上のレベルよりも 1 つ多いレンガがあります。

これをどこから始めればいいのかわからない。

事前に助けてくれてありがとう。これは宿題ではありません。質問でいっぱいのサンプル クイズです。これらは私が答えることができなかったものです。

4

3 に答える 3

2

ループの外側に return を配置する必要があります。そうしないと、最初の反復で値が return になります。

def add_numbers(a):
    total = 0
    i = 0
    while a[i] < 10 and i < len(a):
        total = total + a[i]
        i = i + 1
    return total        # return  should be outside the loop

2 番目の質問のヒント:

  1. 1 つの入力を受け取る関数を作成する
  2. 組み込み関数range( )を使用して新しいリストを返します。
于 2013-03-20T20:40:10.587 に答える
0

最初の問題:

リストの終了時にループを終了するチェックを追加します。

while a[i] < 10 and i < len(a):

2番目の問題:

Python のリストについて読んでください。数字の時間をループして、その数字をリストに追加するだけです。最後にそのリストを返します。

于 2013-03-20T20:40:28.543 に答える
0
def add_numbers(a):
    """
        returns the total of all numbers in the list from the start, 
        until a value of least 10 is found. If a number greater than 
        or equal to 10 is not found, it returns the sum of all numbers in the list.
    """
    total = 0
    index = 0
    while index < len(a):
        total = total + a[index]
        if a[index] >= 10:
            break
        index += 1
    return total
于 2013-03-20T20:48:03.400 に答える