Решение на Да си приготвим нещо за хапване от Стоян Стоянов

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

Към профила на Стоян Стоянов

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 10 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def prepare_meal(number):
spam = 'spam '
eggs = 'eggs'
if number == 0:
return ''
pow_3,count_of_pow_3 = 3,0
if number % 3 == 0:
while number % pow_3 == 0:
pow_3 *= 3
count_of_pow_3 += 1
spam_string = (spam * count_of_pow_3)[:-1]
else:
spam_string = ''
if number % 5 == 0:
if spam_string == '':
return eggs
else:
return spam_string + ' and ' + eggs
else:
return spam_string

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

..........
----------------------------------------------------------------------
Ran 10 tests in 0.001s

OK

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

Стоян обнови решението на 11.03.2012 17:22 (преди почти 13 години)

+def prepare_meal(number):
+
+ spam = 'spam '
+ eggs = 'eggs'
+
+ if number == 0:
+ return ''
+
+ pow_3,count_of_pow_3 = 3,0
+ if number % 3 == 0:
+ while number % pow_3 == 0:
+ pow_3 *= 3
+ count_of_pow_3 += 1
+ spam_string = (spam * count_of_pow_3)[:-1]
+ else:
+ spam_string = ''
+
+ if number % 5 == 0:
+ if spam_string == '':
+ return eggs
+ else:
+ return spam_string + ' and ' + eggs
+ else:
+ return spam_string
+

Променливи с имена n и it са трудни за четене дори в толкова проста функция.

От друга страна ми харесва, че кодът ти е така структуриран, че се получават няколко независими части. Можеше да стигнеш стъпка по-натам и да изкараш независимите части в отделни функции.