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} %} + +
    +{% for task in data.tasks %} + {% if 'section' in task %} +
+ {% if global.index %}
{% endif -%} + {% if 'markdown' in task.section -%} +
{{ task.section.markdown | markdown }}
+ {% endif %} +
    + {% else %} +
  1. + {{ task.markdown | markdown }} +
  2. + {% set _ = global.update(index = global.index + 1) %} + {% endif %} +{% endfor %} +
diff --git a/lessons/homework/ostrava1/info.yml b/lessons/homework/ostrava1/info.yml new file mode 100644 index 0000000000..4aa669885b --- /dev/null +++ b/lessons/homework/ostrava1/info.yml @@ -0,0 +1,6 @@ +title: Domácí projekty +style: md +data: tasks.yml +attribution: Pro PyLadies CZ napsal Petr Viktorin a další, 2014-2019. +license: cc-by-sa-40 +latex: true diff --git a/lessons/homework/ostrava1/tasks.yml b/lessons/homework/ostrava1/tasks.yml new file mode 100644 index 0000000000..7ef3bd10ed --- /dev/null +++ b/lessons/homework/ostrava1/tasks.yml @@ -0,0 +1,90 @@ +# https://github.com/PyLadiesCZ/pyladies.cz/raw/master/original/v1/s001-install/handout/handout.pdf +# https://github.com/messa/pyladies-courseware/blob/master/data/2018_pyladies_praha_autumn/homeworks/handout1.yaml + +tasks: + +- markdown: | + Doma (nebo pár dní po instalaci, pokud nejsi na srazu) si znovu spusť + Python a zkus, jestli stále funguje. + + ```python + >>> 1 + 1 + 2 + ``` + + Funguje i odčítání? + + ```python + >>> 4 - 2 + ``` + +- markdown: | + A co násobení? + Programátoři nenásobí pomocí · ani ×, použijí jiný _operátor_: hvězdičku. + Vyzkoušej si to. + +- markdown: | + Dělení? Znak ÷ se taky na klávesnici těžko píše (zvlášť na české). + Jak se asi bude dělit? + +- markdown: | + Závorky v Pythonu fungují jako v matematice. Zkus pomocí Pythonu vypočítat: + 3+(4+6)×8÷2−1 = + + Jak se to zapíše v Pythonu? + + mandatory: true + +- markdown: | + Jsou i jiné operátory než `+`, `-` a ty pro násobení a dělení. + Co dělá s čísly operátor `%` (procento)? + +- markdown: | + A co dělá operátor `**` (dvě hvězdičky)? + +- markdown: | + Až budeš příště sahat po kalkulačce, použij místo ní Python. + + submit: false + +- section: {} + +- markdown: | + Python umí i jiné věci než čísla. Třeba takové _řetězce_ – slova, + věty nebo jiný text. + Řetězce se zadávají v uvozovkách – jednoduchých `'` nebo dvojitých `"`: + + ```python + >>> 'Ahoj!' + 'Ahoj!' + ``` + + submit: false + +- markdown: | + Řetězce jdou spojovat sčítáním. Vyzkoušej si to: + + ```python + >>> 'A' + "B" + 'AB' + ``` + + submit: false + +- markdown: | + Co je tady špatně? Jak to spravit? + + ```python + >>> 'Ahoj' + 'PyLadies!' + ``` + +- markdown: | + Řetězce se dají sčítat. Dají se i násobit? Dělit? Odečítat? + +- markdown: | + Co se stane, když se pokusím sečíst číslo a řetězec? + + mandatory: true + +- markdown: | + A vynásobit? diff --git a/lessons/homework/ostrava2/index.md b/lessons/homework/ostrava2/index.md new file mode 100644 index 0000000000..65f4b14598 --- /dev/null +++ b/lessons/homework/ostrava2/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} %} + +
    +{% for task in data.tasks %} + {% if 'section' in task %} +
+ {% if global.index %}
{% endif -%} + {% if 'markdown' in task.section %} +
+ {{ task.section.markdown | markdown }} +
+ {% endif %} +
    + {% else %} +
  1. + {{ task.markdown | markdown }} +
  2. + {% set _ = global.update(index = global.index + 1) %} + {% endif %} +{% endfor %} +
