Решение на Да си приготвим нещо за хапване от Илия Идакиев

Обратно към всички решения

Към профила на Илия Идакиев

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 9 успешни тест(а)
  • 1 неуспешни тест(а)

Код

def prepare_meal(number):
output = ''
if number % 3 == 0:
output += 'spam'
if (number / 3) % 5 == 0 and (number / 3) % 3 != 0:
output += ' and ' + prepare_meal(number / 3)
elif (number / 3) % 3 == 0:
output += ' ' + prepare_meal(number / 3)
elif number % 5 == 0:
output += 'eggs'
if (number / 5) % 5 == 0:
output += ' ' + prepare_meal(number / 5)
return output

Лог от изпълнението

.F........
======================================================================
FAIL: test_eggs_with_additional_egg_multipliers (__main__.FirstHomeworkTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120506-8116-1sm7s6w", line 22, in test_eggs_with_additional_egg_multipliers
    self.assertEqual('eggs', self.solution.prepare_meal(5**4))
AssertionError: 'eggs' != 'eggs eggs eggs eggs'
- eggs
+ eggs eggs eggs eggs


----------------------------------------------------------------------
Ran 10 tests in 0.002s

FAILED (failures=1)

История (1 версия и 3 коментара)

Илия обнови решението на 07.03.2012 19:20 (преди почти 13 години)

+def prepare_meal(number):
+ output = ''
+ if number % 3 == 0:
+ output += 'spam'
+ if (number / 3) % 5 == 0 and (number / 3) % 3 != 0:
+ output += ' and ' + prepare_meal(number / 3)
+ elif (number / 3) % 3 == 0:
+ output += ' ' + prepare_meal(number / 3)
+ elif number % 5 == 0:
+ output += 'eggs'
+ if (number / 5) % 5 == 0:
+ output += ' ' + prepare_meal(number / 5)
+ return output

Не сме пускали все още тестовете и не мога да потвърдя, че кодът ти работи, но това е първото решение, с добър стил.

Единствената ми критика е, че на едно място си се усетил да ползваш +=, а на две реда по-надолу си направил: output = output+

Но съм склонен да повярвам, че това е от недоглеждане и не е болка за умиране.