Решение на Да си приготвим нещо за хапване от Щилиян Харбов

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

Към профила на Щилиян Харбов

Резултати

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

Код

def prepare_meal(number):
meal = ""
divided_to_3 = False
divided_to_5 = False
first_eggs = True
for i in range(1,number):
if number % 3 == 0:
number /= 3
divided_to_3 = True
meal += "spam "
elif number % 5 == 0:
number /= 5
divided_to_5 = True
if first_eggs == True and divided_to_3 == True:
meal += "and eggs "
first_eggs = False
else:
meal += "eggs "
else:
break
return meal[:len(meal)-1]

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

.F........
======================================================================
FAIL: test_eggs_with_additional_egg_multipliers (__main__.FirstHomeworkTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/test20120506-8116-113lunb", 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 коментара)

Щилиян обнови решението на 09.03.2012 00:29 (преди около 12 години)

+def prepare_meal(number):
+ meal = ""
+ divided_to_3 = False
+ divided_to_5 = False
+ first_eggs = True
+ for i in range(1,number):
+ if number % 3 == 0:
+ number /= 3
+ divided_to_3 = True
+ meal += "spam "
+ elif number % 5 == 0:
+ number /= 5
+ divided_to_5 = True
+ if first_eggs == True and divided_to_3 == True:
+ meal += "and eggs "
+ first_eggs = False
+ else:
+ meal += "eggs "
+ else:
+ break
+ return meal[:len(meal)-1]

защо просто не счупиш цикъла в момента, в който добавиш или не добавиш яйцата(в elif клаузиата за делене на 5)? Така ще си спестиш first_eggs.

П.П. divided_to_5 май никъде не се използва, няма нужда от нея