Tips en Trucs 2019

Python editor voor beginners

Python is sinds onlangs de tweede meest gebruikte programmeertaal op GitHub. Op nummer één blijft JavaScript, Java verhuist naar plaats drie.

Wil je zelf beginnen met programmeren, dan is leren programmeren met Python 3 een goede keuze, zeker met de Mu Python editor die speciaal is ontwikkeld om studenten te helpen bij het leren programmeren met Python 3. Mu zorgt dat programmeren leuker is en je snel stimulerende resultaten bereikt. Mu werd niet geschreven door ontwikkelaars voor ontwikkelaars, maar door een leerkracht voor studenten.

Het onstaan

Mu wordt ontwikkeld door Nicholas Tollervey, een klassiek getrainde musicus en muziekleraar die al vroeg begon te programmeren met Python. Hij schreef eveneens het gratis O'Reilly boek Python in Education.

Hij zocht naar een eenvoudige omgeving om met Python te programmeren en vond vond bij de Raspberry Pi Foundation een sponsor om Mu te ontwikkelen.

Mu is een open source (GNU GPLv3) en platform onafhankelijke (Linux, macOS en Windows) Python applicatie.

Mu installeren

Aangezien Mu een Python programma is, kan je Mu installeren met de Python installer pip3. Start een Terminal en voer de volgende opdracht uit:

dany@pindabook:~> sudo pip3 install mu-editor
[sudo] wachtwoord voor root:
Collecting mu-editor
  Downloading https://files.pythonhosted.org/packages/fa/08/833e6ca83c8540733ca10b912cb21ad8d3b2b278567d34ae7651871f391a/mu_editor-1.0.2-py3-none-any.whl (2.0MB)
    100% |████████████████████████████████| 2.0MB 19.7MB/s 
Collecting matplotlib==2.2.2 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/49/b8/89dbd27f2fb171ce753bb56220d4d4f6dbc5fe32b95d8edc4415782ef07f/matplotlib-2.2.2-cp36-cp36m-manylinux1_x86_64.whl (12.6MB)
    100% |████████████████████████████████| 12.6MB 4.9MB/s 
Collecting Pillow>=5.2.0 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/10/5c/0e94e689de2476c4c5e644a3bd223a1c1b9e2bdb7c510191750be74fa786/Pillow-6.2.1-cp36-cp36m-manylinux1_x86_64.whl (2.1MB)
    100% |████████████████████████████████| 2.1MB 8.2MB/s 
Collecting pigpio>=1.40.post1 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/fc/3e/80b615a713e4cb9816a59227b0776a27ebc0d7847e3de6a043ce9b1f63d2/pigpio-1.44-py2.py3-none-any.whl
Collecting nudatus>=0.0.3 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/f6/23/930e4eabe7168552cf488dc4321d6f093b6048ce181a8ad8ba6f2ce4b3bb/nudatus-0.0.4.tar.gz
Collecting guizero>=0.5.2 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/b0/eb/c58693afb94bc1e5f5f77d0f8e6b4e6dc84006fbfcb66b10fb81aef39f69/guizero-1.1.0-py3-none-any.whl (41kB)
    100% |████████████████████████████████| 51kB 14.2MB/s 
Collecting qtconsole==4.3.1 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/90/ff/047e0dca2627b162866920e7aa93f04523c0ae81e5c67060eec85701992d/qtconsole-4.3.1-py2.py3-none-any.whl (108kB)
    100% |████████████████████████████████| 112kB 10.9MB/s 
Collecting PyQtChart==5.11.3 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/c5/9f/a0bd8880ea873058966ef5634cd231876337d6b5c404acea4f50768bb6ab/PyQtChart-5.11.3-5.11.2-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (1.1MB)
    100% |████████████████████████████████| 1.1MB 10.1MB/s 
Collecting pyflakes==2.0.0 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/44/98/af7a72c9a543b1487d92813c648cb9b9adfbc96faef5455d60f4439aa99b/pyflakes-2.0.0-py2.py3-none-any.whl (53kB)
    100% |████████████████████████████████| 61kB 13.0MB/s 
