diff --git a/Pipfile b/Pipfile index 160ae1a168..9d6c91d7c6 100644 --- a/Pipfile +++ b/Pipfile @@ -33,7 +33,7 @@ GitPython = "*" jsonschema = "*" lxml = "*" pygments-pytest = "*" -naucse-render = "<1.0" +naucse-render = "<2.0,>=1.1" [dev-packages] pytest = "*" diff --git a/Pipfile.lock b/Pipfile.lock index abae941e87..173f55be80 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "a5eae78985a62a4066c7c963eb885031dd513a08b16bc5701d932f1000928006" + "sha256": "db186632c63887911e7f7ae4bab01da58591afbdcc687356913159fb24000ab1" }, "pipfile-spec": 6, "requires": { @@ -93,10 +93,10 @@ }, "decorator": { "hashes": [ - "sha256:2c51dff8ef3c447388fe5e4453d24a2bf128d3a4c32af3fabef1f01c6851ab82", - "sha256:c39efa13fbdeb4506c476c9b3babf6a718da943dab7811c206005a4a956c080c" + "sha256:33cd704aea07b4c28b3eb2c97d288a06918275dac0ecebdaf1bc8a48d98adb9e", + "sha256:cabb249f4710888a2fc0e13e9a16c343d932033718ff62e1e9bc93a9d3a9122b" ], - "version": "==4.3.0" + "version": "==4.3.2" }, "defusedxml": { "hashes": [ @@ -262,35 +262,35 @@ }, "lxml": { "hashes": [ - "sha256:0dd6589fa75d369ba06d2b5f38dae107f76ea127f212f6a7bee134f6df2d1d21", - "sha256:1afbac344aa68c29e81ab56c1a9411c3663157b5aee5065b7fa030b398d4f7e0", - "sha256:1baad9d073692421ad5dbbd81430aba6c7f5fdc347f03537ae046ddf2c9b2297", - "sha256:1d8736421a2358becd3edf20260e41a06a0bf08a560480d3a5734a6bcbacf591", - "sha256:1e1d9bddc5afaddf0de76246d3f2152f961697ad7439c559f179002682c45801", - "sha256:1f179dc8b2643715f020f4d119d5529b02cd794c1c8f305868b73b8674d2a03f", - "sha256:241fb7bdf97cb1df1edfa8f0bcdfd80525d4023dac4523a241907c8b2f44e541", - "sha256:2f9765ee5acd3dbdcdc0d0c79309e01f7c16bc8d39b49250bf88de7b46daaf58", - "sha256:312e1e1b1c3ce0c67e0b8105317323e12807955e8186872affb667dbd67971f6", - "sha256:3273db1a8055ca70257fd3691c6d2c216544e1a70b673543e15cc077d8e9c730", - "sha256:34dfaa8c02891f9a246b17a732ca3e99c5e42802416628e740a5d1cb2f50ff49", - "sha256:3aa3f5288af349a0f3a96448ebf2e57e17332d99f4f30b02093b7948bd9f94cc", - "sha256:51102e160b9d83c1cc435162d90b8e3c8c93b28d18d87b60c56522d332d26879", - "sha256:56115fc2e2a4140e8994eb9585119a1ae9223b506826089a3ba753a62bd194a6", - "sha256:69d83de14dbe8fe51dccfd36f88bf0b40f5debeac763edf9f8325180190eba6e", - "sha256:99fdce94aeaa3ccbdfcb1e23b34273605c5853aa92ec23d84c84765178662c6c", - "sha256:a7c0cd5b8a20f3093ee4a67374ccb3b8a126743b15a4d759e2a1bf098faac2b2", - "sha256:abe12886554634ed95416a46701a917784cb2b4c77bfacac6916681d49bbf83d", - "sha256:b4f67b5183bd5f9bafaeb76ad119e977ba570d2b0e61202f534ac9b5c33b4485", - "sha256:bdd7c1658475cc1b867b36d5c4ed4bc316be8d3368abe03d348ba906a1f83b0e", - "sha256:c6f24149a19f611a415a51b9bc5f17b6c2f698e0d6b41ffb3fa9f24d35d05d73", - "sha256:d1e111b3ab98613115a208c1017f266478b0ab224a67bc8eac670fa0bad7d488", - "sha256:d6520aa965773bbab6cb7a791d5895b00d02cf9adc93ac2bf4edb9ac1a6addc5", - "sha256:dd185cde2ccad7b649593b0cda72021bc8a91667417001dbaf24cd746ecb7c11", - "sha256:de2e5b0828a9d285f909b5d2e9d43f1cf6cf21fe65bc7660bdaa1780c7b58298", - "sha256:f726444b8e909c4f41b4fde416e1071cf28fa84634bfb4befdf400933b6463af" + "sha256:0537eee4902e8bf4f41bfee8133f7edf96533dd175930a12086d6a40d62376b2", + "sha256:0562ec748abd230ab87d73384e08fa784f9b9cee89e28696087d2d22c052cc27", + "sha256:09e91831e749fbf0f24608694e4573be0ef51430229450c39c83176cc2e2d353", + "sha256:1ae4c0722fc70c0d4fba43ae33c2885f705e96dce1db41f75ae14a2d2749b428", + "sha256:1c630c083d782cbaf1f7f37f6cac87bda9cff643cf2803a5f180f30d97955cef", + "sha256:2fe74e3836bd8c0fa7467ffae05545233c7f37de1eb765cacfda15ad20c6574a", + "sha256:37af783c2667ead34a811037bda56a0b142ac8438f7ed29ae93f82ddb812fbd6", + "sha256:3f2d9eafbb0b24a33f56acd16f39fc935756524dcb3172892721c54713964c70", + "sha256:47d8365a8ef14097aa4c65730689be51851b4ade677285a3b2daa03b37893e26", + "sha256:510e904079bc56ea784677348e151e1156040dbfb736f1d8ea4b9e6d0ab2d9f4", + "sha256:58d0851da422bba31c7f652a7e9335313cf94a641aa6d73b8f3c67602f75b593", + "sha256:7940d5c2185ffb989203dacbb28e6ae88b4f1bb25d04e17f94b0edd82232bcbd", + "sha256:7cf39bb3a905579836f7a8f3a45320d9eb22f16ab0c1e112efb940ced4d057a5", + "sha256:9563a23c1456c0ab550c087833bc13fcc61013a66c6420921d5b70550ea312bf", + "sha256:95b392952935947e0786a90b75cc33388549dcb19af716b525dae65b186138fc", + "sha256:983129f3fd3cef5c3cf067adcca56e30a169656c00fcc6c648629dbb850b27fa", + "sha256:a0b75b1f1854771844c647c464533def3e0a899dd094a85d1d4ed72ecaaee93d", + "sha256:b5db89cc0ef624f3a81214b7961a99f443b8c91e88188376b6b322fd10d5b118", + "sha256:c0a7751ba1a4bfbe7831920d98cee3ce748007eab8dfda74593d44079568219a", + "sha256:c0c5a7d4aafcc30c9b6d8613a362567e32e5f5b708dc41bc3a81dac56f8af8bb", + "sha256:d4d63d85eacc6cb37b459b16061e1f100d154bee89dc8d8f9a6128a5a538e92e", + "sha256:da5e7e941d6e71c9c9a717c93725cda0708c2474f532e3680ac5e39ec57d224d", + "sha256:dccad2b3c583f036f43f80ac99ee212c2fa9a45151358d55f13004d095e683b2", + "sha256:df46307d39f2aeaafa1d25309b8a8d11738b73e9861f72d4d0a092528f498baa", + "sha256:e70b5e1cb48828ddd2818f99b1662cb9226dc6f57d07fc75485405c77da17436", + "sha256:ea825562b8cd057cbc9810d496b8b5dec37a1e2fc7b27bc7c1e72ce94462a09a" ], "index": "pypi", - "version": "==4.3.0" + "version": "==4.3.1" }, "markupsafe": { "hashes": [ @@ -335,19 +335,18 @@ }, "naucse-render": { "hashes": [ - "sha256:38730174ab499182a0a915c210060fceaa0be49ced88677e50865d6365ef9d34", - "sha256:66a36b29141d37398a2608e1f9718e850bc36908d1aae653531906b039b3ad58" + "sha256:a1d59668fe459095c52825dac43a4d5e15be96119654a9365a83017688f3817d" ], "index": "pypi", - "version": "==0.1" + "version": "==1.1" }, "nbconvert": { "hashes": [ - "sha256:08d21cf4203fabafd0d09bbd63f06131b411db8ebeede34b0fd4be4548351779", - "sha256:a8a2749f972592aa9250db975304af6b7337f32337e523a2c995cc9e12c07807" + "sha256:302554a2e219bc0fc84f3edd3e79953f3767b46ab67626fdec16e38ba3f7efe4", + "sha256:5de8fb2284422272a1d45abc77c07b888127550a6d602ce619592a2b08a474ff" ], "index": "pypi", - "version": "==5.4.0" + "version": "==5.4.1" }, "nbformat": { "hashes": [ @@ -364,10 +363,10 @@ }, "parso": { "hashes": [ - "sha256:35704a43a3c113cce4de228ddb39aab374b8004f4f2407d070b6a2ca784ce8a2", - "sha256:895c63e93b94ac1e1690f5fdd40b65f07c8171e3e53cbd7793b5b96c0e0a7f24" + "sha256:6ecf7244be8e7283ec9009c72d074830e7e0e611c974f813d76db0390a4e0dd6", + "sha256:8162be7570ffb34ec0b8d215d7f3b6c5fab24f51eb3886d6dee362de96b6db94" ], - "version": "==0.3.1" + "version": "==0.3.3" }, "pexpect": { "hashes": [ @@ -386,11 +385,11 @@ }, "prompt-toolkit": { "hashes": [ - "sha256:c1d6aff5252ab2ef391c2fe498ed8c088066f66bc64a8d5c095bbf795d9fec34", - "sha256:d4c47f79b635a0e70b84fdb97ebd9a274203706b1ee5ed44c10da62755cf3ec9", - "sha256:fd17048d8335c1e6d5ee403c3569953ba3eb8555d710bfc548faf0712666ea39" + "sha256:88002cc618cacfda8760c4539e76c3b3f148ecdb7035a3d422c7ecdc90c2a3ba", + "sha256:c6655a12e9b08edb8cf5aeab4815fd1e1bdea4ad73d3bbf269cf2e0c4eb75d5e", + "sha256:df5835fb8f417aa55e5cafadbaeb0cf630a1e824aad16989f9f0493e679ec010" ], - "version": "==2.0.7" + "version": "==2.0.8" }, "ptyprocess": { "hashes": [ @@ -409,19 +408,19 @@ }, "pygments-pytest": { "hashes": [ - "sha256:9c65fbf5fb2364ef48b5e468f0d7b9212bcfa5888b4b43588ae2d56d0b2f8413", - "sha256:dd479d1dc6a4dc5ba40bb0b15932ba9df3edc1d6b8be07b375af1c8c15f7479f" + "sha256:c27f23d5b1b8b7c7ed337e13c98bff4582a86f9d468596cf448c96aac26a0bde", + "sha256:ffbece03459c42470e802b951915a667146603a154fc6505b9c9e8d0216bf176" ], "index": "pypi", - "version": "==1.1.0" + "version": "==1.1.1" }, "python-dateutil": { "hashes": [ - "sha256:063df5763652e21de43de7d9e00ccf239f953a832941e37be541614732cdfc93", - "sha256:88f9287c0174266bb0d8cedd395cfba9c58e87e5ad86b2ce58859bc11be3cf02" + "sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", + "sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e" ], "index": "pypi", - "version": "==2.7.5" + "version": "==2.8.0" }, "pyyaml": { "hashes": [ @@ -558,10 +557,10 @@ "develop": { "atomicwrites": { "hashes": [ - "sha256:0312ad34fcad8fac3704d441f7b317e50af620823353ec657a53e981f92920c0", - "sha256:ec9ae8adaae229e4f8446952d204a3e4b5fdd2d099f9be3aaf556120135fb3ee" + "sha256:03472c30eb2c5d1ba9227e4c2ca66ab8287fbfbbda3888aa93dc2e28fc6811b4", + "sha256:75a9445bac02d8d058d5e1fe689654ba5a6556a1dfd8ce6ec55a0ed79866cfa6" ], - "version": "==1.2.1" + "version": "==1.3.0" }, "attrs": { "hashes": [ @@ -572,11 +571,10 @@ }, "more-itertools": { "hashes": [ - "sha256:38a936c0a6d98a38bcc2d03fdaaedaba9f412879461dd2ceff8d37564d6522e4", - "sha256:c0a5785b1109a6bd7fac76d6837fd1feca158e54e521ccd2ae8bfe393cc9d4fc", - "sha256:fe7a7cae1ccb57d33952113ff4fa1bc5f879963600ed74918f1236e212ee50b9" + "sha256:0125e8f60e9e031347105eb1682cef932f5e97d7b9a1a28d9bf00c22a5daef40", + "sha256:590044e3942351a1bdb1de960b739ff4ce277960f2425ad4509446dbace8d9d1" ], - "version": "==5.0.0" + "version": "==6.0.0" }, "pluggy": { "hashes": [ @@ -594,11 +592,11 @@ }, "pytest": { "hashes": [ - "sha256:41568ea7ecb4a68d7f63837cf65b92ce8d0105e43196ff2b26622995bb3dc4b2", - "sha256:c3c573a29d7c9547fb90217ece8a8843aa0c1328a797e200290dc3d0b4b823be" + "sha256:65aeaa77ae87c7fc95de56285282546cfa9c886dc8e5dc78313db1c25e21bc07", + "sha256:6ac6d467d9f053e95aaacd79f831dbecfe730f419c6c7022cb316b365cd9199d" ], "index": "pypi", - "version": "==4.1.1" + "version": "==4.2.0" }, "pytest-env": { "hashes": [ @@ -609,11 +607,11 @@ }, "pytest-mock": { "hashes": [ - "sha256:53801e621223d34724926a5c98bd90e8e417ce35264365d39d6c896388dcc928", - "sha256:d89a8209d722b8307b5e351496830d5cc5e192336003a485443ae9adeb7dd4c0" + "sha256:4d0d06d173eecf172703219a71dbd4ade0e13904e6bbce1ce660e2e0dc78b5c4", + "sha256:bfdf02789e3d197bd682a758cae0a4a18706566395fbe2803badcd1335e0173e" ], "index": "pypi", - "version": "==1.10.0" + "version": "==1.10.1" }, "six": { "hashes": [ diff --git a/lessons/homework/ostrava1/index.md b/lessons/homework/ostrava1/index.md new file mode 100644 index 0000000000..6572333eef --- /dev/null +++ b/lessons/homework/ostrava1/index.md @@ -0,0 +1,21 @@ +{# Global "index" variable for page-wide numbering of tasks #} +{# (In Jinja we need to store the variable in a "namespace") #} +{% set global = {'index': 0} %} + +
xtlacitko4343e4krůta$idruha-odmocninareadme.txtkratsiStranaPOCET_BODU_ (podtržítko)π (pí)True_cache__name__whilepromenna = 1 < 2 ?
+ * promenna = 2 < 2 ?
+ * promenna = 1 < 2 < 3 ?
+ * promenna = 1 < 3 < 2 ?
+ * promenna = 1 < 3 < 3 ?
+ * promenna = 'abc' < 'ABC' < 'def' < 'zajíc' ?
+
+ Tam, kde je hodnota proměnné `False`, dají se některé z porovnávaných hodnot mezi sebou vyměnit, aby
+ byla `True`?
+
+- section:
+ markdown: |
+ Další dva projekty ti umožní kreativně využít, co ses naučila.
+
+- markdown: |
+ Na srazu jsme měli program, který píše různé nesmysly podle uživatelem zadaného věku.
+
+ Zkus napsat program, který píše hlášky podle zadané rychlosti chůze, váhy ulovené ryby, počtu tykadel,
+ teploty vody nebo třeba vzdálenosti od rovníku.
+
+- markdown: |
+ Napiš program, který po zadání správného hesla vypíše nějakou tajnou informaci.
+
+ _Vhodné tajemství je třeba: V pátek jsem viděla černého havrana._
+
+- section:
+ markdown: |
+ Poslední projekty jsou pokročilejší. Jestli nemáš čas, radši udělej pořádně ty ostatní.
+
+- markdown: |
+ Projdi si v materiálech bonusovou sekci _„Nebo anebo a”_:
+
+ [naucse.python.cz/lessons/beginners/and-or/](https://naucse.python.cz/lessons/beginners/and-or/)
+
+ submit: false
+
+- markdown: |
+ Doplň tuhle tabulku:
+
+ | `a` | `b` | `a and b` | `a or b` | `not a` |
+ |---------|---------|-----------|----------|---------|
+ | `True` | `True` | | | |
+ | `False` | `True` | | | |
+ | `True` | `False` | | | |
+ | `False` | `False` | | | |
+
+ Tohle je takzvaná _pravdivostní_ tabulka:
+ _Obsahuje jeden řádek pro každou kombinaci booleovských hodnot, které `a` a `b` můžou mít. Když se stane, že se v složitějších `and` a `or` ztratíš, doporučuji napsat si podobnou tabulku a na každý řádek se podívat zvlášť._
+
+- markdown: |
+ Zkus přepsat Kámen, Nůžky, Papír pomocí `and` a `or`.
+
+ Dokážeš docílit toho, aby se každý z řetězců `'Plichta.'`, `'Počítač vyhrál.'` a `'Vyhrála jsi!'` objevil
+ v programu jen jednou, aniž bys tyhle řetězce musela přiřazovat do proměnných?
+
+ Pokud ano, gratuluji!
+
+- markdown: |
+ Zkus program „šťastná/bohatá“ přepsat pomocí zanořených `if`ů. Která verze ti připadá čitelnější?
diff --git a/lessons/homework/ostrava3/index.md b/lessons/homework/ostrava3/index.md
new file mode 100644
index 0000000000..cceac3fdda
--- /dev/null
+++ b/lessons/homework/ostrava3/index.md
@@ -0,0 +1,23 @@
+{# Global "index" variable for page-wide numbering of tasks #}
+{# (In Jinja we need to store the variable in a "namespace") #}
+{% set global = {'index': 0} %}
+
+
+
+ __Poznámka:__ Rovnostranný trojúhelník má vnitřní úhly 60°. Želva se ale otáčí o vedlejší úhel 180 - 60 = 120°.
+
+
+
+- markdown: |
+ Nakresli domeček!
+
+
+
+ _Jak pravil Pythagoras, délka šikmé čáry v domečku je √2-krát délka stěny. O funkci na odmocninu jsme mluvili na srazu._
+
+- markdown: |
+ Nakresli vesnici!
+
+
+
+- markdown: |
+ Nakresli pětiúhelník, šestiúhelník, sedmiúhelník, osmiúhelník.
+
+
+
+ _Vnitřní úhel pravidelného n-úhelníka má 180 × (1 - 2/n) stupňů._
+
+ _Aby byly tvary zhruba stejně veliké, použij pro n-úhelník délku strany např. 200/n_
+
+- markdown: |
+ Nakresli n-úhelník, kde n zadá uživatel.
+
+- markdown: |
+ Želva umí jen rovné čáry. Jde pomocí rovných čar nakreslit kolečko?
+
+ _Nevíš-li, přeskoč na další projekt a pak se sem vrať._
+
+- markdown: |
+ Nakresli pětadevadesátiúhelník.
+
+- markdown: |
+ Nakresli takovýto ornament:
+
+
+
+ _Nevíš-li si rady, vezmi pravítko a změř délky jednotlivých čar. Doporučuju začít od středu._
+
+- markdown: |
+ Nakresli takovýto ornament:
+
+
+
+- markdown: |
+ Nakresli spirálu.
+
+
+
+ _Od ornamentů ke spirále se dostaneš stejným způsobem jako od `n`-úhelníků ke kolečku._
+
+- markdown: |
+ Napiš obrázek! Třeba les ze stromů, město z domů, nebe z hvězd,
+ dav ze smajlíků, hradbu z věží, zikkurat ze schodů, ...
+
+ Můžeš použít i nějakou z funkcí modulu `random`.
+
+- section:
+ markdown: |
+ Další projekty jsou pro opravdové grafické mistryně. Nepouštěj se do nich, dokud nemáš hotové ostatní projekty. Nedostaneš-li se k nim, nevadí
+
+- markdown: |
+ Na sraze jsme nakreslili tři čtverce, každý otočený o 20°.
+ Nakresli 18 takových čtverců.
+
+- markdown: |
+ Vezmi program z minulé úlohy a dokresli stonek a listy.
+ Je jenom na tobě, jaký budou mít tvar.
+ Piš komentáře a snaž se opakovat pomocí `for`,
+ ne pomocí Ctrl+C Ctrl+V.
+
+
+
+ mandatory: true
+
+- section:
+ markdown: |
+ A až tě omrzí grafika, zkus zase naprogramovat něco v textovém režimu.
+
+- markdown: |
+ Napiš program, který postupně načte od uživatele dvě čísla a jednoznakový
+ řetězec – buď `'+'`, `'-'`, `'*'` nebo `'/'`. Program provede na číslech příslušnou operaci.
+
+ Příklad použití programu:
+
+ ```
+ První číslo: 123
+ Druhé číslo: 456
+ Operace: +
+ 123 + 456 = 579
+ ```
+
+ mandatory: true
+
+- markdown: |
+ Napiš program, který se pětkrát zeptá na číslo a nejmenší zadané číslo vypíše.
+
+ _Nevíš-li si rady, podívej se do materiálů na sekci Přepisování proměnných. Místo sečítání budeš vybírat správnou hodnotu._
diff --git a/runs/2019/pyladies-ostrava-jaro/info.yml b/runs/2019/pyladies-ostrava-jaro/info.yml
index 9866204d06..f4e32709e2 100644
--- a/runs/2019/pyladies-ostrava-jaro/info.yml
+++ b/runs/2019/pyladies-ostrava-jaro/info.yml
@@ -41,8 +41,7 @@ plan:
- title: Tahák na klávesnici (PDF)
url: https://pyvec.github.io/cheatsheets/keyboard/keyboard-cs.pdf
type: cheatsheet
- - title: Instrukce a domácí projekty (PDF)
- url: http://pyladies.cz/v1/s001-install/handout/handout.pdf
+ - lesson: homework/ostrava1
type: homework
- title: První program
slug: hello-world
@@ -60,8 +59,7 @@ plan:
- title: Společná večeře PyLadies ve Slezské P.U.O.R.
type: special
url: http://slezska.com/
- - title: Domácí projekty (PDF)
- url: http://pyladies.cz/v1/s002-hello-world/handout/handout2-ostrava.pdf
+ - lesson: homework/ostrava2
type: homework
- title: "Nebo anebo a (bonus)"
lesson: beginners/and-or
@@ -81,8 +79,7 @@ plan:
- title: Tahák s užitečnými funkcemi
url: https://pyvec.github.io/cheatsheets/basic-functions/basic-functions-cs.pdf
type: cheatsheet
- - title: Domácí projekty (PDF)
- url: http://pyladies.cz/v1/s003-looping/handout/handout3a.pdf
+ - lesson: homework/ostrava3
type: homework
- title: Odevzdání domácích projektů
type: link