diff --git a/lessons/homework/ostrava2/info.yml b/lessons/homework/ostrava2/info.yml new file mode 100644 index 0000000000..b4818620ae --- /dev/null +++ b/lessons/homework/ostrava2/info.yml @@ -0,0 +1,9 @@ +title: Domácí projekty +style: md +data: tasks.yml +attribution: Pro PyLadies CZ napsal Petr Viktorin a další, 2014-2019. +license: cc-by-sa-40 +css: | + .group-heading {font-style: italic; font-size: 80%; } + td, th {border: 1px solid #ccc; min-width: 3em; } + td code {background-color: transparent; } diff --git a/lessons/homework/ostrava2/tasks.yml b/lessons/homework/ostrava2/tasks.yml new file mode 100644 index 0000000000..7cb546d2ca --- /dev/null +++ b/lessons/homework/ostrava2/tasks.yml @@ -0,0 +1,202 @@ +# https://github.com/PyLadiesCZ/pyladies.cz/raw/master/original/v1/s002-hello-world/handout/handout2.pdf +# https://github.com/messa/pyladies-courseware/blob/master/data/2018_pyladies_praha_autumn/homeworks/handout2.yaml + +tasks: + +- markdown: | + Jakou používáš verzi Pythonu? + +- section: + markdown: | + Následující projekty procvičí orientaci v chybových hláškách. Doporučuji je udělat. + +- markdown: | + Jak se jmenuje druh chyby, která nastane, když… + + - Dáš uvozovky jen na jednu stranu řetězce? — SyntaxError + - Zkusíš odečíst číslo od řetězce? — + - Dělíš nulou? — + - Použiješ proměnnou, která neexistuje? — + - Stiskneš Ctrl+C, když se program ptá na vstup (pomocí input)? — + - Odsadíš příkaz bez předchozího if:? — + - Po `if:` odsadíš jeden příkaz o čtyři mezery a druhý jen o dvě? — + - Neuzavřeš závorku? – + - Zkusíš použít vykřičník (`!`) jako operátor? — + - Napíšeš v příkazu `print(1, 2, 3)` čárku navíc? — + +- markdown: | + _Podívej se na odpovědi na předchozí otázku, ale Python zkus použít jen na ověření._ + + Jaká chyba nastane, když zkusíš použít proměnnou předtím, než do ní něco přiřadíš? + +- markdown: | + _Podívej se na odpovědi na otázku 1, ale Python použij jen na ověření._ + + Jaká chyba nastane, když zkusíš podělit řetězec řetězcem? + +- markdown: | + Lomítko (`/`) je operátor, ale nedá se použít na řetězce. Vykřičník (`!`) v Pythonu není operátor. + Jak se liší „jejich“ chyby? + +- section: + markdown: | + Tenhle projekt by měl přivést k tomu, jak zjišťovat, co v Pythonu jde a co ne. + Druhá část je trochu na zamyšlení. + +- markdown: | + Ne všechno se dá použít jako jméno proměnné. + Fungují pro proměnné následující jména? Pokud ne, proč asi? + +
+ x
+ tlacitko4
+ 34
+ 3e4
+ krůta
+ $i
+ druha-odmocnina
+ readme.txt
+ kratsiStrana
+ POCET_BODU
+ _ (podtržítko)
+ π (pí)
+ True
+ _cache
+ __name__
+ while
+
+ +- section: + markdown: | + Následující projekty jsou na procvičení toho, co jsme dělaly na srazu. Nemáš-li čas, zatím je přeskoč. + +- markdown: | + _Zkus se nedívat na programy ze srazu._ + + Napiš program, který spočítá povrch a objem krychle o straně 2852 cm. + + Abys nemusela tolik hledat v učebnici (vlastně Wikipedii): povrch S = 6a², objem V = a³ + + _Řešení, pro kontrolu: S = 48803424 cm², V = 23197894208 cm³_ + + mandatory: true + +- markdown: | + Změň program tak, aby stranu/poloměr mohl uživatel zadat. + + _Tady už se na materiály ze srazu klidně podívej._ + + mandatory: true + +- section: + markdown: | + Další dva projekty doplňují program ze srazu. + Všechno bude vysvětleno později, takže jestli nemáš čas, přeskoč je. + +- markdown: | + Ulož si následující program jako `pokus.py` a spusť ho několikrát za sebou. Co dělá? + + ``` + from random import randrange + cislo = randrange(3) + print(cislo) + ``` + + _Jak to funguje, to se dozvíme příště; zatím to ber jako kouzelné zaříkadlo._ + + _Aby všechno fungovalo správně, nesmíš mít v aktuálním adresáři soubor jménem `random.py`._ + + mandatory: true + +- markdown: | + Zkombinuj program z předchozího projektu s programem kámen-nůžky-papír a nastav `tah_pocitace` na: + + - `'kámen'`, pokud je cislo 0, + - `'nůžky'`, pokud je cislo 1, + - jinak na `'papír'`. + +- section: + markdown: | + Tyhle projekty kombinují opakování a nové informace. Doporučuji si je projít. + +- markdown: | + Které pythonní _operátory_ dokážeš z hlavy vyjmenovat? + +- markdown: | + Zkusila jsi porovnávat řetězce? + Doplň tuhle tabulku tužkou; pak ověř odpovědi pomocí Pythonu: + + | `a` | | `b` | + |---------|:----:|-----------| + | `2` | > | `1` | + | `1` | < | `2` | + | `'abc'` | == | `'abc'` | + | `'aaa'` | | `'abc'` | + | `'abc'` | | `'Abc'` | + | `'abC'` | | `'abc'` | + | `'abc'` | | `'abcde'` | + | `'abc'` | | `'ábč'` | + | `'abc'` | | ``10`` | + +- markdown: | + Jaká je hodnota proměnné po provedení příkazů: + + * promenna = 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} %} + +
    +{% for task in data.tasks %} + {% if 'section' in task %} +