Collecting pyserial==3.4 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/0d/e4/2a744dd9e3be04a0c0907414e2a01a7c88bb3915cbe3c8cc06e209f59c30/pyserial-3.4-py2.py3-none-any.whl (193kB)
    100% |████████████████████████████████| 194kB 10.5MB/s 
Collecting pgzero==1.2 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/48/e5/e5f14292373cb5fc7539aa01307b184c1e3c954d68945d8c44778669dd82/pgzero-1.2-py3-none-any.whl (69kB)
    100% |████████████████████████████████| 71kB 10.9MB/s 
Collecting semver>=2.8.0 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/38/f1/0c9b852c5136364c0dd59ee1d89e0d7599bef6c9f1869e0f2e07882253ea/semver-2.9.0-py2.py3-none-any.whl
Collecting gpiozero>=1.4.1 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/5a/06/e3440c452a0c2ba1f12527c12c5676b158f2591ac6c43979016f21f71b2a/gpiozero-1.5.1-py2.py3-none-any.whl (138kB)
    100% |████████████████████████████████| 143kB 11.6MB/s 
Collecting pycodestyle==2.4.0 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/e5/c6/ce130213489969aa58610042dff1d908c25c731c9575af6935c2dfad03aa/pycodestyle-2.4.0-py2.py3-none-any.whl (62kB)
    100% |████████████████████████████████| 71kB 12.6MB/s 
Collecting qscintilla==2.10.8 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/07/fb/b5328064c1e73968e7d44824fa5fd7231e165ba46a5f31fb4bf52b5b59de/QScintilla-2.10.8-5.11.2-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (2.6MB)
    100% |████████████████████████████████| 2.6MB 8.6MB/s 
Collecting pyqt5==5.11.3 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/d4/bf/d884da8e2f7096d201c891d515eb6813a8e85df5eb6f5e12e867bf1d831c/PyQt5-5.11.3-5.11.2-cp35.cp36.cp37.cp38-abi3-manylinux1_x86_64.whl (117.8MB)
    100% |████████████████████████████████| 117.8MB 970kB/s 
Requirement already satisfied: appdirs>=1.4.3 in /usr/lib/python3.6/site-packages (from mu-editor) (1.4.3)
Collecting requests>=2.19.1 (from mu-editor)
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
    100% |████████████████████████████████| 61kB 11.9MB/s 
