Светослав обнови решението на 07.03.2012 02:08 (преди над 12 години)
Здравей, Светослав.
Прави излишни проверки:
if not number:
return ""
Тук например за какво точно проверяваш? Това ще върне False, само ако е подадена 0. Но твоята логика трябва да е подготвена да вади празен стринг и за други числа. Като 7, 13, 19 и прочее, които не се делят на 3 или на 5.
Поне 10 пъти сме казвали да не проверявате типът, на подадените аргументи. Ако са подадени грешни аргументи на подобен метод, проблемът си е на човекът, който ги подава. if isinstance(number, (int, float)): return make_spam(number) + bake_eggs(number)
Какво точно очакваш да се случи тук? return make_spam(len(number))
П.П.: Преди края на срока избери една от двете версии и пусни само нея. Ако го оставиш така тестовете ще проверят версия 1.
Здравей,
За версия 2 идеята ми беше, че в първата част от условието не е упоменато, че number трябва да е задължително число. И в случая примерно, ако въведеш стринг с 15 символа, той може да бъде разделен на секции от по 3 части; или някакви списъци, които също могат да бъдат групирани.
Но твоята логика трябва да е подготвена да вади празен стринг и за други числа. Като 7, 13, 19 и прочее, които не се делят на 3 или на 5.
Това се подразбира от spam_fest = "" във Версия 2 и от current_meal = "" във Версия 1.
Тук например за какво точно проверяваш? Това ще върне False, само ако е подадена 0.
Не си видял not-а, ще върне true, само ако е подадена 0. Ако няма тази проверка при подадена 0, по начина който е написан кода в момента, ще попаднем в безкраен цикъл.
Какво точно очакваш да се случи тук?
В първия случай, ако е подадено число, тогава се проверяваме и условието то да се дели и на 5 (там е упоменато, че number е число). Залепяме spam-a и eggs-a и излизаме. Ако не е число, тогава влизаме само за spam, за нещо което може да се раздели на равни части с по 3 на n-та елементи.
Явно имах прекалено много време да се хвана за всяка дума от условието :) Ако е лошо да е чак така, ще се върна към вариант 1.
П.П. Ще има ли второ домашно тази седмица?
По същата логика трябва да проверявате и за 7,13,19,23...
13 % 3 != 0 --> излизаме
"За версия 2 идеята ми беше, че в първата част от условието не е упоменато, че number трябва да е задължително число. И в случая примерно, ако въведеш стринг с 15 символа, той може да бъде разделен на секции от по 3 части; или някакви списъци, които също могат да бъдат групирани.
"
Естестверно, че ще тестваме само с коректни стойности. Няколко пъти споменаваме вече, че ако някой не знае как да използва написана от вас библиотека, проблемът си негов.
Иначе - да, вариант 1 ми харесва повече.
Ок е ако така искаш да си изградиш логиката, но в такъв случай: if number == 0.
Не се възползвай от това, че 0 == False, освен когато стойността е ок да се държи като булева. В първия момент, още преди да ти пусна коментар, реших че проверяваш дали ти е подаден изобщо аргумент и бях втрещен.