Щилиян обнови решението на 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 май никъде не се използва, няма нужда от нея
Ако има още за делене и счупя цикъла лошо :)
divided_to_5 съм пропуснал да го изтрия. Участваше в по-стар вариант на кода, преди да си "минимизирам" булевата функция от последният if
.