Collecting cycler>=0.10 (from matplotlib==2.2.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/f7/d2/e07d3ebb2bd7af696440ce7e754c59dd546ffe1bbe732c8ab68b9c834e61/cycler-0.10.0-py2.py3-none-any.whl
Collecting kiwisolver>=1.0.1 (from matplotlib==2.2.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/f8/a1/5742b56282449b1c0968197f63eae486eca2c35dcd334bab75ad524e0de1/kiwisolver-1.1.0-cp36-cp36m-manylinux1_x86_64.whl (90kB)
    100% |████████████████████████████████| 92kB 11.2MB/s 
Requirement already satisfied: six>=1.10 in /usr/lib/python3.6/site-packages (from matplotlib==2.2.2->mu-editor) (1.11.0)
Collecting python-dateutil>=2.1 (from matplotlib==2.2.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/d4/70/d60450c3dd48ef87586924207ae8907090de0b306af2bce5d134d78615cb/python_dateutil-2.8.1-py2.py3-none-any.whl (227kB)
    100% |████████████████████████████████| 235kB 12.7MB/s 
Collecting pytz (from matplotlib==2.2.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
    100% |████████████████████████████████| 512kB 11.2MB/s 
Collecting numpy>=1.7.1 (from matplotlib==2.2.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/0e/46/ae6773894f7eacf53308086287897ec568eac9768918d913d5b9d366c5db/numpy-1.17.3-cp36-cp36m-manylinux1_x86_64.whl (20.0MB)
    100% |████████████████████████████████| 20.0MB 3.7MB/s 
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/lib/python3.6/site-packages (from matplotlib==2.2.2->mu-editor) (2.2.0)
Collecting jupyter-client>=4.1 (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/13/81/fe0eee1bcf949851a120254b1f530ae1e01bdde2d3ab9710c6ff81525061/jupyter_client-5.3.4-py2.py3-none-any.whl (92kB)
    100% |████████████████████████████████| 92kB 11.1MB/s 
Collecting jupyter-core (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/fb/82/86437f661875e30682e99d04c13ba6c216f86f5f6ca6ef212d3ee8b6ca11/jupyter_core-4.6.1-py2.py3-none-any.whl (82kB)
    100% |████████████████████████████████| 92kB 11.7MB/s 
Collecting traitlets (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/ca/ab/872a23e29cec3cf2594af7e857f18b687ad21039c1f9b922fac5b9b142d5/traitlets-4.3.3-py2.py3-none-any.whl (75kB)
    100% |████████████████████████████████| 81kB 11.8MB/s 
Collecting ipykernel>=4.1 (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/e1/92/8fec943b5b81078399f969f00557804d884c96fcd0bc296e81a2ed4fd270/ipykernel-5.1.3-py3-none-any.whl (116kB)
    100% |████████████████████████████████| 122kB 12.0MB/s 
Collecting ipython-genutils (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/fa/bc/9bd3b5c2b4774d5f33b2d544f1460be9df7df2fe42f352135381c347c69a/ipython_genutils-0.2.0-py2.py3-none-any.whl
Collecting pygments (from qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/5c/73/1dfa428150e3ccb0fa3e68db406e5be48698f2a979ccbcec795f28f44048/Pygments-2.4.2-py2.py3-none-any.whl (883kB)
    100% |████████████████████████████████| 890kB 11.2MB/s 
Collecting pygame<2.0,>=1.9.2 (from pgzero==1.2->mu-editor)
  Downloading https://files.pythonhosted.org/packages/8e/24/ede6428359f913ed9cd1643dd5533aefeb5a2699cc95bea089de50ead586/pygame-1.9.6-cp36-cp36m-manylinux1_x86_64.whl (11.4MB)
    100% |████████████████████████████████| 11.4MB 5.4MB/s 
Collecting colorzero (from gpiozero>=1.4.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/cc/a2/718e78485d0a42c3c2971e0d4a0eb9878bd1121cd640f0773de0695c858e/colorzero-1.1-py2.py3-none-any.whl
Collecting PyQt5_sip<4.20,>=4.19.11 (from pyqt5==5.11.3->mu-editor)
  Downloading https://files.pythonhosted.org/packages/f2/5e/da07d1977cf54d636e44a50271bc0ad1f7f34b502e484b4cefd6a1a6962a/PyQt5_sip-4.19.19-cp36-cp36m-manylinux1_x86_64.whl (67kB)
    100% |████████████████████████████████| 71kB 11.4MB/s 
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.19.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |████████████████████████████████| 143kB 12.2MB/s 
Collecting idna<2.9,>=2.5 (from requests>=2.19.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 11.7MB/s 
Collecting certifi>=2017.4.17 (from requests>=2.19.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/18/b0/8146a4f8dd402f60744fa380bc73ca47303cccf8b9190fd16a827281eac2/certifi-2019.9.11-py2.py3-none-any.whl (154kB)
    100% |████████████████████████████████| 163kB 12.0MB/s 
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests>=2.19.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/e0/da/55f51ea951e1b7c63a579c09dd7db825bb730ec1fe9c0180fc77bfb31448/urllib3-1.25.6-py2.py3-none-any.whl (125kB)
    100% |████████████████████████████████| 133kB 11.4MB/s 
Requirement already satisfied: setuptools in /usr/lib/python3.6/site-packages (from kiwisolver>=1.0.1->matplotlib==2.2.2->mu-editor) (40.5.0)
Collecting tornado>=4.1 (from jupyter-client>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/30/78/2d2823598496127b21423baffaa186b668f73cd91887fcef78b6eade136b/tornado-6.0.3.tar.gz (482kB)
    100% |████████████████████████████████| 491kB 10.9MB/s 
Collecting pyzmq>=13 (from jupyter-client>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/75/89/6f0ea51ffa9c2c00c0ab0460f137b16a5ab5b47e3b060c5b1fc9ca425836/pyzmq-18.1.0-cp36-cp36m-manylinux1_x86_64.whl (1.1MB)
    100% |████████████████████████████████| 1.1MB 9.5MB/s 
Requirement already satisfied: decorator in /usr/lib/python3.6/site-packages (from traitlets->qtconsole==4.3.1->mu-editor) (4.2.1)
Collecting ipython>=5.0.0 (from ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/81/2e/59cdacea6476a4c21b7c090a91250ffbcd085900f5eb9f4e4d68dd2ee4e3/ipython-7.9.0-py3-none-any.whl (775kB)
    100% |████████████████████████████████| 778kB 9.1MB/s 
Collecting jedi>=0.10 (from ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/55/54/da994f359e4e7da4776a200e76dbc85ba5fc319eefc22e33d55296d95a1d/jedi-0.15.1-py2.py3-none-any.whl (1.0MB)
    100% |████████████████████████████████| 1.0MB 8.6MB/s 
Collecting pickleshare (from ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/9a/41/220f49aaea88bc6fa6cba8d05ecf24676326156c23b991e80b3f2fc24c77/pickleshare-0.7.5-py2.py3-none-any.whl
Collecting backcall (from ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/84/71/c8ca4f5bb1e08401b916c68003acf0a0655df935d74d93bf3f3364b310e0/backcall-0.1.0.tar.gz
Collecting pexpect; sys_platform != "win32" (from ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/0e/3e/377007e3f36ec42f1b84ec322ee12141a9e10d808312e5738f52f80a232c/pexpect-4.7.0-py2.py3-none-any.whl (58kB)
    100% |████████████████████████████████| 61kB 11.3MB/s 
Collecting prompt-toolkit<2.1.0,>=2.0.0 (from ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/87/61/2dfea88583d5454e3a64f9308a686071d58d59a55db638268a6413e1eb6d/prompt_toolkit-2.0.10-py3-none-any.whl (340kB)
    100% |████████████████████████████████| 348kB 11.3MB/s 
Collecting parso>=0.5.0 (from jedi>=0.10->ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/a3/bd/bf4e5bd01d79906e5b945a7af033154da49fd2b0d5b5c705a21330323305/parso-0.5.1-py2.py3-none-any.whl (95kB)
    100% |████████████████████████████████| 102kB 11.6MB/s 
Collecting ptyprocess>=0.5 (from pexpect; sys_platform != "win32"->ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/d1/29/605c2cc68a9992d18dada28206eeada56ea4bd07a239669da41674648b6f/ptyprocess-0.6.0-py2.py3-none-any.whl
Collecting wcwidth (from prompt-toolkit<2.1.0,>=2.0.0->ipython>=5.0.0->ipykernel>=4.1->qtconsole==4.3.1->mu-editor)
  Downloading https://files.pythonhosted.org/packages/7e/9f/526a6947247599b084ee5232e4f9190a38f398d7300d866af3ab571a5bfe/wcwidth-0.1.7-py2.py3-none-any.whl
Installing collected packages: cycler, kiwisolver, python-dateutil, pytz, numpy, matplotlib, Pillow, pigpio, nudatus, guizero, ipython-genutils, traitlets, jupyter-core, tornado, pyzmq, jupyter-client, parso, jedi, pickleshare, backcall, ptyprocess, pexpect, wcwidth, prompt-toolkit, pygments, ipython, ipykernel, qtconsole, PyQt5-sip, pyqt5, PyQtChart, pyflakes, pyserial, pygame, pgzero, semver, colorzero, gpiozero, pycodestyle, qscintilla, chardet, idna, certifi, urllib3, requests, mu-editor
  Running setup.py install for nudatus ... done
  Running setup.py install for tornado ... done
  Running setup.py install for backcall ... done
Successfully installed Pillow-6.2.1 PyQt5-sip-4.19.19 PyQtChart-5.11.3 backcall-0.1.0 certifi-2019.9.11 chardet-3.0.4 colorzero-1.1 cycler-0.10.0 gpiozero-1.5.1 guizero-1.1.0 idna-2.8 ipykernel-5.1.3 ipython-7.9.0 ipython-genutils-0.2.0 jedi-0.15.1 jupyter-client-5.3.4 jupyter-core-4.6.1 kiwisolver-1.1.0 matplotlib-2.2.2 mu-editor-1.0.2 nudatus-0.0.4 numpy-1.17.3 parso-0.5.1 pexpect-4.7.0 pgzero-1.2 pickleshare-0.7.5 pigpio-1.44 prompt-toolkit-2.0.10 ptyprocess-0.6.0 pycodestyle-2.4.0 pyflakes-2.0.0 pygame-1.9.6 pygments-2.4.2 pyqt5-5.11.3 pyserial-3.4 python-dateutil-2.8.1 pytz-2019.3 pyzmq-18.1.0 qscintilla-2.10.8 qtconsole-4.3.1 requests-2.22.0 semver-2.9.0 tornado-6.0.3 traitlets-4.3.3 urllib3-1.25.6 wcwidth-0.1.7
You are using pip version 10.0.1, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

OpenSUSE Leap 15.1 werkt blijkbaar nog met een oudere pip3 versie, maar dit heeft voor de installatie van Mu geen negatieve gevolgen. De opdracht om de recentste pip3 versie te installeren staat in de opmerking (sudo pip3 install --upgrade pip).

Om de Mu editor in de Programmastarter op te nemen, installeer je het volgende Python programma:

dany@pindabook:~> sudo pip3 install shortcut
Collecting shortcut
  Downloading https://files.pythonhosted.org/packages/a2/12/b90f2c865a2830425639def1158271af5fb0da862d83987e2caed210b3b9/shortcut-0.0.2-py3-none-any.whl
Installing collected packages: shortcut
Successfully installed shortcut-0.0.2
You are using pip version 10.0.1, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Waarmee je de Mu editor in de Programmastarter kunt opnemen:

dany@pindabook:~> shortcut mu-editor
Failed to create desktop shortcut
Desktop folder '/home/dany/Desktop' not found
Shortcut created for 'mu-editor'

Start de Mu editor via de Programmastarter > Toepassingen > Overig > mu-editor.

Programmeren in Mu

Bij de eerste start, kan je selecteren voor welk platform je wenst te programmeren. Python 3 is de meest voor de hand liggende en standaard keuze.
Mu Mode

Daarna kan je aan de slag met Python code:
Mu
Zoals je merkt, wordt je daarbij zo goed als mogelijk geholpen. Let wel dat je om de code te kunnen uitvoeren (Run knop) je de code eerst moet opslaan in een bestand (Save knop). Indien de Mu editor bij het opslaan waarschuwt voor een reeds bestaande bestandsnaam, moet je een andere naam voor uw Python script kiezen. Doe je dit niet dan kan je de Python omgeving ernstig beschadigen (overschrijven van een bestaande Python bibliotheek, die door andere Python scripts wordt gebruikt).

Veel programmeerplezier

Leren programmeren leer je niet in 30 minuten, maar de Mu editor maakt het een stuk aangenamer en eenvoudiger. Programmeren is eveneens een vaardigheid die je vooral al doende leert, met vallen en opstaan. Let wel, eenmaal je de smaak te pakken hebt, kan het verslavend zijn. Voor de liefhebbers van een donkere mode (en/of nachtuilen) is er de Theme knop. Je merkt het aan de details, Mu is een aanrader voor elke beginnende Python programmeur.