timeit

Програмиране с Python

Курс във Факултета по Математика и Информатика към СУ

Първа задача

  1. Ето го и първото домашно. Срокът ви е до 14.03 17:00.

    Примерния тест можете да намерите в GitHub хранилището.

    Напомням, че нямате право да си споделяте решенията. Обяснение от типа "Аз само му показах моето, но той сам си го написа" не важи. Ако имате въпроси по условието или такива от общ характер за решението на домашното - питайте тук.

    Преди всичко се запознайте с това как (не) се предават задачи.

  2. В първия от примерните тестове от rotate_left се очаква да върнем list от tuples

    def test_rotate_left(self):
        self.assertEqual(
            solution.rotate_left(self.image),
            [((0, 0, 255), (0, 255, 0), (255, 0, 0)),
             ((0, 255, 0), (0, 0, 255), (0, 255, 0)),
             ((0, 0, 255), (255, 0, 0), (0, 255, 0))])
    

    докато при останалите трябва да върнем list от lists:

    def test_lighten(self):
        self.assertEqual(
            solution.lighten(self.image, 0.5),
            [[(127, 127, 255), (127, 255, 127), (127, 127, 255)],
             [(255, 127, 127), (127, 127, 255), (127, 255, 127)],
             [(127, 255, 127), (127, 255, 127), (255, 127, 127)]])
    
    def test_invert(self):
        self.assertEqual(
            solution.invert(self.image),
            [[(255, 255, 0), (255, 0, 255), (255, 255, 0)],
             [(0, 255, 255), (255, 255, 0), (255, 0, 255)],
             [(255, 0, 255), (255, 0, 255), (0, 255, 255)]])
    

    Това означава ли че от rotate_right се очаква да връща list от tuples или просто е станала грешка

  3. Всъщност, не ни интересува дали връщате списък от списъци, списък от кортежи, кортеж от списъци или кортеж от кортежи. Важното е резултатът да бъде колекция от пиксели, която може да бъде обходена многократно с гарантиран ред.

    Обнових тестовете да не очакват конкретно списък.

    От друга страна е изискване всеки пиксел да бъде кортеж с три елемента.

  4. Хора, може ли малко помощ покрай линукс? Написах си кода и ми тръгнаха тестовете, обаче стават някакви неща с историите покрай версиите на пайтън и библиотеката PIL. Когато проверявам версиите на пайтън, ми излиза това:

    rolev@rolev-HP-ProBook-4540s:~$ python -V Python 2.7.6

    rolev@rolev-HP-ProBook-4540s:~$ python3.5 -V Python 3.5.1

    Като инсталирах Pillow, ми се инсталира при пайтън 2.7. Съответно, кодът ми тръгва само като го подкарам с:

    python render.py panda.jpg rotate_left, иначе казано, през пайтън 2.7

    Ако опитам с python3.5 render.py ... дава грешка, че не намира библиотеката PIL.

    Някой друг с подобен проблем има ли?

  5. rolev@rolev-HP-ProBook-4540s:~$ sudo apt-get install python3-pip Reading package lists... Done Building dependency tree
    Reading state information... Done python3-pip is already the newest version.

    sudo pip3 install Pillow ... някакви неща и после ...

    Cleaning up... Command /usr/bin/python3 -c "import setuptools, tokenize;file='/tmp/pip_build_root/Pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-n_ogf_ms-record/install-record.txt --single-version-externally-managed --compile failed with error code 1 in /tmp/pip_build_root/Pillow Storing debug log for failure in /home/rolev/.pip/pip.log

  6. sudo pip3 install Pillow==2.6.1

    Ето така успях да си инсталирам пилоу. Между другото, пилоу сега върви само с python3, но не и с python3.5. Сега пък се прецакват нещата с дугата библиотека - matplotlib:

    Command python setup.py egg_info failed with error code 1 in /tmp/pip_build_root/matplotlib Storing debug log for failure in /home/rolev/.pip/pip.log

    Това убунту е нечовешки изнервящо. Написах си домашното за половин час, а от два дни не мога да се преборя с две инсталации, прочетох половината интернет :D

    П.С. пробвах да си сложа и Anaconda, че да не проверявам пеп8 само през конзолата, пак ми отне 3 часа и накрая пак не стана :D

  7. В директория, до която може да достигнеш в cmd, поставяш solution.py, render.py и panda.jpg. Отваряш cmd и пишеш командите, които са показани в примера, като пропускаш "python " частта от низа. Предполага се, че си инсталирал Pillow и matplotlib. Ако ги нямаш, пиши в темата за Windows, за да са на едно място сходните неща.

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