Я думаю, вы хотите изменить свой код следующим образом:
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"