IB111

Základy programování

==František Lachman lachmanfrantisek@mail.muni.cz==
cvičení 13
==11. prosinec 2017==

Osnova

  • obrázky
  • čtvrtý domácí úkol
  • pátý domácí úkol
  • závěr semestru

Rozdíl mezi list a tuple?

Jakou knihovnu používáme na práci z obrázky?

Práce s obrázky

In [5]:
from PIL import Image
In [9]:
im = Image.open("picture.jpg").convert("RGB")
width, height = im.size
print("width: {} height: {}".format(width, height))
width: 400 height: 266
In [10]:
im.show()
In [16]:
im = Image.new("RGB", (width, height))
In [ ]:
r, g, b = im.getpixel((0, 0))

for i in range(100):
    im.putpixel((i, i), (r + 60, g + 60, b + 60))
In [17]:
im.show()

Příklady

12.1.1. Čtverec

Na bílé pozadí o zadané velikosti nakreslete černý čtverec o zadané straně, jehož střed bude umístěn do středu obrázku.

In [ ]:
from PIL import Image

def square(size=250, a=70):
    pass

+ zkuste další obrazce: kruh, elipsa, spirála, šachovnice

Příklady na transformace

12.2.2. Invertování barev

Napište funkci, která invertuje barvy v daném obrázku.

In [ ]:
def invert_colors(filename):
    pass

+ zkuste další transformace

5. Domácí úkol

  • soft-deadline: ==21. 12. 2017==
    • zpětná vazba
  • hard-deadline: ==28. 12. 2017==
  • 40 bodů (+ bonus)

1. Želvy

  • Udělejte objektovou implementaci želví grafiky s vykreslováním do SVG (na základě kódů uvedených ve slidech k přednášce).
  • Implementujte metody:
    • turn_to_turtle(turtle) pro "otočení směrem k zadané želvě,
    • line_to_turtle(turtle) pro "vykreslení spojnice se zadanou želvou".

Za využití těchto metod vytvořte zajímavé obrázky (>=2), např. následující (první obrázek je "želví honička", kdy několik želv honí jednu, druhý obrázek vznikne tak, že dvě želvy jdou po kružnici, jedna jde rychleji než druhá, pravidelně vykreslujeme spojnice, barvy řešit můžete, ale nemusíte).

50%


2. Black and white

  • Napiště funkci black_and_white(picture), která načte obrázek (uložený na cestě picture) a převede jej do černobílé.
  • Transformace obdobná příkladům na přednášce, nebo na cvičení.
  • Pixel po pixelu.
  • Přidejte volitelný parametr na ovlivnění výsledku.

3. zpracování textu (jedna ze dvou možností):

  • Libovolné využití "open data" ➡ jakákoliv analýza, nebo statistika, která vám přijde zajímavá. K řešení přiložte použitá data a zmiňtě případné potřebné nestandardní balíky.

  • Imitace textu ➡ Funkce lorem_ipsum(text_file), která načte textový soubor text_file a náhodně vygeneruje a vrátí text, který bude se souborem sdílet několik statistický vlastností, dle vaší volby. (Frekvence písmen/dvojhlásek, průměrná delka slov,..) Generovaný text by měl alespoň vzdáleně připomínat běžný text.

Co Dál?

  • OOP
  • nízkoúrovňové
  • neimperativní
  • semináře

PYVO - srazy Python programátorů (pyvo.cz)

  • Brno - každý poslední čtvrtek v měsíci
  • Ostrava - každou první středu v měsíci
  • Praha - každou třetí středu v měsíci

Krygl

rh Red Hat Open Source Contest

Are you a university student in Brno? Are you interested in learning about and becoming active in open source communities? Would you like to win prizes? You can by participating in the Red Hat Open Source Contest.

Projekty psané v Pythonu

  • Youtube, Dropbox, Google App Engine, Quora, Instagram, Spotify, Reddit, Totalspy, Pinterest, BitBucket, BitTorrent, Blender3D, Civilization IV, Eve Online, Mercurial Source Control, Unity 3D, Anaconda, MusicBrainz Picard, PiTiVi, OpenShot Video Editor, OpenStack, Calibre, Gunicorn, Ubuntu Software Center, yum, dnf, ansible, Bloodhound, ...

  • skryptování: Autodesk Maya, Blender, FreeCAD, GIMP, Inkscape, Rhythmbox, Rhinoceros 3D, Scribus, ...
  • jupyter notebooks/ipython

150% PyPI

  • https://pypi.org
  • Balíčkovací systém pro Python.
  • Windows instalace automaticky.
  • 🐧Linux:
    • sudo apt-get install python-pip
    • sudo dnf install python-pip
  • pip install youtube-dl

100%

100% MicroPython

In [ ]:
import pyb

# turn on an LED
pyb.LED(1).on()

# print some text to the serial console
print('Hello MicroPython!')

60%


400% Raspberry PI

Zpětná vazba (IS)

Opakování na začátku?

Průběh cvičení?

- párové programování

- live-coding

- obcházení x neotravovat

- pochopitelnost

Domácí úlohy (zadání)?

Soft-deadline?

Oprava?

- gitlab

- zmatené x přehledné

- zpětná vazba dostatečná/vhodná

Vnitra?

Materiály, prezentace?

Další připomínky?


Závěr

  • Připomínky, aneketa
  • Programujte!
  • Programujte v Pythonu!
  • Pěkné Vánoce!