Димитър обнови решението на 07.03.2012 11:07 (преди почти 13 години)
Здравей,
Изрично е указано да прочетете PEP 8 и да го спазвате. Дори при 100% работещо решение няма да давами точки при грубо неспазване на стила :)
Първата проверка за това дали
x <= 0
е напълно излишна. Освен това слагайки скоби, на return-а, връщаш tuple.За разлика от други езици, ако кодът на всяка функция започва с 10 реда дефиниране на променливи с нулеви стойности, докато пишеш на python, то трябва да си оправиш логиката.
Функцията ти не връща нищо. print != return
10 пъти сме казвали как променливи с имена
a
нямат място в езика :)
Здравей.
Значи проверката за x==0 я оставям защото трябва да върна '' при 0. За print-a извинете правих тестове забравих да го оправя, същото и за променливата a :)
Това добре, но обърни внимание на първата ми забележка за PEP 8. Наблегни на това какъв case да се използва за имената на променливи и за именоването на нещата :)
Преработих го.
За променлвиите ползвах camel, защото по ми допада, но забелqзха че името на функциqта е snake което ме наведе на мислата да ползвам него.
:)
while number > 1:
if number % 3 == 0:
num_of_spam = num_of_spam + 1
number = number / 3
Тук "прахосваш" процесорно време с безсмислени операции, поради факта, че ако number
не се дели на 3 без остатък, то и number / 3
пак няма да се дели на 3 без остатък. Т.е. ако ти се подаде 3**20000 + 1 ще извършиш 20000 излишни операции, което не е много, когато става въпрос за обикновено делене, но е хубава практика да не правиш излишни неща, тъй като някой ден ще ти се наложи да извършваш доста по-сложни операции.
Има още някои детайли, които си можел да пипнеш, но те са по-скоро въпрос на имплементация (като например това, че ако числото ти не се дели на 3, но се дели на 5 не връщаш директно "eggs" а го присвояваш на answer и връщаш въпросната променлива малко по-нататък).
P.S. По-добра имплементация на първото би било: while number > 1: if number % 3: # Или number % 3 != 0, ако го намираш за по-четимо. break num_of_spam = num_of_spam + 1 number = number / 3
А може и number % 3
също да е условие на while-а.