+ {% if global.index %}
{% endif -%} + {% if 'markdown' in task.section -%} +
+ {{ task.section.markdown | markdown }} +
+ {% endif %} +
    + {% else %} +
  1. + {{ task.markdown | markdown }} +
  2. + {% set _ = global.update(index = global.index + 1) %} + {% endif %} +{% endfor %} +
diff --git a/lessons/homework/ostrava3/info.yml b/lessons/homework/ostrava3/info.yml new file mode 100644 index 0000000000..1240877468 --- /dev/null +++ b/lessons/homework/ostrava3/info.yml @@ -0,0 +1,7 @@ +title: Domácí projekty +style: md +data: tasks.yml +attribution: Pro PyLadies CZ napsal Petr Viktorin a další, 2014-2019. +license: cc-by-sa-40 +css: | + .group-heading {font-style: italic; font-size: 80%; } diff --git a/lessons/homework/ostrava3/static/03_diagram.png b/lessons/homework/ostrava3/static/03_diagram.png new file mode 100644 index 0000000000..a6e9b6f07a Binary files /dev/null and b/lessons/homework/ostrava3/static/03_diagram.png differ diff --git a/lessons/homework/ostrava3/static/03_trojuhelnik.png b/lessons/homework/ostrava3/static/03_trojuhelnik.png new file mode 100644 index 0000000000..3176b4f62e Binary files /dev/null and b/lessons/homework/ostrava3/static/03_trojuhelnik.png differ diff --git a/lessons/homework/ostrava3/static/04_domecek.png b/lessons/homework/ostrava3/static/04_domecek.png new file mode 100644 index 0000000000..bfb3a87efd Binary files /dev/null and b/lessons/homework/ostrava3/static/04_domecek.png differ diff --git a/lessons/homework/ostrava3/static/05_vesnice.png b/lessons/homework/ostrava3/static/05_vesnice.png new file mode 100644 index 0000000000..fd744f9a18 Binary files /dev/null and b/lessons/homework/ostrava3/static/05_vesnice.png differ diff --git a/lessons/homework/ostrava3/static/06_uhelniky.png b/lessons/homework/ostrava3/static/06_uhelniky.png new file mode 100644 index 0000000000..feb527e64e Binary files /dev/null and b/lessons/homework/ostrava3/static/06_uhelniky.png differ diff --git a/lessons/homework/ostrava3/static/10_ornament.png b/lessons/homework/ostrava3/static/10_ornament.png new file mode 100644 index 0000000000..7ad46a3f08 Binary files /dev/null and b/lessons/homework/ostrava3/static/10_ornament.png differ diff --git a/lessons/homework/ostrava3/static/11_ornament.png b/lessons/homework/ostrava3/static/11_ornament.png new file mode 100644 index 0000000000..0828fd44c0 Binary files /dev/null and b/lessons/homework/ostrava3/static/11_ornament.png differ diff --git a/lessons/homework/ostrava3/static/12_spirala.png b/lessons/homework/ostrava3/static/12_spirala.png new file mode 100644 index 0000000000..641f9a8ee1 Binary files /dev/null and b/lessons/homework/ostrava3/static/12_spirala.png differ diff --git a/lessons/homework/ostrava3/static/15_kvetina.png b/lessons/homework/ostrava3/static/15_kvetina.png new file mode 100644 index 0000000000..beb7d4f376 Binary files /dev/null and b/lessons/homework/ostrava3/static/15_kvetina.png differ diff --git a/lessons/homework/ostrava3/tasks.yml b/lessons/homework/ostrava3/tasks.yml new file mode 100644 index 0000000000..d4dded8c67 --- /dev/null +++ b/lessons/homework/ostrava3/tasks.yml @@ -0,0 +1,133 @@ +# https://pyladies.cz/v1/s003-looping/handout/handout3a.pdf +# https://github.com/messa/pyladies-courseware/blob/master/data/2018_pyladies_praha_autumn/homeworks/handout3a.yaml + +tasks: + +- section: + markdown: | + V těchto projektech je určitě něco nového. + Nezadávají postup, jak na odpověď přijít, ale to určitě zvládneš! + +- markdown: | + Co vrací funkce `range`? + +- markdown: | + Co se stane, když pro příkaz `for` + zavoláš funkci `range` se dvěma parametry? + +- markdown: | + Se třemi? + +- section: + markdown: | + Želví kreslení! Tahle sekce tě naučí myslet jako programátorka počítačové grafiky. + Je dobré jednotlivé projekty dělat postupně, a když něco začne fungovat, znovu si + řešení projít a zamyslet se nad ním. + +- markdown: | + Nakresli trojúhelník. + + trojúhelník + + __Poznámka:__ Rovnostranný trojúhelník má vnitřní úhly 60°. Želva se ale otáčí o vedlejší úhel 180 - 60 = 120°. + + diagram + +- markdown: | + Nakresli domeček! + + 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! + + vesnice + +- markdown: | + Nakresli pětiúhelník, šestiúhelník, sedmiúhelník, osmiúhelník. + + mnohoúhelníky + + _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: + + 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: + + ornament + +- markdown: | + Nakresli spirálu. + + spirála + + _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. + + květina + + 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