Commit ea0f54a5 authored by Mihai's avatar Mihai

Extended flow control plus extras

parent bedea369
......@@ -10,11 +10,11 @@
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="269.34595mm"
height="115.88752mm"
viewBox="0 0 269.34595 115.88752"
height="142.34586mm"
viewBox="0 0 269.34595 142.34586"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (unknown)"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
sodipodi:docname="program.svg">
<defs
id="defs2" />
......@@ -26,18 +26,18 @@
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="540.29667"
inkscape:cy="85.179993"
inkscape:cx="515.56275"
inkscape:cy="253.09843"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1136"
inkscape:window-x="1280"
inkscape:window-width="1588"
inkscape:window-height="1382"
inkscape:window-x="972"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:window-maximized="0"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
......@@ -59,6 +59,13 @@
inkscape:groupmode="layer"
id="layer1"
transform="translate(-27.970237,-37.141367)">
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 142,302 v 60 16 160 h 876 V 362 H 578 v -60 z"
transform="matrix(0.26458333,0,0,0.26458333,27.970237,37.141367)"
id="path949"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
......@@ -137,11 +144,11 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1032"
d="m 181.95779,85.295539 h 57.15003 V 100.1122 h -57.15003 z"
d="m 181.95779,101.17054 h 57.15003 v 14.81667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 181.42862,84.766369 h 57.15003 v 14.816664 h -57.15003 z"
d="m 181.42862,100.64137 h 57.15003 v 14.81667 h -57.15003 z"
id="path1034"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -149,21 +156,21 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="209.99072"
y="91.207748"
y="107.08274"
id="text1040"><tspan
sodipodi:role="line"
x="210.12302"
y="91.207748"
y="107.08274"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1038">Data mangling</tspan><tspan
sodipodi:role="line"
x="210.12302"
y="95.61747"
y="111.49246"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1264">with pandas</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 240.16616,53.545535 h 57.15003 v 14.816667 h -57.15003 z"
d="m 240.16616,69.420536 h 57.15003 v 14.816667 h -57.15003 z"
id="path1062"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -171,21 +178,21 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1064"
d="m 239.63699,53.016368 h 57.15003 v 14.816667 h -57.15003 z"
d="m 239.63699,68.891369 h 57.15003 v 14.816667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text1070"
y="59.457767"
y="75.332764"
x="268.19046"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="59.457767"
y="75.332764"
x="268.32275"
sodipodi:role="line"
id="tspan1268">Data visualisation</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="63.867489"
y="79.742485"
x="268.32275"
sodipodi:role="line"
id="tspan1272">with Matplotlib</tspan></text>
......@@ -283,7 +290,7 @@
id="tspan1128">12:00 - 13:00</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 28.499404,117.04555 h 35.983321 v 35.98334 H 28.499404 Z"
d="m 28.499404,132.92056 h 35.983321 v 46.56667 H 28.499404 Z"
id="path1132"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -291,19 +298,19 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1134"
d="m 27.970237,116.51638 h 35.983318 v 35.98334 H 27.970237 Z"
d="m 27.970237,132.39139 h 35.983318 v 46.56667 H 27.970237 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text1138"
y="135.79221"
y="156.95889"
x="30.693922"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:start;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1136"
style="text-align:start;letter-spacing:0.26458332px;text-anchor:start;stroke-width:0.26458332px"
y="135.79221"
y="156.95889"
x="30.693922"
sodipodi:role="line">13:00 - 16:00</tspan></text>
sodipodi:role="line">14:00 - 17:00</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
......@@ -326,7 +333,7 @@
x="93.633072"
y="93.093674"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1144">Functions</tspan></text>
id="tspan1144">Flow control</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
......@@ -385,7 +392,7 @@
sodipodi:role="line">and writing files</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 181.95779,53.545535 h 57.15003 v 14.816667 h -57.15003 z"
d="m 181.95779,69.420536 h 57.15003 v 14.816667 h -57.15003 z"
id="path1168"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -393,21 +400,21 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1170"
d="m 181.42862,53.016368 h 57.15003 v 14.816667 h -57.15003 z"
d="m 181.42862,68.891369 h 57.15003 v 14.816667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text1176"
y="59.457767"
y="75.332764"
x="210.06479"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1174"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="59.457767"
y="75.332764"
x="210.19708"
sodipodi:role="line">Object-oriented</tspan><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="63.867489"
y="79.742485"
x="210.19708"
sodipodi:role="line"
id="tspan1218">programming</tspan></text>
......@@ -415,11 +422,11 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1178"
d="m 240.16616,69.420536 h 57.15003 v 14.816667 h -57.15003 z"
d="m 240.16616,85.295537 h 57.15003 V 100.1122 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 239.63699,68.891369 h 57.15003 v 14.816667 h -57.15003 z"
d="m 239.63699,84.76637 h 57.15003 v 14.816667 h -57.15003 z"
id="path1180"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -427,27 +434,27 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="268.19046"
y="75.332764"
y="91.207756"
id="text1186"><tspan
sodipodi:role="line"
x="268.32275"
y="75.332764"
y="91.207756"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1184">Data visualisation</tspan><tspan
sodipodi:role="line"
x="268.32275"
y="79.742485"
y="95.617477"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1276">with Bokeh</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1188"
d="m 181.95779,69.420536 h 57.15003 v 14.816663 h -57.15003 z"
d="m 181.95779,85.295537 h 57.15003 V 100.1122 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 181.42862,68.891369 h 57.15003 v 14.816667 h -57.15003 z"
d="m 181.42862,84.76637 h 57.15003 v 14.816667 h -57.15003 z"
id="path1190"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -455,16 +462,16 @@
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="210.10182"
y="77.272949"
y="93.147942"
id="text1196"><tspan
sodipodi:role="line"
x="210.23412"
y="77.272949"
y="93.147942"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan1222">Jupyter Notebook</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 240.16616,85.295537 h 57.15003 V 100.1122 h -57.15003 z"
d="m 240.16616,101.17054 h 57.15003 v 14.81667 h -57.15003 z"
id="path1198"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -472,22 +479,22 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1200"
d="m 239.63699,84.76637 h 57.15003 v 14.816667 h -57.15003 z"
d="m 239.63699,100.64137 h 57.15003 v 14.81667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text1206"
y="93.147942"
y="109.02293"
x="268.19046"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1204"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="93.147942"
y="109.02293"
x="268.32275"
sodipodi:role="line">Biopython</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 65.541073,101.17054 H 297.31608 v 14.81667 H 65.541073 Z"
d="M 65.541073,101.17054 H 180.89941 v 14.81667 H 65.541073 Z"
id="path1280"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
......@@ -495,40 +502,35 @@
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1282"
d="M 65.011906,100.64137 H 296.78691 v 14.81667 H 65.011906 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
d="M 65.011906,100.64137 H 180.37024 v 14.81667 H 65.011906 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f0fff0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text1286"
y="108.96867"
x="168.56856"
x="110.36021"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:start;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan1284"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0.26458332px;text-anchor:start;stroke-width:0.26458332px"
y="108.96867"
x="168.56856"
x="110.36021"
sodipodi:role="line">Lunch break</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path1288"
d="M 65.541073,117.04555 H 297.31608 v 35.98334 H 65.541073 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5deb3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="M 65.011906,116.51638 H 296.78691 v 35.98334 H 65.011906 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5deb3;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 140,300 v 60 16 160 h 876 V 360 H 576 v -60 z"
transform="matrix(0.26458333,0,0,0.26458333,27.970237,37.141367)"
id="path1290"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
sodipodi:nodetypes="ccccccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:start;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="164.12988"
y="135.82321"
y="151.69823"
id="text1294"><tspan
sodipodi:role="line"
x="164.12988"
y="135.82321"
y="151.69823"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0.26458332px;text-anchor:start;stroke-width:0.26458332px"
id="tspan1292">Practical session</tspan></text>
<path
......@@ -643,5 +645,103 @@
y="47.992485"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;fill:#000000;stroke-width:0.26458332px"
id="tspan1369">30/11</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path915"
d="m 181.95779,53.545535 h 57.15003 v 14.816667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 181.42862,53.016368 h 57.15003 v 14.816667 h -57.15003 z"
id="path917"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="210.0648"
y="61.397942"
id="text921"><tspan
sodipodi:role="line"
x="210.1971"
y="61.397942"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
id="tspan919">Assignments review</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 240.16616,53.545535 h 57.15003 v 14.816667 h -57.15003 z"
id="path923"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path925"
d="m 239.63699,53.016368 h 57.15003 v 14.816667 h -57.15003 z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#b0e0e6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text929"
y="61.397942"
x="268.27316"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:center;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan927"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:center;letter-spacing:0.26458332px;text-anchor:middle;stroke-width:0.26458332px"
y="61.397942"
x="268.40546"
sodipodi:role="line">Assignments review</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path931"
d="m 181.95779,117.04555 h 115.35836 v 14.81667 H 181.95779 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f0fff0;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 181.42862,116.51638 h 115.35836 v 14.81667 H 181.42862 Z"
id="path933"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:start;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="226.77695"
y="124.84368"
id="text937"><tspan
sodipodi:role="line"
x="226.77695"
y="124.84368"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;text-align:start;letter-spacing:0.26458332px;text-anchor:start;stroke-width:0.26458332px"
id="tspan935">Lunch break</tspan></text>
<path
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 28.499404,117.04555 h 35.983321 v 14.81667 H 28.499404 Z"
id="path939"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path941"
d="m 27.970237,116.51638 h 35.983318 v 14.81667 H 27.970237 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<text
id="text945"
y="125.20885"
x="30.693922"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:125%;font-family:mono;-inkscape-font-specification:mono;text-align:start;letter-spacing:7.3342495px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
id="tspan943"
style="text-align:start;letter-spacing:0.26458332px;text-anchor:start;stroke-width:0.26458332px"
y="125.20885"
x="30.693922"
sodipodi:role="line">13:00 - 14:00</tspan></text>
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path963"
d="M 65.011953,164.14141 H 296.78698 v 14.81667 H 65.011953 Z"
style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#f5f5f5;fill-opacity:0.53048778;fill-rule:evenodd;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
</g>
</svg>
......@@ -137,15 +137,16 @@
IPython gives you a third option:
\begin{itemize}
\item As an argument of the \lstinline{%run} magic.
\item As an argument of the \texttt{\%run} magic.
\end{itemize}
\end{pframe}
\subsection{Writing your script}
\begin{pframe}
Let's start with a simple GC calculator. Open your text editor, and write the
following Python statements (remember your indentations):
Let's start with a simple hello world example.\\
Open your text editor and write the following Python statement:
\begin{pythonfile}{first\_script.py}
\begin{minted}[linenos]{python}
......@@ -157,12 +158,9 @@ Save the file as first\_script.py and go to your shell.
\subsection{Running the script}
\begin{pframe}
Let's try the first method: using your script as an argument:
Let's try the first method, i.e., using your script as an argument:
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ python first_script.py
\end{lstlisting}}
\color{white}{\texttt{\$ python first\_script.py}}
\end{terminal}
Is the output as you expect?
\end{pframe}
......@@ -178,17 +176,11 @@ $ python first_script.py
\item Save the file, go back to the shell, and allow the file to be executed.
\end{itemize}
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ chmod +x first_script.py
\end{lstlisting}}
\color{white}{\texttt{\$ chmod +x first\_script.py}
\end{terminal}
You can now execute the file directly:
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ ./first_script.py
\end{lstlisting}}
\color{white}{\texttt{\$ ./first\_script.py}}
\end{terminal}
Is the output the same as the previous method?
\end{pframe}
......@@ -197,7 +189,7 @@ $ ./first_script.py
Finally, try out the third method. Open an IPython interpreter session and do:
\begin{ipython}
\begin{pythonin}{python}
%run seq_toolbox.py
%run first_script.py
\end{pythonin}
\end{ipython}
\end{pframe}
......@@ -207,23 +199,20 @@ $ ./first_script.py
\subsection{if statements}
\begin{pframe}
\begin{pythonfile}{if.py}
\begin{pythonfile}{if\_example.py}
\begin{minted}[linenos]{python}
if 26 <= 17:
print('Fact: 26 is less than or equal to 17')
elif (26 + 8 > 14) == True:
print('Did we need the ` == True` part here?')
print("Did we need the ' == True' part here?")
else:
print('Nothing seems true')
\end{minted}
\end{pythonfile}
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ python if.py
Did we need the ` == True` part here?
\end{lstlisting}}
\color{white}{\texttt{\$ python if\_example.py}\\
\texttt{Did we need the ' == True' part here?}}
\end{terminal}
\end{pframe}
......@@ -232,7 +221,7 @@ Did we need the ` == True` part here?
\subsection{while statements}
\begin{pframe}
\begin{pythonfile}{while.py}
\begin{pythonfile}{while\_example.py}
\begin{minted}[linenos]{python}
i = 0
while i < 5:
......@@ -242,21 +231,18 @@ while i < 5:
\end{pythonfile}
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ python while.py
0
1
2
3
4
\end{lstlisting}}
\color{white}{\texttt{\$ python while\_example.py \\
0\\
1\\
2\\
3\\
4\\}}
\end{terminal}
\end{pframe}
\subsection{Iterating over a sequence}
\begin{pframe}
\begin{pythonfile}{for.py}
\begin{pythonfile}{for\_example.py}
\begin{minted}[linenos]{python}
colors = ['red', 'white', 'blue', 'orange']
cities = ['leiden', 'utrecht', 'warmond', 'san francisco']
......@@ -273,21 +259,118 @@ for character in 'blue':
\begin{pframe}
\begin{terminal}
\color{white}{
\begin{lstlisting}[frame=,style=,numbers=none]
$ python for.py
red
white
blue
orange
b
l
u
e \end{lstlisting}}
\color{white}{\texttt{\$ python for\_example.py\\
red\\
white\\
blue\\
orange\\
b\\
l\\
u\\
e\\
}}
\end{terminal}
\end{pframe}
\subsection{Python anti-patterns}
\begin{pframe}
These are common for programmers coming from other languages.
\begin{pythonfile}{unpythonic.py}
\begin{minted}[linenos]{python}
i = 0
while i < len(colors):
print colors[i]
i += 1
for i in range(len(colors)):
print colors[i]
\end{minted}
\end{pythonfile}
We call them unpythonic.
\end{pframe}
\subsection{Additionals}
\begin{pframe}
\begin{pythonfile}{iteration.py}
\begin{minted}[linenos]{python}
# Iteration with values and indices:
for i, color in enumerate(colors):
print(i, '->', color)
# Taking two sequences together:
for city, color in zip(cities, colors):
print(city, '->', color)
# Iterating over a dictionary yields keys:
for key in {'a': 33, 'b': 17, 'c': 18}:
print(key)
# Iterating over a file yields lines:
for line in open('data/short_file.txt'):
print(line)
\end{minted}
\end{pythonfile}
\end{pframe}
\section{Notes about syntax}
\subsection{Indentation}
\begin{pframe}
Python uses indentation to delimit blocks
\begin{itemize}
\item Instead of \texttt{begin ... end} or \texttt{\{ ... \}} in other languages.
\item Always increase indentation by 4 spaces, never use tabs.
\begin{itemize}
\item In any case, be consistent.
\end{itemize}
\end{itemize}
\begin{pythonfile}{indentation\_example.py}
\begin{minted}[linenos]{python}
if False:
if False:
print 'Why am I here?'
else:
while True:
print 'When will it stop?'
print "And we're back to the first indentation level"
\end{minted}
\end{pythonfile}
\end{pframe}
\subsection{Comments}
\begin{pframe}
Comments are prepended by \texttt{\#} and completely ignored.
\begin{pythonfile}{comments\_example.py}
\begin{minted}[linenos]{python}
# Create the list.
l = []
# Add 42 to this list.
l.append(42)
\end{minted}
\end{pythonfile}
\end{pframe}
\subsection{The pass statement}
\begin{pframe}
If you ever need a statement syntactically but don't want to do anything, use \texttt{pass}.
\begin{pythonfile}{comments\_example.py}
\begin{minted}[linenos]{python}
while False:
# This is never executed anyway.
pass
\end{minted}
\end{pythonfile}
\end{pframe}
\section{Functions}
......@@ -318,11 +401,11 @@ for i in range(5):
def add_some_other_number(number, other_number=12):
return number + other_number
add_some_other_number(2, 6)
add_some_other_number(2, 6) # 8
add_some_other_number(3, other_number=4)
add_some_other_number(3, other_number=4) # 7
add_some_other_number(5)
add_some_other_number(5) # 17
\end{minted}
\end{pythonfile}
\end{pframe}
......@@ -333,6 +416,12 @@ add_some_other_number(5)
We can pass functions around just like other values, and call them.
\begin{pythonfile}{function\_values.py}
\begin{minted}[linenos]{python}
def add_two(number):
return number + 2
def add_some_other_number(number, other_number=12):
return number + other_number
functions = [add_two, add_some_other_number]
for function in functions:
print function(7)
......@@ -346,6 +435,7 @@ for function in functions:
\end{pframe}
\subsection{Docstrings}
\begin{pframe}
Like many other definitions, functions can have docstrings.
......@@ -354,12 +444,25 @@ for function in functions:
body with.
\item You can access an object's docstring using help.
\end{itemize}
\begin{pythonfile}{docstring\_example.py}
\begin{minted}[linenos]{python}
def factorial(n):
"""Compute factorial of n in the obious way."""
if n == 0:
return 1
else:
return factorial(n - 1) * n
\end{minted}
\end{pythonfile}
\end{pframe}
\subsection{Higher-order functions}
\begin{pframe}
A function that takes a function as argument is a higher-order function.
\begin{ipython}
\begin{pythonin}{python}