2012-01-09 6 views
0

誰でもこのコードで何が間違っているか教えてもらえますか?いくつかのナゲットのナゲットボックス(6,9,20ピース)の組み合わせをリストアップすることになっています。しかし、いくつかの解は計算されていません。Python - 2つの反復ループですべての正解が吐き出されない

def boxes_nuggets(nuggets): 

    if nuggets < 6: print "there are no sizes for less than 6 nuggets" 
    else: 
     for numSmall in range(0, nuggets/6+1): 
      for numMed in range(0, nuggets/9+1): 
       numLarge = (nuggets - 6 * numSmall - 9 * numMed)/20 
       if nuggets == numLarge * 20 + numMed * 9 + numSmall * 6: 
        print numLarge, "large boxes", numMed, "medium boxes", numSmall, "small boxes" 

       elif numLarge < 0: return None 
+4

(a)実行可能コードを提供するか、(b)コードが失敗する原因となった値を少なくとも教えてください。私たちは推測する必要はありません。 –

答えて

2

私はあなたがこのようにコードを変更したいと思います。だから、

if numLarge < 0: 
    continue 
if nuggets == numLarge * 20 + numMed * 9 + numSmall * 6: 
    print ... 

elif numLarge < 0: return Noneを削除し、印刷前に負numLargeのチェックを追加します。

問題は、最初にnumLargeが負になり、戻って残りの回答が見つからなくなります。

def boxes_nuggets(nuggets): 
    if nuggets < 6: print "there are no sizes for less than 6 nuggets" 
    else: 
     for numSmall in range(nuggets/6+1): 
      for numMed in range(nuggets/9+1): 
       numLarge = (nuggets - 6 * numSmall - 9 * numMed)/20 
       if numLarge < 0: continue 
       if nuggets == numLarge * 20 + numMed * 9 + numSmall * 6: 
        print numLarge, "large boxes", numMed, "medium boxes", numSmall, "small boxes" 
+0

が働いた。どうもありがとう!! – Leerix

0

可能な組み合わせを計算するためにネストされたループを適切に使用します。エラーを取り除くには、return文をcontinue文で置き換えます。残りは私にはよく見えます。

関連する問題