Първа задача

  1. Здравейте, За ваша огромна радост вече има първо домашно. В GitHub хранилището ни се намира примерният тест за това домашно.

    Задължително го свалете в същата директория, в която е решението ви(което трябва да е в solution.py) и го изпълнете, преди да предавате домашно.

    Не сме ви говорили за unittest-ове, но предвид очевидната им простота, ви насърчаваме да споделяте тук ваши тестове, които покриват, нещо което липсва в семплите. Дори ще даваме точка за добре написани тестове.

    Припомням, да не споделяте решения под никаква форма. За сметка на това спокойно можете да давате идеи, да питате(и респективно - отговаряте) на въпроси свързани с езика. Ако има нещо неясно относно условието отново е тук мястото да попитате.

    Поздрави и успех!

  2. Въпрос : Втората част е допълнение към първата, ако не греша.
    Това означава ли, че примерът:

    >>> prepare_meal(45)
    'spam spam and eggs'

    е грешен ?

    3(повдигнато на)2 < 3(повдигнато на)3 = 27 <45 -> 'spam spam spam and eggs'
    Или аз не съм разбрал правилно условието ?

  3. Не си го разбрал правилно.

    Първата част от условието ще рече, че числото трябва да се дели на някаква степен на 3-ката (т.е. на 3, на 9, на 27, на 81, на 243 и т.н.).

    В случая най-голямата степен на 3-ката на която се дели 45, е 9. За това имаш два пъти spam.
    - Ако числото е 90, пак ще имаш два пъти спам, защото не се дали на 27.
    - Ако числото е 93, ще имаш само един път спам, защото не се дели на нищо друго освен на 3.

    Относно втората част от условието, единственото което те интересува там е дали числото може да се раздели на 5 (разбирай дали е 5, 10, 15, 20, 25 т.н.) И дали е делимо на 3 - ако да, има "and ", ако не - няма.

    Т.е. за 105 имаш "spam and eggs", а за 135 "spam spam spam and eggs" (дели се на 27).

  4. Ще може ли някой да ми обясни как точно става прилагането на теста? Свалих zip-а от github и сложих simple_test.py в директорията, където се намира решението ми. След това какво трябва да се направи?

  5. И аз имах подобен проблем.
    Подкарах го по следния начин (предполагам не е 100% правилен, но поне тръгна):
    (работя на WinXP)
    1)сложих си двата файла в Python папката.
    2)именовах моя solution.py както теста очаква да се казва(ако предпочиташ можеш просто да модифицираш import-а в sample_test.py)
    3)ползвайки cmd конзолата си отворих питонската папка(в моя случай d:\Python3) и написах следното

    D:\Python3>python sample_test.py

    няма нужда от втори аргумент(с него даже гърми). Самия тест си import-ва предполагаемия модул и прилага съответните процедури върху намерената там prepare_meal(), поне по това, което разбрах за краткото време през, което гледах кода на теста.

    Дано съм помогнал.

    П.П. Ако държиш двата файла в папка различна от питонската има вероятност да трябва да пишеш пълни пътища до тях и/или питона в зависимост от това в коя папка се намираш и дали си се сетил да сложиш съответните папки в Enviornment Variables

  6. @Орлин: То ако е за въпрос, 0 се дели и на 3 ^ n, където n->∞, така че по-скоро май се очаква '', освен ако нямаш безкрайно много памет (;

    Имам и един малък въпрос: За яйцата ни интересува само дали даденото число се дели на 5, без значение колко пъти (т.е. при 75 ще тряба да получим 'spam and eggs'), правилно ли разбирам условието?

  7. @Габриела: ще защитя предположението си като припомня, че в първата се търси максималното n, а то не съществува. От тук нататък е въпрос как ще се третира въпросната грешка :)

    А мога ли да попитам за до колко големи/малки числа се очаква да работи ?

  8. Имам следния въпрос: 2рата част за степен на 5тицата ли става въпрос (като в първата част) или само за делимост на 5? Т.е при подаване на числото 225 резултатът трябва да е : "spam spam and eggs" или "spam spam and eggs eggs" ?? Че го направих за степен?

  9. Следователно нямаме някакви сериозни критики по домашното ти. :) Хората, които са изпратили днес, все още не са прегледани. За всички останали, ако им минават дадените от нас тестове и не са получили критики - вероятно всичко е наред.

    В този ред на мисли, видях твърде много домашни, неспазващи основни препоръки на PEP 8. Ще отнемаме точки на решения, в които:

    • идентацията е различна от 4 интервала
    • именоването на функции и променливи е в CamelCase
    • има ред по дълъг от 79 символа(включително спейсовете)
    • са използвани безсмислени имена(foo, bar, temp, a, x...)
    • "подравняване" на дефинираните променливи

    За други неща, като липса на спейсове между някой и друг оператор, сме склонни за това домашно да си затворим очите.

  10. За по-нетърпеливите: http://www.pythonchallenge.com/

    Предполагам, че преподавателския екип с радост ще даде по една точка за всеки решени 10 challenge-а. Нататък не са никак лесни, така че за последните може и повече (по-трудоемки са от поне 50% от домашните). Но това те ще го решат.

    Независимо от това, обаче, сайта е хубаво упражнение за хората, които искат да научат повечко за питона. Ако има достатъчно ентусиасти може да отворите тема, където да обсъждаме и да си даваме леки подсказки относно challenge-ите. Естествено, няма нужда да казвам, че, ако се реши да се дават точки за решени предизвикателства, преписването е крайно нежелателно. А и в крайна сметка целта е да научим нещо, нали така? :)

Трябва да сте влезли в системата, за да може да отговаряте на теми.