2016-10-11 4 views
2

私はPythonのV3を学習し、宿題に次のような問題持っています。この演習でPythonでwhileループを使って最大値を超えるまでリストに値を追加するにはどうしたらいいですか?

を、あなたの関数は、数値のリスト、および整数を受け取ります。合計が2番目のパラメータの値以下であれば、リストの値を合計に追加します。リスト内の数値の合計は、常に2番目のパラメータの値よりも大きくなります。

私は、次の解決策を考え出した:次のようにテスト・パラメータは

def while11(nums,maxi): 
    i=0 
    total=0 
    while total<=maxi: 
     total+=nums[i] 
    return total 

[1,1,1,1,1,1,1,1,1], 6 
[2,2,2,2,2,2,2,2,2], 6 
range(10, 1, -1), 25 

私の関数は最初の2のために、それぞれ、78を返します。パラメータのセット。ただし、3番目のセットの場合は27が返されますが、30が返されます。 11,10および9を,9および8とは対照的に付加するように見える。

答えて

0

計算を実行するときにiを増やす必要があります。

def while11(nums,maxi): 
    i=0 
    total=0 
    while total<=maxi: 
     total+=nums[i] 
     i+=1 
    return total 

あなたの機能は、リストの最初の値を単純に取り、最大値より大きくなるまで追加します。最初の2つのケースでは、すべての値が同じであるため、おそらくこれに気付かなかったでしょう。しかし、3番目のケースでは、[10、9、8、7、6、5、4、3、2]のリストがあります。これは最大値まで10 + 9 + 8 + 7 ...などとする必要がありますが、関数は最大値まで10 + 10 + 10 + 10 ...などとなります。

+0

パーフェクトに最初の値を追加します、それは働くあなたに – crhaag

0

すべての反復でi変数を更新するのを忘れてしまった。 num [0]要素を追加し続けます

0

あなたのwhileループでiの値を変更する必要があります。

def while11(nums,maxi): 
    i = 0 
    total = 0 
    while total <= maxi: 
     total += nums[i] 
     i += 1 
    return total 

そうでなければ、それは常にtotal

+0

に感謝、感謝 – crhaag

関連する問題