На CodingBat.com (раздел Python Logic-2) есть проблема с кодированием, которая просит функцию определить, сколько маленьких шоколадных батончиков используется для требования веса. Вопрос в следующем:
Мы хотим сделать пакет целых килограммов шоколада. У нас есть небольшие бары (по 1 килограмм каждый) и большие бары (по 5 килограммов каждый). Верните количество маленьких баров, чтобы использовать, предполагая, что мы всегда используем большие бары перед небольшими барами. Возврат -1, если это невозможно.
make_chocolate (4, 1, 9) → 4 make_chocolate (4, 1, 10) → -1 make_chocolate (4, 1, 7) → 2 [ ! d2]
Я придумал это решение проблемы, но он все еще терпит неудачу в «других тестах». Есть ли какие-либо проблемы, которые вызывают это?
Код:
def make_chocolate(small, big, goal):
if (small + 5*big < goal) or (goal % 5 > small):
return -1
elif small >= goal:
return small
else:
smallnum = 0
for i in range(1,big+1):
if 5*i + small >= goal:
if 5*i > goal:
break
smallnum = goal - 5*i
return smallnum
EDIT: Мне удалось решить проблему благодаря Мариах Акинби. Я обновил код следующим образом:
def make_chocolate(small, big, goal):
if (small + 5*big < goal) or (goal % 5 > small):
return -1
elif 5 <= goal:
smallnum = 0
for i in range(1,big+1):
if 5*i + small >= goal:
if 5*i > goal:
break
smallnum = goal - 5*i
return smallnum
return goal