pythonlings 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pythonlings/__init__.py +0 -0
- pythonlings/__main__.py +4 -0
- pythonlings/app.py +84 -0
- pythonlings/cli.py +318 -0
- pythonlings/core/__init__.py +0 -0
- pythonlings/core/curriculum.py +106 -0
- pythonlings/core/docs.py +68 -0
- pythonlings/core/exercise.py +33 -0
- pythonlings/core/manifest.py +110 -0
- pythonlings/core/reset.py +43 -0
- pythonlings/core/runner.py +114 -0
- pythonlings/core/solutions.py +17 -0
- pythonlings/core/state.py +86 -0
- pythonlings/curriculum/checks/async/async1.py +4 -0
- pythonlings/curriculum/checks/async/async10.py +4 -0
- pythonlings/curriculum/checks/async/async2.py +4 -0
- pythonlings/curriculum/checks/async/async3.py +4 -0
- pythonlings/curriculum/checks/async/async4.py +4 -0
- pythonlings/curriculum/checks/async/async5.py +4 -0
- pythonlings/curriculum/checks/async/async6.py +4 -0
- pythonlings/curriculum/checks/async/async7.py +4 -0
- pythonlings/curriculum/checks/async/async8.py +2 -0
- pythonlings/curriculum/checks/async/async9.py +4 -0
- pythonlings/curriculum/checks/classes/classes1.py +3 -0
- pythonlings/curriculum/checks/classes/classes10.py +5 -0
- pythonlings/curriculum/checks/classes/classes11.py +5 -0
- pythonlings/curriculum/checks/classes/classes12.py +16 -0
- pythonlings/curriculum/checks/classes/classes2.py +3 -0
- pythonlings/curriculum/checks/classes/classes3.py +4 -0
- pythonlings/curriculum/checks/classes/classes4.py +4 -0
- pythonlings/curriculum/checks/classes/classes5.py +5 -0
- pythonlings/curriculum/checks/classes/classes6.py +4 -0
- pythonlings/curriculum/checks/classes/classes7.py +3 -0
- pythonlings/curriculum/checks/classes/classes8.py +3 -0
- pythonlings/curriculum/checks/classes/classes9.py +4 -0
- pythonlings/curriculum/checks/collections/collections1.py +4 -0
- pythonlings/curriculum/checks/collections/collections10.py +15 -0
- pythonlings/curriculum/checks/collections/collections2.py +4 -0
- pythonlings/curriculum/checks/collections/collections3.py +5 -0
- pythonlings/curriculum/checks/collections/collections4.py +4 -0
- pythonlings/curriculum/checks/collections/collections5.py +5 -0
- pythonlings/curriculum/checks/collections/collections6.py +6 -0
- pythonlings/curriculum/checks/collections/collections7.py +4 -0
- pythonlings/curriculum/checks/collections/collections8.py +5 -0
- pythonlings/curriculum/checks/collections/collections9.py +9 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions1.py +3 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions10.py +5 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions2.py +3 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions3.py +3 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions4.py +6 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions5.py +3 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions6.py +3 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions7.py +4 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions8.py +5 -0
- pythonlings/curriculum/checks/comprehensions/comprehensions9.py +3 -0
- pythonlings/curriculum/checks/conditionals/conditionals1.py +2 -0
- pythonlings/curriculum/checks/conditionals/conditionals10.py +10 -0
- pythonlings/curriculum/checks/conditionals/conditionals2.py +5 -0
- pythonlings/curriculum/checks/conditionals/conditionals3.py +9 -0
- pythonlings/curriculum/checks/conditionals/conditionals4.py +7 -0
- pythonlings/curriculum/checks/conditionals/conditionals5.py +9 -0
- pythonlings/curriculum/checks/conditionals/conditionals6.py +7 -0
- pythonlings/curriculum/checks/conditionals/conditionals7.py +7 -0
- pythonlings/curriculum/checks/conditionals/conditionals8.py +9 -0
- pythonlings/curriculum/checks/conditionals/conditionals9.py +7 -0
- pythonlings/curriculum/checks/context_managers/context_managers1.py +15 -0
- pythonlings/curriculum/checks/context_managers/context_managers2.py +10 -0
- pythonlings/curriculum/checks/context_managers/context_managers3.py +2 -0
- pythonlings/curriculum/checks/context_managers/context_managers4.py +3 -0
- pythonlings/curriculum/checks/context_managers/context_managers5.py +5 -0
- pythonlings/curriculum/checks/context_managers/context_managers6.py +4 -0
- pythonlings/curriculum/checks/context_managers/context_managers7.py +16 -0
- pythonlings/curriculum/checks/context_managers/context_managers8.py +15 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses1.py +3 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses2.py +5 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses3.py +4 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses4.py +3 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses5.py +9 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses6.py +6 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses7.py +6 -0
- pythonlings/curriculum/checks/dataclasses/dataclasses8.py +5 -0
- pythonlings/curriculum/checks/datetime/datetime1.py +4 -0
- pythonlings/curriculum/checks/datetime/datetime2.py +4 -0
- pythonlings/curriculum/checks/datetime/datetime3.py +6 -0
- pythonlings/curriculum/checks/datetime/datetime4.py +2 -0
- pythonlings/curriculum/checks/datetime/datetime5.py +2 -0
- pythonlings/curriculum/checks/datetime/datetime6.py +2 -0
- pythonlings/curriculum/checks/datetime/datetime7.py +2 -0
- pythonlings/curriculum/checks/datetime/datetime8.py +5 -0
- pythonlings/curriculum/checks/decorators/decorators1.py +8 -0
- pythonlings/curriculum/checks/decorators/decorators10.py +12 -0
- pythonlings/curriculum/checks/decorators/decorators2.py +5 -0
- pythonlings/curriculum/checks/decorators/decorators3.py +4 -0
- pythonlings/curriculum/checks/decorators/decorators4.py +7 -0
- pythonlings/curriculum/checks/decorators/decorators5.py +5 -0
- pythonlings/curriculum/checks/decorators/decorators6.py +8 -0
- pythonlings/curriculum/checks/decorators/decorators7.py +12 -0
- pythonlings/curriculum/checks/decorators/decorators8.py +20 -0
- pythonlings/curriculum/checks/decorators/decorators9.py +4 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries1.py +3 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries10.py +5 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries2.py +2 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries3.py +5 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries4.py +5 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries5.py +11 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries6.py +4 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries7.py +5 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries8.py +4 -0
- pythonlings/curriculum/checks/dictionaries/dictionaries9.py +4 -0
- pythonlings/curriculum/checks/enums/enums1.py +4 -0
- pythonlings/curriculum/checks/enums/enums2.py +3 -0
- pythonlings/curriculum/checks/enums/enums3.py +3 -0
- pythonlings/curriculum/checks/enums/enums4.py +2 -0
- pythonlings/curriculum/checks/enums/enums5.py +4 -0
- pythonlings/curriculum/checks/enums/enums6.py +3 -0
- pythonlings/curriculum/checks/exceptions/exceptions1.py +4 -0
- pythonlings/curriculum/checks/exceptions/exceptions10.py +39 -0
- pythonlings/curriculum/checks/exceptions/exceptions2.py +5 -0
- pythonlings/curriculum/checks/exceptions/exceptions3.py +8 -0
- pythonlings/curriculum/checks/exceptions/exceptions4.py +5 -0
- pythonlings/curriculum/checks/exceptions/exceptions5.py +10 -0
- pythonlings/curriculum/checks/exceptions/exceptions6.py +17 -0
- pythonlings/curriculum/checks/exceptions/exceptions7.py +15 -0
- pythonlings/curriculum/checks/exceptions/exceptions8.py +6 -0
- pythonlings/curriculum/checks/exceptions/exceptions9.py +16 -0
- pythonlings/curriculum/checks/file_io/file_io1.py +15 -0
- pythonlings/curriculum/checks/file_io/file_io10.py +16 -0
- pythonlings/curriculum/checks/file_io/file_io2.py +10 -0
- pythonlings/curriculum/checks/file_io/file_io3.py +15 -0
- pythonlings/curriculum/checks/file_io/file_io4.py +14 -0
- pythonlings/curriculum/checks/file_io/file_io5.py +15 -0
- pythonlings/curriculum/checks/file_io/file_io6.py +10 -0
- pythonlings/curriculum/checks/file_io/file_io7.py +15 -0
- pythonlings/curriculum/checks/file_io/file_io8.py +12 -0
- pythonlings/curriculum/checks/file_io/file_io9.py +10 -0
- pythonlings/curriculum/checks/functional/functional1.py +4 -0
- pythonlings/curriculum/checks/functional/functional10.py +7 -0
- pythonlings/curriculum/checks/functional/functional2.py +5 -0
- pythonlings/curriculum/checks/functional/functional3.py +3 -0
- pythonlings/curriculum/checks/functional/functional4.py +4 -0
- pythonlings/curriculum/checks/functional/functional5.py +6 -0
- pythonlings/curriculum/checks/functional/functional6.py +8 -0
- pythonlings/curriculum/checks/functional/functional7.py +8 -0
- pythonlings/curriculum/checks/functional/functional8.py +7 -0
- pythonlings/curriculum/checks/functional/functional9.py +8 -0
- pythonlings/curriculum/checks/functions/functions1.py +9 -0
- pythonlings/curriculum/checks/functions/functions10.py +12 -0
- pythonlings/curriculum/checks/functions/functions2.py +4 -0
- pythonlings/curriculum/checks/functions/functions3.py +6 -0
- pythonlings/curriculum/checks/functions/functions4.py +6 -0
- pythonlings/curriculum/checks/functions/functions5.py +6 -0
- pythonlings/curriculum/checks/functions/functions6.py +8 -0
- pythonlings/curriculum/checks/functions/functions7.py +7 -0
- pythonlings/curriculum/checks/functions/functions8.py +6 -0
- pythonlings/curriculum/checks/functions/functions9.py +7 -0
- pythonlings/curriculum/checks/generators/generators1.py +4 -0
- pythonlings/curriculum/checks/generators/generators10.py +7 -0
- pythonlings/curriculum/checks/generators/generators2.py +3 -0
- pythonlings/curriculum/checks/generators/generators3.py +4 -0
- pythonlings/curriculum/checks/generators/generators4.py +9 -0
- pythonlings/curriculum/checks/generators/generators5.py +10 -0
- pythonlings/curriculum/checks/generators/generators6.py +8 -0
- pythonlings/curriculum/checks/generators/generators7.py +11 -0
- pythonlings/curriculum/checks/generators/generators8.py +8 -0
- pythonlings/curriculum/checks/generators/generators9.py +13 -0
- pythonlings/curriculum/checks/itertools/itertools1.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools2.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools3.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools4.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools5.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools6.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools7.py +2 -0
- pythonlings/curriculum/checks/itertools/itertools8.py +3 -0
- pythonlings/curriculum/checks/json/json1.py +3 -0
- pythonlings/curriculum/checks/json/json2.py +2 -0
- pythonlings/curriculum/checks/json/json3.py +2 -0
- pythonlings/curriculum/checks/json/json4.py +2 -0
- pythonlings/curriculum/checks/json/json5.py +2 -0
- pythonlings/curriculum/checks/json/json6.py +2 -0
- pythonlings/curriculum/checks/json/json7.py +3 -0
- pythonlings/curriculum/checks/json/json8.py +4 -0
- pythonlings/curriculum/checks/lists/lists1.py +2 -0
- pythonlings/curriculum/checks/lists/lists10.py +5 -0
- pythonlings/curriculum/checks/lists/lists2.py +3 -0
- pythonlings/curriculum/checks/lists/lists3.py +4 -0
- pythonlings/curriculum/checks/lists/lists4.py +3 -0
- pythonlings/curriculum/checks/lists/lists5.py +4 -0
- pythonlings/curriculum/checks/lists/lists6.py +3 -0
- pythonlings/curriculum/checks/lists/lists7.py +4 -0
- pythonlings/curriculum/checks/lists/lists8.py +7 -0
- pythonlings/curriculum/checks/lists/lists9.py +4 -0
- pythonlings/curriculum/checks/loops/loops1.py +2 -0
- pythonlings/curriculum/checks/loops/loops10.py +6 -0
- pythonlings/curriculum/checks/loops/loops2.py +2 -0
- pythonlings/curriculum/checks/loops/loops3.py +2 -0
- pythonlings/curriculum/checks/loops/loops4.py +3 -0
- pythonlings/curriculum/checks/loops/loops5.py +2 -0
- pythonlings/curriculum/checks/loops/loops6.py +2 -0
- pythonlings/curriculum/checks/loops/loops7.py +2 -0
- pythonlings/curriculum/checks/loops/loops8.py +2 -0
- pythonlings/curriculum/checks/loops/loops9.py +3 -0
- pythonlings/curriculum/checks/modules/modules1.py +2 -0
- pythonlings/curriculum/checks/modules/modules2.py +2 -0
- pythonlings/curriculum/checks/modules/modules3.py +5 -0
- pythonlings/curriculum/checks/modules/modules4.py +8 -0
- pythonlings/curriculum/checks/modules/modules5.py +7 -0
- pythonlings/curriculum/checks/modules/modules6.py +4 -0
- pythonlings/curriculum/checks/modules/modules7.py +4 -0
- pythonlings/curriculum/checks/modules/modules8.py +15 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced1.py +4 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced10.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced11.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced12.py +4 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced2.py +4 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced3.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced4.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced5.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced6.py +2 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced7.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced8.py +3 -0
- pythonlings/curriculum/checks/oop_advanced/oop_advanced9.py +4 -0
- pythonlings/curriculum/checks/pathlib/pathlib1.py +5 -0
- pythonlings/curriculum/checks/pathlib/pathlib2.py +4 -0
- pythonlings/curriculum/checks/pathlib/pathlib3.py +6 -0
- pythonlings/curriculum/checks/pathlib/pathlib4.py +4 -0
- pythonlings/curriculum/checks/pathlib/pathlib5.py +4 -0
- pythonlings/curriculum/checks/pathlib/pathlib6.py +5 -0
- pythonlings/curriculum/checks/recursion/recursion1.py +5 -0
- pythonlings/curriculum/checks/recursion/recursion2.py +5 -0
- pythonlings/curriculum/checks/recursion/recursion3.py +6 -0
- pythonlings/curriculum/checks/recursion/recursion4.py +6 -0
- pythonlings/curriculum/checks/recursion/recursion5.py +7 -0
- pythonlings/curriculum/checks/recursion/recursion6.py +7 -0
- pythonlings/curriculum/checks/recursion/recursion7.py +7 -0
- pythonlings/curriculum/checks/recursion/recursion8.py +15 -0
- pythonlings/curriculum/checks/regex/regex1.py +3 -0
- pythonlings/curriculum/checks/regex/regex10.py +17 -0
- pythonlings/curriculum/checks/regex/regex2.py +3 -0
- pythonlings/curriculum/checks/regex/regex3.py +2 -0
- pythonlings/curriculum/checks/regex/regex4.py +4 -0
- pythonlings/curriculum/checks/regex/regex5.py +4 -0
- pythonlings/curriculum/checks/regex/regex6.py +6 -0
- pythonlings/curriculum/checks/regex/regex7.py +5 -0
- pythonlings/curriculum/checks/regex/regex8.py +6 -0
- pythonlings/curriculum/checks/regex/regex9.py +8 -0
- pythonlings/curriculum/checks/sets/sets1.py +3 -0
- pythonlings/curriculum/checks/sets/sets10.py +15 -0
- pythonlings/curriculum/checks/sets/sets2.py +5 -0
- pythonlings/curriculum/checks/sets/sets3.py +5 -0
- pythonlings/curriculum/checks/sets/sets4.py +3 -0
- pythonlings/curriculum/checks/sets/sets5.py +3 -0
- pythonlings/curriculum/checks/sets/sets6.py +3 -0
- pythonlings/curriculum/checks/sets/sets7.py +5 -0
- pythonlings/curriculum/checks/sets/sets8.py +5 -0
- pythonlings/curriculum/checks/sets/sets9.py +3 -0
- pythonlings/curriculum/checks/strings/strings1.py +3 -0
- pythonlings/curriculum/checks/strings/strings10.py +5 -0
- pythonlings/curriculum/checks/strings/strings2.py +3 -0
- pythonlings/curriculum/checks/strings/strings3.py +3 -0
- pythonlings/curriculum/checks/strings/strings4.py +2 -0
- pythonlings/curriculum/checks/strings/strings5.py +4 -0
- pythonlings/curriculum/checks/strings/strings6.py +3 -0
- pythonlings/curriculum/checks/strings/strings7.py +3 -0
- pythonlings/curriculum/checks/strings/strings8.py +3 -0
- pythonlings/curriculum/checks/strings/strings9.py +3 -0
- pythonlings/curriculum/checks/testing/testing1.py +2 -0
- pythonlings/curriculum/checks/testing/testing10.py +9 -0
- pythonlings/curriculum/checks/testing/testing11.py +7 -0
- pythonlings/curriculum/checks/testing/testing12.py +19 -0
- pythonlings/curriculum/checks/testing/testing2.py +2 -0
- pythonlings/curriculum/checks/testing/testing3.py +12 -0
- pythonlings/curriculum/checks/testing/testing4.py +6 -0
- pythonlings/curriculum/checks/testing/testing5.py +6 -0
- pythonlings/curriculum/checks/testing/testing6.py +14 -0
- pythonlings/curriculum/checks/testing/testing7.py +14 -0
- pythonlings/curriculum/checks/testing/testing8.py +27 -0
- pythonlings/curriculum/checks/testing/testing9.py +14 -0
- pythonlings/curriculum/checks/tuples/tuples1.py +3 -0
- pythonlings/curriculum/checks/tuples/tuples10.py +6 -0
- pythonlings/curriculum/checks/tuples/tuples2.py +3 -0
- pythonlings/curriculum/checks/tuples/tuples3.py +4 -0
- pythonlings/curriculum/checks/tuples/tuples4.py +3 -0
- pythonlings/curriculum/checks/tuples/tuples5.py +4 -0
- pythonlings/curriculum/checks/tuples/tuples6.py +5 -0
- pythonlings/curriculum/checks/tuples/tuples7.py +3 -0
- pythonlings/curriculum/checks/tuples/tuples8.py +4 -0
- pythonlings/curriculum/checks/tuples/tuples9.py +5 -0
- pythonlings/curriculum/checks/type_hints/type_hints1.py +3 -0
- pythonlings/curriculum/checks/type_hints/type_hints2.py +5 -0
- pythonlings/curriculum/checks/type_hints/type_hints3.py +5 -0
- pythonlings/curriculum/checks/type_hints/type_hints4.py +5 -0
- pythonlings/curriculum/checks/type_hints/type_hints5.py +6 -0
- pythonlings/curriculum/checks/type_hints/type_hints6.py +7 -0
- pythonlings/curriculum/checks/type_hints/type_hints7.py +9 -0
- pythonlings/curriculum/checks/type_hints/type_hints8.py +9 -0
- pythonlings/curriculum/checks/variables/variables1.py +7 -0
- pythonlings/curriculum/checks/variables/variables10.py +4 -0
- pythonlings/curriculum/checks/variables/variables2.py +19 -0
- pythonlings/curriculum/checks/variables/variables3.py +4 -0
- pythonlings/curriculum/checks/variables/variables4.py +2 -0
- pythonlings/curriculum/checks/variables/variables5.py +2 -0
- pythonlings/curriculum/checks/variables/variables6.py +4 -0
- pythonlings/curriculum/checks/variables/variables7.py +3 -0
- pythonlings/curriculum/checks/variables/variables8.py +4 -0
- pythonlings/curriculum/checks/variables/variables9.py +3 -0
- pythonlings/curriculum/exercises/async/async1.py +7 -0
- pythonlings/curriculum/exercises/async/async10.py +14 -0
- pythonlings/curriculum/exercises/async/async2.py +10 -0
- pythonlings/curriculum/exercises/async/async3.py +10 -0
- pythonlings/curriculum/exercises/async/async4.py +15 -0
- pythonlings/curriculum/exercises/async/async5.py +13 -0
- pythonlings/curriculum/exercises/async/async6.py +14 -0
- pythonlings/curriculum/exercises/async/async7.py +13 -0
- pythonlings/curriculum/exercises/async/async8.py +11 -0
- pythonlings/curriculum/exercises/async/async9.py +13 -0
- pythonlings/curriculum/exercises/classes/classes1.py +13 -0
- pythonlings/curriculum/exercises/classes/classes10.py +22 -0
- pythonlings/curriculum/exercises/classes/classes11.py +24 -0
- pythonlings/curriculum/exercises/classes/classes12.py +33 -0
- pythonlings/curriculum/exercises/classes/classes2.py +13 -0
- pythonlings/curriculum/exercises/classes/classes3.py +13 -0
- pythonlings/curriculum/exercises/classes/classes4.py +16 -0
- pythonlings/curriculum/exercises/classes/classes5.py +18 -0
- pythonlings/curriculum/exercises/classes/classes6.py +15 -0
- pythonlings/curriculum/exercises/classes/classes7.py +18 -0
- pythonlings/curriculum/exercises/classes/classes8.py +14 -0
- pythonlings/curriculum/exercises/classes/classes9.py +18 -0
- pythonlings/curriculum/exercises/collections/collections1.py +11 -0
- pythonlings/curriculum/exercises/collections/collections10.py +37 -0
- pythonlings/curriculum/exercises/collections/collections2.py +18 -0
- pythonlings/curriculum/exercises/collections/collections3.py +17 -0
- pythonlings/curriculum/exercises/collections/collections4.py +26 -0
- pythonlings/curriculum/exercises/collections/collections5.py +14 -0
- pythonlings/curriculum/exercises/collections/collections6.py +18 -0
- pythonlings/curriculum/exercises/collections/collections7.py +20 -0
- pythonlings/curriculum/exercises/collections/collections8.py +23 -0
- pythonlings/curriculum/exercises/collections/collections9.py +21 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions1.py +10 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions10.py +15 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions2.py +12 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions3.py +12 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions4.py +14 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions5.py +12 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions6.py +12 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions7.py +12 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions8.py +15 -0
- pythonlings/curriculum/exercises/comprehensions/comprehensions9.py +13 -0
- pythonlings/curriculum/exercises/conditionals/conditionals1.py +15 -0
- pythonlings/curriculum/exercises/conditionals/conditionals10.py +18 -0
- pythonlings/curriculum/exercises/conditionals/conditionals2.py +13 -0
- pythonlings/curriculum/exercises/conditionals/conditionals3.py +18 -0
- pythonlings/curriculum/exercises/conditionals/conditionals4.py +20 -0
- pythonlings/curriculum/exercises/conditionals/conditionals5.py +17 -0
- pythonlings/curriculum/exercises/conditionals/conditionals6.py +15 -0
- pythonlings/curriculum/exercises/conditionals/conditionals7.py +18 -0
- pythonlings/curriculum/exercises/conditionals/conditionals8.py +20 -0
- pythonlings/curriculum/exercises/conditionals/conditionals9.py +12 -0
- pythonlings/curriculum/exercises/context_managers/context_managers1.py +18 -0
- pythonlings/curriculum/exercises/context_managers/context_managers2.py +19 -0
- pythonlings/curriculum/exercises/context_managers/context_managers3.py +24 -0
- pythonlings/curriculum/exercises/context_managers/context_managers4.py +30 -0
- pythonlings/curriculum/exercises/context_managers/context_managers5.py +30 -0
- pythonlings/curriculum/exercises/context_managers/context_managers6.py +26 -0
- pythonlings/curriculum/exercises/context_managers/context_managers7.py +30 -0
- pythonlings/curriculum/exercises/context_managers/context_managers8.py +45 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses1.py +14 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses2.py +23 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses3.py +21 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses4.py +25 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses5.py +25 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses6.py +21 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses7.py +27 -0
- pythonlings/curriculum/exercises/dataclasses/dataclasses8.py +30 -0
- pythonlings/curriculum/exercises/datetime/datetime1.py +8 -0
- pythonlings/curriculum/exercises/datetime/datetime2.py +9 -0
- pythonlings/curriculum/exercises/datetime/datetime3.py +9 -0
- pythonlings/curriculum/exercises/datetime/datetime4.py +9 -0
- pythonlings/curriculum/exercises/datetime/datetime5.py +10 -0
- pythonlings/curriculum/exercises/datetime/datetime6.py +10 -0
- pythonlings/curriculum/exercises/datetime/datetime7.py +10 -0
- pythonlings/curriculum/exercises/datetime/datetime8.py +11 -0
- pythonlings/curriculum/exercises/decorators/decorators1.py +19 -0
- pythonlings/curriculum/exercises/decorators/decorators10.py +32 -0
- pythonlings/curriculum/exercises/decorators/decorators2.py +22 -0
- pythonlings/curriculum/exercises/decorators/decorators3.py +18 -0
- pythonlings/curriculum/exercises/decorators/decorators4.py +24 -0
- pythonlings/curriculum/exercises/decorators/decorators5.py +25 -0
- pythonlings/curriculum/exercises/decorators/decorators6.py +19 -0
- pythonlings/curriculum/exercises/decorators/decorators7.py +25 -0
- pythonlings/curriculum/exercises/decorators/decorators8.py +25 -0
- pythonlings/curriculum/exercises/decorators/decorators9.py +26 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries1.py +6 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries10.py +17 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries2.py +9 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries3.py +16 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries4.py +15 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries5.py +15 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries6.py +18 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries7.py +17 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries8.py +17 -0
- pythonlings/curriculum/exercises/dictionaries/dictionaries9.py +25 -0
- pythonlings/curriculum/exercises/enums/enums1.py +12 -0
- pythonlings/curriculum/exercises/enums/enums2.py +11 -0
- pythonlings/curriculum/exercises/enums/enums3.py +14 -0
- pythonlings/curriculum/exercises/enums/enums4.py +13 -0
- pythonlings/curriculum/exercises/enums/enums5.py +14 -0
- pythonlings/curriculum/exercises/enums/enums6.py +15 -0
- pythonlings/curriculum/exercises/exceptions/exceptions1.py +15 -0
- pythonlings/curriculum/exercises/exceptions/exceptions10.py +19 -0
- pythonlings/curriculum/exercises/exceptions/exceptions2.py +12 -0
- pythonlings/curriculum/exercises/exceptions/exceptions3.py +13 -0
- pythonlings/curriculum/exercises/exceptions/exceptions4.py +17 -0
- pythonlings/curriculum/exercises/exceptions/exceptions5.py +20 -0
- pythonlings/curriculum/exercises/exceptions/exceptions6.py +13 -0
- pythonlings/curriculum/exercises/exceptions/exceptions7.py +15 -0
- pythonlings/curriculum/exercises/exceptions/exceptions8.py +17 -0
- pythonlings/curriculum/exercises/exceptions/exceptions9.py +20 -0
- pythonlings/curriculum/exercises/file_io/file_io1.py +18 -0
- pythonlings/curriculum/exercises/file_io/file_io10.py +25 -0
- pythonlings/curriculum/exercises/file_io/file_io2.py +16 -0
- pythonlings/curriculum/exercises/file_io/file_io3.py +18 -0
- pythonlings/curriculum/exercises/file_io/file_io4.py +21 -0
- pythonlings/curriculum/exercises/file_io/file_io5.py +19 -0
- pythonlings/curriculum/exercises/file_io/file_io6.py +22 -0
- pythonlings/curriculum/exercises/file_io/file_io7.py +20 -0
- pythonlings/curriculum/exercises/file_io/file_io8.py +18 -0
- pythonlings/curriculum/exercises/file_io/file_io9.py +19 -0
- pythonlings/curriculum/exercises/functional/functional1.py +7 -0
- pythonlings/curriculum/exercises/functional/functional10.py +19 -0
- pythonlings/curriculum/exercises/functional/functional2.py +8 -0
- pythonlings/curriculum/exercises/functional/functional3.py +11 -0
- pythonlings/curriculum/exercises/functional/functional4.py +11 -0
- pythonlings/curriculum/exercises/functional/functional5.py +11 -0
- pythonlings/curriculum/exercises/functional/functional6.py +14 -0
- pythonlings/curriculum/exercises/functional/functional7.py +12 -0
- pythonlings/curriculum/exercises/functional/functional8.py +13 -0
- pythonlings/curriculum/exercises/functional/functional9.py +15 -0
- pythonlings/curriculum/exercises/functions/functions1.py +8 -0
- pythonlings/curriculum/exercises/functions/functions10.py +19 -0
- pythonlings/curriculum/exercises/functions/functions2.py +9 -0
- pythonlings/curriculum/exercises/functions/functions3.py +8 -0
- pythonlings/curriculum/exercises/functions/functions4.py +8 -0
- pythonlings/curriculum/exercises/functions/functions5.py +11 -0
- pythonlings/curriculum/exercises/functions/functions6.py +16 -0
- pythonlings/curriculum/exercises/functions/functions7.py +11 -0
- pythonlings/curriculum/exercises/functions/functions8.py +10 -0
- pythonlings/curriculum/exercises/functions/functions9.py +16 -0
- pythonlings/curriculum/exercises/generators/generators1.py +13 -0
- pythonlings/curriculum/exercises/generators/generators10.py +16 -0
- pythonlings/curriculum/exercises/generators/generators2.py +17 -0
- pythonlings/curriculum/exercises/generators/generators3.py +19 -0
- pythonlings/curriculum/exercises/generators/generators4.py +12 -0
- pythonlings/curriculum/exercises/generators/generators5.py +24 -0
- pythonlings/curriculum/exercises/generators/generators6.py +20 -0
- pythonlings/curriculum/exercises/generators/generators7.py +14 -0
- pythonlings/curriculum/exercises/generators/generators8.py +17 -0
- pythonlings/curriculum/exercises/generators/generators9.py +26 -0
- pythonlings/curriculum/exercises/itertools/itertools1.py +10 -0
- pythonlings/curriculum/exercises/itertools/itertools2.py +8 -0
- pythonlings/curriculum/exercises/itertools/itertools3.py +10 -0
- pythonlings/curriculum/exercises/itertools/itertools4.py +12 -0
- pythonlings/curriculum/exercises/itertools/itertools5.py +9 -0
- pythonlings/curriculum/exercises/itertools/itertools6.py +9 -0
- pythonlings/curriculum/exercises/itertools/itertools7.py +10 -0
- pythonlings/curriculum/exercises/itertools/itertools8.py +18 -0
- pythonlings/curriculum/exercises/json/json1.py +10 -0
- pythonlings/curriculum/exercises/json/json2.py +9 -0
- pythonlings/curriculum/exercises/json/json3.py +10 -0
- pythonlings/curriculum/exercises/json/json4.py +13 -0
- pythonlings/curriculum/exercises/json/json5.py +9 -0
- pythonlings/curriculum/exercises/json/json6.py +10 -0
- pythonlings/curriculum/exercises/json/json7.py +10 -0
- pythonlings/curriculum/exercises/json/json8.py +12 -0
- pythonlings/curriculum/exercises/lists/lists1.py +7 -0
- pythonlings/curriculum/exercises/lists/lists10.py +28 -0
- pythonlings/curriculum/exercises/lists/lists2.py +13 -0
- pythonlings/curriculum/exercises/lists/lists3.py +16 -0
- pythonlings/curriculum/exercises/lists/lists4.py +16 -0
- pythonlings/curriculum/exercises/lists/lists5.py +16 -0
- pythonlings/curriculum/exercises/lists/lists6.py +15 -0
- pythonlings/curriculum/exercises/lists/lists7.py +13 -0
- pythonlings/curriculum/exercises/lists/lists8.py +15 -0
- pythonlings/curriculum/exercises/lists/lists9.py +19 -0
- pythonlings/curriculum/exercises/loops/loops1.py +8 -0
- pythonlings/curriculum/exercises/loops/loops10.py +22 -0
- pythonlings/curriculum/exercises/loops/loops2.py +10 -0
- pythonlings/curriculum/exercises/loops/loops3.py +10 -0
- pythonlings/curriculum/exercises/loops/loops4.py +12 -0
- pythonlings/curriculum/exercises/loops/loops5.py +13 -0
- pythonlings/curriculum/exercises/loops/loops6.py +10 -0
- pythonlings/curriculum/exercises/loops/loops7.py +13 -0
- pythonlings/curriculum/exercises/loops/loops8.py +11 -0
- pythonlings/curriculum/exercises/loops/loops9.py +11 -0
- pythonlings/curriculum/exercises/modules/modules1.py +10 -0
- pythonlings/curriculum/exercises/modules/modules2.py +10 -0
- pythonlings/curriculum/exercises/modules/modules3.py +13 -0
- pythonlings/curriculum/exercises/modules/modules4.py +18 -0
- pythonlings/curriculum/exercises/modules/modules5.py +17 -0
- pythonlings/curriculum/exercises/modules/modules6.py +12 -0
- pythonlings/curriculum/exercises/modules/modules7.py +16 -0
- pythonlings/curriculum/exercises/modules/modules8.py +23 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced1.py +11 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced10.py +18 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced11.py +13 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced12.py +12 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced2.py +13 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced3.py +22 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced4.py +12 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced5.py +11 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced6.py +12 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced7.py +14 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced8.py +14 -0
- pythonlings/curriculum/exercises/oop_advanced/oop_advanced9.py +9 -0
- pythonlings/curriculum/exercises/pathlib/pathlib1.py +9 -0
- pythonlings/curriculum/exercises/pathlib/pathlib2.py +9 -0
- pythonlings/curriculum/exercises/pathlib/pathlib3.py +11 -0
- pythonlings/curriculum/exercises/pathlib/pathlib4.py +9 -0
- pythonlings/curriculum/exercises/pathlib/pathlib5.py +9 -0
- pythonlings/curriculum/exercises/pathlib/pathlib6.py +10 -0
- pythonlings/curriculum/exercises/recursion/recursion1.py +12 -0
- pythonlings/curriculum/exercises/recursion/recursion2.py +12 -0
- pythonlings/curriculum/exercises/recursion/recursion3.py +12 -0
- pythonlings/curriculum/exercises/recursion/recursion4.py +12 -0
- pythonlings/curriculum/exercises/recursion/recursion5.py +14 -0
- pythonlings/curriculum/exercises/recursion/recursion6.py +13 -0
- pythonlings/curriculum/exercises/recursion/recursion7.py +20 -0
- pythonlings/curriculum/exercises/recursion/recursion8.py +27 -0
- pythonlings/curriculum/exercises/regex/regex1.py +16 -0
- pythonlings/curriculum/exercises/regex/regex10.py +31 -0
- pythonlings/curriculum/exercises/regex/regex2.py +16 -0
- pythonlings/curriculum/exercises/regex/regex3.py +16 -0
- pythonlings/curriculum/exercises/regex/regex4.py +19 -0
- pythonlings/curriculum/exercises/regex/regex5.py +19 -0
- pythonlings/curriculum/exercises/regex/regex6.py +23 -0
- pythonlings/curriculum/exercises/regex/regex7.py +24 -0
- pythonlings/curriculum/exercises/regex/regex8.py +19 -0
- pythonlings/curriculum/exercises/regex/regex9.py +22 -0
- pythonlings/curriculum/exercises/sets/sets1.py +6 -0
- pythonlings/curriculum/exercises/sets/sets10.py +21 -0
- pythonlings/curriculum/exercises/sets/sets2.py +12 -0
- pythonlings/curriculum/exercises/sets/sets3.py +15 -0
- pythonlings/curriculum/exercises/sets/sets4.py +14 -0
- pythonlings/curriculum/exercises/sets/sets5.py +14 -0
- pythonlings/curriculum/exercises/sets/sets6.py +14 -0
- pythonlings/curriculum/exercises/sets/sets7.py +16 -0
- pythonlings/curriculum/exercises/sets/sets8.py +16 -0
- pythonlings/curriculum/exercises/sets/sets9.py +15 -0
- pythonlings/curriculum/exercises/strings/strings1.py +6 -0
- pythonlings/curriculum/exercises/strings/strings10.py +11 -0
- pythonlings/curriculum/exercises/strings/strings2.py +9 -0
- pythonlings/curriculum/exercises/strings/strings3.py +9 -0
- pythonlings/curriculum/exercises/strings/strings4.py +8 -0
- pythonlings/curriculum/exercises/strings/strings5.py +10 -0
- pythonlings/curriculum/exercises/strings/strings6.py +10 -0
- pythonlings/curriculum/exercises/strings/strings7.py +10 -0
- pythonlings/curriculum/exercises/strings/strings8.py +9 -0
- pythonlings/curriculum/exercises/strings/strings9.py +10 -0
- pythonlings/curriculum/exercises/testing/testing1.py +16 -0
- pythonlings/curriculum/exercises/testing/testing10.py +21 -0
- pythonlings/curriculum/exercises/testing/testing11.py +27 -0
- pythonlings/curriculum/exercises/testing/testing12.py +51 -0
- pythonlings/curriculum/exercises/testing/testing2.py +15 -0
- pythonlings/curriculum/exercises/testing/testing3.py +19 -0
- pythonlings/curriculum/exercises/testing/testing4.py +19 -0
- pythonlings/curriculum/exercises/testing/testing5.py +18 -0
- pythonlings/curriculum/exercises/testing/testing6.py +27 -0
- pythonlings/curriculum/exercises/testing/testing7.py +27 -0
- pythonlings/curriculum/exercises/testing/testing8.py +29 -0
- pythonlings/curriculum/exercises/testing/testing9.py +30 -0
- pythonlings/curriculum/exercises/tuples/tuples1.py +7 -0
- pythonlings/curriculum/exercises/tuples/tuples10.py +26 -0
- pythonlings/curriculum/exercises/tuples/tuples2.py +11 -0
- pythonlings/curriculum/exercises/tuples/tuples3.py +9 -0
- pythonlings/curriculum/exercises/tuples/tuples4.py +8 -0
- pythonlings/curriculum/exercises/tuples/tuples5.py +12 -0
- pythonlings/curriculum/exercises/tuples/tuples6.py +15 -0
- pythonlings/curriculum/exercises/tuples/tuples7.py +14 -0
- pythonlings/curriculum/exercises/tuples/tuples8.py +13 -0
- pythonlings/curriculum/exercises/tuples/tuples9.py +18 -0
- pythonlings/curriculum/exercises/type_hints/type_hints1.py +9 -0
- pythonlings/curriculum/exercises/type_hints/type_hints2.py +13 -0
- pythonlings/curriculum/exercises/type_hints/type_hints3.py +13 -0
- pythonlings/curriculum/exercises/type_hints/type_hints4.py +21 -0
- pythonlings/curriculum/exercises/type_hints/type_hints5.py +15 -0
- pythonlings/curriculum/exercises/type_hints/type_hints6.py +16 -0
- pythonlings/curriculum/exercises/type_hints/type_hints7.py +19 -0
- pythonlings/curriculum/exercises/type_hints/type_hints8.py +27 -0
- pythonlings/curriculum/exercises/variables/variables1.py +10 -0
- pythonlings/curriculum/exercises/variables/variables10.py +14 -0
- pythonlings/curriculum/exercises/variables/variables2.py +11 -0
- pythonlings/curriculum/exercises/variables/variables3.py +11 -0
- pythonlings/curriculum/exercises/variables/variables4.py +9 -0
- pythonlings/curriculum/exercises/variables/variables5.py +11 -0
- pythonlings/curriculum/exercises/variables/variables6.py +9 -0
- pythonlings/curriculum/exercises/variables/variables7.py +10 -0
- pythonlings/curriculum/exercises/variables/variables8.py +12 -0
- pythonlings/curriculum/exercises/variables/variables9.py +10 -0
- pythonlings/curriculum/info.toml +1755 -0
- pythonlings/curriculum/solutions/.keep +1 -0
- pythonlings/curriculum/solutions/_answers.py +1654 -0
- pythonlings/curriculum/solutions/async1.py +2 -0
- pythonlings/curriculum/solutions/async10.py +2 -0
- pythonlings/curriculum/solutions/async2.py +2 -0
- pythonlings/curriculum/solutions/async3.py +2 -0
- pythonlings/curriculum/solutions/async4.py +2 -0
- pythonlings/curriculum/solutions/async5.py +2 -0
- pythonlings/curriculum/solutions/async6.py +2 -0
- pythonlings/curriculum/solutions/async7.py +2 -0
- pythonlings/curriculum/solutions/async8.py +2 -0
- pythonlings/curriculum/solutions/async9.py +2 -0
- pythonlings/curriculum/solutions/classes1.py +2 -0
- pythonlings/curriculum/solutions/classes10.py +2 -0
- pythonlings/curriculum/solutions/classes11.py +2 -0
- pythonlings/curriculum/solutions/classes12.py +2 -0
- pythonlings/curriculum/solutions/classes2.py +2 -0
- pythonlings/curriculum/solutions/classes3.py +2 -0
- pythonlings/curriculum/solutions/classes4.py +2 -0
- pythonlings/curriculum/solutions/classes5.py +2 -0
- pythonlings/curriculum/solutions/classes6.py +2 -0
- pythonlings/curriculum/solutions/classes7.py +2 -0
- pythonlings/curriculum/solutions/classes8.py +2 -0
- pythonlings/curriculum/solutions/classes9.py +2 -0
- pythonlings/curriculum/solutions/collections1.py +2 -0
- pythonlings/curriculum/solutions/collections10.py +2 -0
- pythonlings/curriculum/solutions/collections2.py +2 -0
- pythonlings/curriculum/solutions/collections3.py +2 -0
- pythonlings/curriculum/solutions/collections4.py +2 -0
- pythonlings/curriculum/solutions/collections5.py +2 -0
- pythonlings/curriculum/solutions/collections6.py +2 -0
- pythonlings/curriculum/solutions/collections7.py +2 -0
- pythonlings/curriculum/solutions/collections8.py +2 -0
- pythonlings/curriculum/solutions/collections9.py +2 -0
- pythonlings/curriculum/solutions/comprehensions1.py +2 -0
- pythonlings/curriculum/solutions/comprehensions10.py +2 -0
- pythonlings/curriculum/solutions/comprehensions2.py +2 -0
- pythonlings/curriculum/solutions/comprehensions3.py +2 -0
- pythonlings/curriculum/solutions/comprehensions4.py +2 -0
- pythonlings/curriculum/solutions/comprehensions5.py +2 -0
- pythonlings/curriculum/solutions/comprehensions6.py +2 -0
- pythonlings/curriculum/solutions/comprehensions7.py +2 -0
- pythonlings/curriculum/solutions/comprehensions8.py +2 -0
- pythonlings/curriculum/solutions/comprehensions9.py +2 -0
- pythonlings/curriculum/solutions/conditionals1.py +2 -0
- pythonlings/curriculum/solutions/conditionals10.py +2 -0
- pythonlings/curriculum/solutions/conditionals2.py +2 -0
- pythonlings/curriculum/solutions/conditionals3.py +2 -0
- pythonlings/curriculum/solutions/conditionals4.py +2 -0
- pythonlings/curriculum/solutions/conditionals5.py +2 -0
- pythonlings/curriculum/solutions/conditionals6.py +2 -0
- pythonlings/curriculum/solutions/conditionals7.py +2 -0
- pythonlings/curriculum/solutions/conditionals8.py +2 -0
- pythonlings/curriculum/solutions/conditionals9.py +2 -0
- pythonlings/curriculum/solutions/context_managers1.py +2 -0
- pythonlings/curriculum/solutions/context_managers2.py +2 -0
- pythonlings/curriculum/solutions/context_managers3.py +2 -0
- pythonlings/curriculum/solutions/context_managers4.py +2 -0
- pythonlings/curriculum/solutions/context_managers5.py +2 -0
- pythonlings/curriculum/solutions/context_managers6.py +2 -0
- pythonlings/curriculum/solutions/context_managers7.py +2 -0
- pythonlings/curriculum/solutions/context_managers8.py +2 -0
- pythonlings/curriculum/solutions/dataclasses1.py +2 -0
- pythonlings/curriculum/solutions/dataclasses2.py +2 -0
- pythonlings/curriculum/solutions/dataclasses3.py +2 -0
- pythonlings/curriculum/solutions/dataclasses4.py +2 -0
- pythonlings/curriculum/solutions/dataclasses5.py +2 -0
- pythonlings/curriculum/solutions/dataclasses6.py +2 -0
- pythonlings/curriculum/solutions/dataclasses7.py +2 -0
- pythonlings/curriculum/solutions/dataclasses8.py +2 -0
- pythonlings/curriculum/solutions/datetime1.py +2 -0
- pythonlings/curriculum/solutions/datetime2.py +2 -0
- pythonlings/curriculum/solutions/datetime3.py +2 -0
- pythonlings/curriculum/solutions/datetime4.py +2 -0
- pythonlings/curriculum/solutions/datetime5.py +2 -0
- pythonlings/curriculum/solutions/datetime6.py +2 -0
- pythonlings/curriculum/solutions/datetime7.py +2 -0
- pythonlings/curriculum/solutions/datetime8.py +2 -0
- pythonlings/curriculum/solutions/decorators1.py +2 -0
- pythonlings/curriculum/solutions/decorators10.py +2 -0
- pythonlings/curriculum/solutions/decorators2.py +2 -0
- pythonlings/curriculum/solutions/decorators3.py +2 -0
- pythonlings/curriculum/solutions/decorators4.py +2 -0
- pythonlings/curriculum/solutions/decorators5.py +2 -0
- pythonlings/curriculum/solutions/decorators6.py +2 -0
- pythonlings/curriculum/solutions/decorators7.py +2 -0
- pythonlings/curriculum/solutions/decorators8.py +2 -0
- pythonlings/curriculum/solutions/decorators9.py +2 -0
- pythonlings/curriculum/solutions/dictionaries1.py +2 -0
- pythonlings/curriculum/solutions/dictionaries10.py +2 -0
- pythonlings/curriculum/solutions/dictionaries2.py +2 -0
- pythonlings/curriculum/solutions/dictionaries3.py +2 -0
- pythonlings/curriculum/solutions/dictionaries4.py +2 -0
- pythonlings/curriculum/solutions/dictionaries5.py +2 -0
- pythonlings/curriculum/solutions/dictionaries6.py +2 -0
- pythonlings/curriculum/solutions/dictionaries7.py +2 -0
- pythonlings/curriculum/solutions/dictionaries8.py +2 -0
- pythonlings/curriculum/solutions/dictionaries9.py +2 -0
- pythonlings/curriculum/solutions/enums1.py +2 -0
- pythonlings/curriculum/solutions/enums2.py +2 -0
- pythonlings/curriculum/solutions/enums3.py +2 -0
- pythonlings/curriculum/solutions/enums4.py +2 -0
- pythonlings/curriculum/solutions/enums5.py +2 -0
- pythonlings/curriculum/solutions/enums6.py +2 -0
- pythonlings/curriculum/solutions/exceptions1.py +2 -0
- pythonlings/curriculum/solutions/exceptions10.py +2 -0
- pythonlings/curriculum/solutions/exceptions2.py +2 -0
- pythonlings/curriculum/solutions/exceptions3.py +2 -0
- pythonlings/curriculum/solutions/exceptions4.py +2 -0
- pythonlings/curriculum/solutions/exceptions5.py +2 -0
- pythonlings/curriculum/solutions/exceptions6.py +2 -0
- pythonlings/curriculum/solutions/exceptions7.py +2 -0
- pythonlings/curriculum/solutions/exceptions8.py +2 -0
- pythonlings/curriculum/solutions/exceptions9.py +2 -0
- pythonlings/curriculum/solutions/file_io1.py +2 -0
- pythonlings/curriculum/solutions/file_io10.py +2 -0
- pythonlings/curriculum/solutions/file_io2.py +2 -0
- pythonlings/curriculum/solutions/file_io3.py +2 -0
- pythonlings/curriculum/solutions/file_io4.py +2 -0
- pythonlings/curriculum/solutions/file_io5.py +2 -0
- pythonlings/curriculum/solutions/file_io6.py +2 -0
- pythonlings/curriculum/solutions/file_io7.py +2 -0
- pythonlings/curriculum/solutions/file_io8.py +2 -0
- pythonlings/curriculum/solutions/file_io9.py +2 -0
- pythonlings/curriculum/solutions/functional1.py +2 -0
- pythonlings/curriculum/solutions/functional10.py +2 -0
- pythonlings/curriculum/solutions/functional2.py +2 -0
- pythonlings/curriculum/solutions/functional3.py +2 -0
- pythonlings/curriculum/solutions/functional4.py +2 -0
- pythonlings/curriculum/solutions/functional5.py +2 -0
- pythonlings/curriculum/solutions/functional6.py +2 -0
- pythonlings/curriculum/solutions/functional7.py +2 -0
- pythonlings/curriculum/solutions/functional8.py +2 -0
- pythonlings/curriculum/solutions/functional9.py +2 -0
- pythonlings/curriculum/solutions/functions1.py +2 -0
- pythonlings/curriculum/solutions/functions10.py +2 -0
- pythonlings/curriculum/solutions/functions2.py +2 -0
- pythonlings/curriculum/solutions/functions3.py +2 -0
- pythonlings/curriculum/solutions/functions4.py +2 -0
- pythonlings/curriculum/solutions/functions5.py +2 -0
- pythonlings/curriculum/solutions/functions6.py +2 -0
- pythonlings/curriculum/solutions/functions7.py +2 -0
- pythonlings/curriculum/solutions/functions8.py +2 -0
- pythonlings/curriculum/solutions/functions9.py +2 -0
- pythonlings/curriculum/solutions/generators1.py +2 -0
- pythonlings/curriculum/solutions/generators10.py +2 -0
- pythonlings/curriculum/solutions/generators2.py +2 -0
- pythonlings/curriculum/solutions/generators3.py +2 -0
- pythonlings/curriculum/solutions/generators4.py +2 -0
- pythonlings/curriculum/solutions/generators5.py +2 -0
- pythonlings/curriculum/solutions/generators6.py +2 -0
- pythonlings/curriculum/solutions/generators7.py +2 -0
- pythonlings/curriculum/solutions/generators8.py +2 -0
- pythonlings/curriculum/solutions/generators9.py +2 -0
- pythonlings/curriculum/solutions/itertools1.py +2 -0
- pythonlings/curriculum/solutions/itertools2.py +2 -0
- pythonlings/curriculum/solutions/itertools3.py +2 -0
- pythonlings/curriculum/solutions/itertools4.py +2 -0
- pythonlings/curriculum/solutions/itertools5.py +2 -0
- pythonlings/curriculum/solutions/itertools6.py +2 -0
- pythonlings/curriculum/solutions/itertools7.py +2 -0
- pythonlings/curriculum/solutions/itertools8.py +2 -0
- pythonlings/curriculum/solutions/json1.py +2 -0
- pythonlings/curriculum/solutions/json2.py +2 -0
- pythonlings/curriculum/solutions/json3.py +2 -0
- pythonlings/curriculum/solutions/json4.py +2 -0
- pythonlings/curriculum/solutions/json5.py +2 -0
- pythonlings/curriculum/solutions/json6.py +2 -0
- pythonlings/curriculum/solutions/json7.py +2 -0
- pythonlings/curriculum/solutions/json8.py +2 -0
- pythonlings/curriculum/solutions/lists1.py +2 -0
- pythonlings/curriculum/solutions/lists10.py +2 -0
- pythonlings/curriculum/solutions/lists2.py +2 -0
- pythonlings/curriculum/solutions/lists3.py +2 -0
- pythonlings/curriculum/solutions/lists4.py +2 -0
- pythonlings/curriculum/solutions/lists5.py +2 -0
- pythonlings/curriculum/solutions/lists6.py +2 -0
- pythonlings/curriculum/solutions/lists7.py +2 -0
- pythonlings/curriculum/solutions/lists8.py +2 -0
- pythonlings/curriculum/solutions/lists9.py +2 -0
- pythonlings/curriculum/solutions/loops1.py +2 -0
- pythonlings/curriculum/solutions/loops10.py +2 -0
- pythonlings/curriculum/solutions/loops2.py +2 -0
- pythonlings/curriculum/solutions/loops3.py +2 -0
- pythonlings/curriculum/solutions/loops4.py +2 -0
- pythonlings/curriculum/solutions/loops5.py +2 -0
- pythonlings/curriculum/solutions/loops6.py +2 -0
- pythonlings/curriculum/solutions/loops7.py +2 -0
- pythonlings/curriculum/solutions/loops8.py +2 -0
- pythonlings/curriculum/solutions/loops9.py +2 -0
- pythonlings/curriculum/solutions/modules1.py +2 -0
- pythonlings/curriculum/solutions/modules2.py +2 -0
- pythonlings/curriculum/solutions/modules3.py +2 -0
- pythonlings/curriculum/solutions/modules4.py +2 -0
- pythonlings/curriculum/solutions/modules5.py +2 -0
- pythonlings/curriculum/solutions/modules6.py +2 -0
- pythonlings/curriculum/solutions/modules7.py +2 -0
- pythonlings/curriculum/solutions/modules8.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced1.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced10.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced11.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced12.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced2.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced3.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced4.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced5.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced6.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced7.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced8.py +2 -0
- pythonlings/curriculum/solutions/oop_advanced9.py +2 -0
- pythonlings/curriculum/solutions/pathlib1.py +2 -0
- pythonlings/curriculum/solutions/pathlib2.py +2 -0
- pythonlings/curriculum/solutions/pathlib3.py +2 -0
- pythonlings/curriculum/solutions/pathlib4.py +2 -0
- pythonlings/curriculum/solutions/pathlib5.py +2 -0
- pythonlings/curriculum/solutions/pathlib6.py +2 -0
- pythonlings/curriculum/solutions/recursion1.py +2 -0
- pythonlings/curriculum/solutions/recursion2.py +2 -0
- pythonlings/curriculum/solutions/recursion3.py +2 -0
- pythonlings/curriculum/solutions/recursion4.py +2 -0
- pythonlings/curriculum/solutions/recursion5.py +2 -0
- pythonlings/curriculum/solutions/recursion6.py +2 -0
- pythonlings/curriculum/solutions/recursion7.py +2 -0
- pythonlings/curriculum/solutions/recursion8.py +2 -0
- pythonlings/curriculum/solutions/regex1.py +2 -0
- pythonlings/curriculum/solutions/regex10.py +2 -0
- pythonlings/curriculum/solutions/regex2.py +2 -0
- pythonlings/curriculum/solutions/regex3.py +2 -0
- pythonlings/curriculum/solutions/regex4.py +2 -0
- pythonlings/curriculum/solutions/regex5.py +2 -0
- pythonlings/curriculum/solutions/regex6.py +2 -0
- pythonlings/curriculum/solutions/regex7.py +2 -0
- pythonlings/curriculum/solutions/regex8.py +2 -0
- pythonlings/curriculum/solutions/regex9.py +2 -0
- pythonlings/curriculum/solutions/sets1.py +2 -0
- pythonlings/curriculum/solutions/sets10.py +2 -0
- pythonlings/curriculum/solutions/sets2.py +2 -0
- pythonlings/curriculum/solutions/sets3.py +2 -0
- pythonlings/curriculum/solutions/sets4.py +2 -0
- pythonlings/curriculum/solutions/sets5.py +2 -0
- pythonlings/curriculum/solutions/sets6.py +2 -0
- pythonlings/curriculum/solutions/sets7.py +2 -0
- pythonlings/curriculum/solutions/sets8.py +2 -0
- pythonlings/curriculum/solutions/sets9.py +2 -0
- pythonlings/curriculum/solutions/strings1.py +2 -0
- pythonlings/curriculum/solutions/strings10.py +2 -0
- pythonlings/curriculum/solutions/strings2.py +2 -0
- pythonlings/curriculum/solutions/strings3.py +2 -0
- pythonlings/curriculum/solutions/strings4.py +2 -0
- pythonlings/curriculum/solutions/strings5.py +2 -0
- pythonlings/curriculum/solutions/strings6.py +2 -0
- pythonlings/curriculum/solutions/strings7.py +2 -0
- pythonlings/curriculum/solutions/strings8.py +2 -0
- pythonlings/curriculum/solutions/strings9.py +2 -0
- pythonlings/curriculum/solutions/testing1.py +2 -0
- pythonlings/curriculum/solutions/testing10.py +2 -0
- pythonlings/curriculum/solutions/testing11.py +2 -0
- pythonlings/curriculum/solutions/testing12.py +2 -0
- pythonlings/curriculum/solutions/testing2.py +2 -0
- pythonlings/curriculum/solutions/testing3.py +2 -0
- pythonlings/curriculum/solutions/testing4.py +2 -0
- pythonlings/curriculum/solutions/testing5.py +2 -0
- pythonlings/curriculum/solutions/testing6.py +2 -0
- pythonlings/curriculum/solutions/testing7.py +2 -0
- pythonlings/curriculum/solutions/testing8.py +2 -0
- pythonlings/curriculum/solutions/testing9.py +2 -0
- pythonlings/curriculum/solutions/tuples1.py +2 -0
- pythonlings/curriculum/solutions/tuples10.py +2 -0
- pythonlings/curriculum/solutions/tuples2.py +2 -0
- pythonlings/curriculum/solutions/tuples3.py +2 -0
- pythonlings/curriculum/solutions/tuples4.py +2 -0
- pythonlings/curriculum/solutions/tuples5.py +2 -0
- pythonlings/curriculum/solutions/tuples6.py +2 -0
- pythonlings/curriculum/solutions/tuples7.py +2 -0
- pythonlings/curriculum/solutions/tuples8.py +2 -0
- pythonlings/curriculum/solutions/tuples9.py +2 -0
- pythonlings/curriculum/solutions/type_hints1.py +2 -0
- pythonlings/curriculum/solutions/type_hints2.py +2 -0
- pythonlings/curriculum/solutions/type_hints3.py +2 -0
- pythonlings/curriculum/solutions/type_hints4.py +2 -0
- pythonlings/curriculum/solutions/type_hints5.py +2 -0
- pythonlings/curriculum/solutions/type_hints6.py +2 -0
- pythonlings/curriculum/solutions/type_hints7.py +2 -0
- pythonlings/curriculum/solutions/type_hints8.py +2 -0
- pythonlings/curriculum/solutions/variables1.py +2 -0
- pythonlings/curriculum/solutions/variables10.py +2 -0
- pythonlings/curriculum/solutions/variables2.py +2 -0
- pythonlings/curriculum/solutions/variables3.py +2 -0
- pythonlings/curriculum/solutions/variables4.py +2 -0
- pythonlings/curriculum/solutions/variables5.py +2 -0
- pythonlings/curriculum/solutions/variables6.py +2 -0
- pythonlings/curriculum/solutions/variables7.py +2 -0
- pythonlings/curriculum/solutions/variables8.py +2 -0
- pythonlings/curriculum/solutions/variables9.py +2 -0
- pythonlings/docs/NOTICE.md +9 -0
- pythonlings/docs/__init__.py +1 -0
- pythonlings/docs/index.json +160 -0
- pythonlings/docs/topics/__init__.py +1 -0
- pythonlings/docs/topics/async.md +97 -0
- pythonlings/docs/topics/classes.md +97 -0
- pythonlings/docs/topics/collections.md +96 -0
- pythonlings/docs/topics/comprehensions.md +97 -0
- pythonlings/docs/topics/conditionals.md +88 -0
- pythonlings/docs/topics/context_managers.md +97 -0
- pythonlings/docs/topics/dataclasses.md +97 -0
- pythonlings/docs/topics/datetime.md +97 -0
- pythonlings/docs/topics/decorators.md +91 -0
- pythonlings/docs/topics/dictionaries.md +96 -0
- pythonlings/docs/topics/enums.md +96 -0
- pythonlings/docs/topics/exceptions.md +96 -0
- pythonlings/docs/topics/file_io.md +96 -0
- pythonlings/docs/topics/functional.md +96 -0
- pythonlings/docs/topics/functions.md +97 -0
- pythonlings/docs/topics/generators.md +97 -0
- pythonlings/docs/topics/itertools.md +96 -0
- pythonlings/docs/topics/json.md +97 -0
- pythonlings/docs/topics/lists.md +97 -0
- pythonlings/docs/topics/loops.md +95 -0
- pythonlings/docs/topics/modules.md +97 -0
- pythonlings/docs/topics/oop_advanced.md +71 -0
- pythonlings/docs/topics/pathlib.md +79 -0
- pythonlings/docs/topics/recursion.md +73 -0
- pythonlings/docs/topics/regex.md +96 -0
- pythonlings/docs/topics/sets.md +97 -0
- pythonlings/docs/topics/strings.md +96 -0
- pythonlings/docs/topics/testing.md +97 -0
- pythonlings/docs/topics/tuples.md +97 -0
- pythonlings/docs/topics/type_hints.md +97 -0
- pythonlings/docs/topics/variables.md +97 -0
- pythonlings/pythonlings.tcss +123 -0
- pythonlings/screens/__init__.py +0 -0
- pythonlings/screens/docs.py +93 -0
- pythonlings/screens/topic_picker.py +107 -0
- pythonlings/screens/track.py +234 -0
- pythonlings/widgets/__init__.py +0 -0
- pythonlings/widgets/editor_pane.py +33 -0
- pythonlings/widgets/exercise_tree.py +33 -0
- pythonlings/widgets/output_panel.py +180 -0
- pythonlings/widgets/progress.py +15 -0
- pythonlings-0.3.0.dist-info/METADATA +259 -0
- pythonlings-0.3.0.dist-info/RECORD +942 -0
- pythonlings-0.3.0.dist-info/WHEEL +4 -0
- pythonlings-0.3.0.dist-info/entry_points.txt +2 -0
- pythonlings-0.3.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Lists
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
Lists are mutable ordered collections with methods such as `append`, `pop`, and `sort`.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
5.1. More on Lists
|
|
12
|
+
|
|
13
|
+
The list data type has some more methods. Here are all
|
|
14
|
+
of the methods of list objects:
|
|
15
|
+
|
|
16
|
+
list.append(value, /)
|
|
17
|
+
|
|
18
|
+
Add an item to the end of the list. Similar to `a[len(a):] = [x]`.
|
|
19
|
+
|
|
20
|
+
list.extend(iterable, /)
|
|
21
|
+
|
|
22
|
+
Extend the list by appending all the items from the iterable. Similar to
|
|
23
|
+
`a[len(a):] = iterable`.
|
|
24
|
+
|
|
25
|
+
list.insert(index, value, /)
|
|
26
|
+
|
|
27
|
+
Insert an item at a given position. The first argument is the index of the
|
|
28
|
+
element before which to insert, so `a.insert(0, x)` inserts at the front of
|
|
29
|
+
the list, and `a.insert(len(a), x)` is equivalent to `a.append(x)`.
|
|
30
|
+
|
|
31
|
+
list.remove(value, /)
|
|
32
|
+
|
|
33
|
+
Remove the first item from the list whose value is equal to value. It raises a
|
|
34
|
+
`ValueError` if there is no such item.
|
|
35
|
+
|
|
36
|
+
list.pop(index=-1, /)
|
|
37
|
+
|
|
38
|
+
Remove the item at the given position in the list, and return it. If no index
|
|
39
|
+
is specified, `a.pop()` removes and returns the last item in the list.
|
|
40
|
+
It raises an `IndexError` if the list is empty or the index is
|
|
41
|
+
outside the list range.
|
|
42
|
+
|
|
43
|
+
list.clear()
|
|
44
|
+
|
|
45
|
+
Remove all items from the list. Similar to `del a[:]`.
|
|
46
|
+
|
|
47
|
+
list.index(value[, start[, stop]])
|
|
48
|
+
|
|
49
|
+
Return zero-based index of the first occurrence of value in the list.
|
|
50
|
+
Raises a `ValueError` if there is no such item.
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range
|
|
55
|
+
|
|
56
|
+
Sequence types reference with list methods, operations, and type tables.
|
|
57
|
+
|
|
58
|
+
Sequence Types — `list`, `tuple`, `range`
|
|
59
|
+
|
|
60
|
+
There are three basic sequence types: lists, tuples, and range objects.
|
|
61
|
+
Additional sequence types tailored for processing of
|
|
62
|
+
binary data and text strings are
|
|
63
|
+
described in dedicated sections.
|
|
64
|
+
|
|
65
|
+
Common Sequence Operations
|
|
66
|
+
|
|
67
|
+
The operations in the following table are supported by most sequence types,
|
|
68
|
+
both mutable and immutable. The `collections.abc.Sequence` ABC is
|
|
69
|
+
provided to make it easier to correctly implement these operations on
|
|
70
|
+
custom sequence types.
|
|
71
|
+
|
|
72
|
+
This table lists the sequence operations sorted in ascending priority. In the
|
|
73
|
+
table, s and t are sequences of the same type, n, i, j and k are
|
|
74
|
+
integers and x is an arbitrary object that meets any type and value
|
|
75
|
+
restrictions imposed by s.
|
|
76
|
+
|
|
77
|
+
The `in` and `not in` operations have the same priorities as the
|
|
78
|
+
comparison operations. The `+` (concatenation) and `*` (repetition)
|
|
79
|
+
operations have the same priority as the corresponding numeric operations. [3]
|
|
80
|
+
|
|
81
|
+
Operation
|
|
82
|
+
|
|
83
|
+
Result
|
|
84
|
+
|
|
85
|
+
Notes
|
|
86
|
+
|
|
87
|
+
`x in s`
|
|
88
|
+
|
|
89
|
+
`True` if an item of s is
|
|
90
|
+
equal to x, else `False`
|
|
91
|
+
|
|
92
|
+
(1)
|
|
93
|
+
|
|
94
|
+
`x not in s`
|
|
95
|
+
|
|
96
|
+
`False` if an item of s is
|
|
97
|
+
equal to x, else `True`
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Loops
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/tutorial/controlflow.html#for-statements
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
`for` loops iterate over items; `while` loops continue while a condition is true.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
4.2. `for` Statements
|
|
12
|
+
|
|
13
|
+
The `for` statement in Python differs a bit from what you may be used
|
|
14
|
+
to in C or Pascal. Rather than always iterating over an arithmetic progression
|
|
15
|
+
of numbers (like in Pascal), or giving the user the ability to define both the
|
|
16
|
+
iteration step and halting condition (as C), Python’s `for` statement
|
|
17
|
+
iterates over the items of any sequence (a list or a string), in the order that
|
|
18
|
+
they appear in the sequence. For example (no pun intended):
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
>>> # Measure some strings:
|
|
22
|
+
>>> words = ['cat', 'window', 'defenestrate']
|
|
23
|
+
>>> for w in words:
|
|
24
|
+
... print(w, len(w))
|
|
25
|
+
...
|
|
26
|
+
cat 3
|
|
27
|
+
window 6
|
|
28
|
+
defenestrate 12
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Code that modifies a collection while iterating over that same collection can
|
|
33
|
+
be tricky to get right. Instead, it is usually more straight-forward to loop
|
|
34
|
+
over a copy of the collection or to create a new collection:
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# Create a sample collection
|
|
38
|
+
users = {'Hans': 'active', 'Éléonore': 'inactive', '景太郎': 'active'}
|
|
39
|
+
|
|
40
|
+
# Strategy: Iterate over a copy
|
|
41
|
+
for user, status in users.copy().items():
|
|
42
|
+
if status == 'inactive':
|
|
43
|
+
del users[user]
|
|
44
|
+
|
|
45
|
+
# Strategy: Create a new collection
|
|
46
|
+
active_users = {}
|
|
47
|
+
for user, status in users.items():
|
|
48
|
+
if status == 'active':
|
|
49
|
+
active_users[user] = status
|
|
50
|
+
|
|
51
|
+
## More reference
|
|
52
|
+
|
|
53
|
+
Source: https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
|
|
54
|
+
|
|
55
|
+
Formal for-statement syntax and iteration semantics.
|
|
56
|
+
|
|
57
|
+
8.3. The `for` statement
|
|
58
|
+
|
|
59
|
+
The `for` statement is used to iterate over the elements of a sequence
|
|
60
|
+
(such as a string, tuple or list) or other iterable object:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
|
|
64
|
+
for_stmt: "for" target_list "in" starred_expression_list ":" suite
|
|
65
|
+
["else" ":" suite]
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
The `starred_expression_list` expression is evaluated
|
|
70
|
+
once; it should yield an iterable object. An iterator is
|
|
71
|
+
created for that iterable. The first item provided by the iterator is then
|
|
72
|
+
assigned to the target list using the standard rules for assignments
|
|
73
|
+
(see Assignment statements), and the suite is executed. This repeats for each
|
|
74
|
+
item provided by the iterator. When the iterator is exhausted,
|
|
75
|
+
the suite in the `else` clause,
|
|
76
|
+
if present, is executed, and the loop terminates.
|
|
77
|
+
|
|
78
|
+
A `break` statement executed in the first suite terminates the loop
|
|
79
|
+
without executing the `else` clause’s suite. A `continue`
|
|
80
|
+
statement executed in the first suite skips the rest of the suite and continues
|
|
81
|
+
with the next item, or with the `else` clause if there is no next
|
|
82
|
+
item.
|
|
83
|
+
|
|
84
|
+
The for-loop makes assignments to the variables in the target list.
|
|
85
|
+
This overwrites all previous assignments to those variables including
|
|
86
|
+
those made in the suite of the for-loop:
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
for i in range(10):
|
|
90
|
+
print(i)
|
|
91
|
+
i = 5 # this will not affect the for-loop
|
|
92
|
+
# because i will be overwritten with the next
|
|
93
|
+
# index in the range
|
|
94
|
+
|
|
95
|
+
```
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# Modules
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/tutorial/modules.html#modules
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
Modules organize Python code into importable files and packages.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
6. Modules
|
|
12
|
+
|
|
13
|
+
If you quit from the Python interpreter and enter it again, the definitions you
|
|
14
|
+
have made (functions and variables) are lost. Therefore, if you want to write a
|
|
15
|
+
somewhat longer program, you are better off using a text editor to prepare the
|
|
16
|
+
input for the interpreter and running it with that file as input instead. This
|
|
17
|
+
is known as creating a script. As your program gets longer, you may want to
|
|
18
|
+
split it into several files for easier maintenance. You may also want to use a
|
|
19
|
+
handy function that you’ve written in several programs without copying its
|
|
20
|
+
definition into each program.
|
|
21
|
+
|
|
22
|
+
To support this, Python has a way to put definitions in a file and use them in a
|
|
23
|
+
script or in an interactive instance of the interpreter. Such a file is called a
|
|
24
|
+
module; definitions from a module can be imported into other modules or into
|
|
25
|
+
the main module (the collection of variables that you have access to in a
|
|
26
|
+
script executed at the top level and in calculator mode).
|
|
27
|
+
|
|
28
|
+
A module is a file containing Python definitions and statements. The file name
|
|
29
|
+
is the module name with the suffix `.py` appended. Within a module, the
|
|
30
|
+
module’s name (as a string) is available as the value of the global variable
|
|
31
|
+
`__name__`. For instance, use your favorite text editor to create a file
|
|
32
|
+
called `fibo.py` in the current directory with the following contents:
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
# Fibonacci numbers module
|
|
36
|
+
|
|
37
|
+
def fib(n):
|
|
38
|
+
"""Write Fibonacci series up to n."""
|
|
39
|
+
a, b = 0, 1
|
|
40
|
+
while a < n:
|
|
41
|
+
print(a, end=' ')
|
|
42
|
+
a, b = b, a+b
|
|
43
|
+
print()
|
|
44
|
+
|
|
45
|
+
def fib2(n):
|
|
46
|
+
"""Return Fibonacci series up to n."""
|
|
47
|
+
result = []
|
|
48
|
+
a, b = 0, 1
|
|
49
|
+
while a < n:
|
|
50
|
+
result.append(a)
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/library/importlib.html#importlib.reload
|
|
55
|
+
|
|
56
|
+
Reloading and dynamically importing modules with importlib.
|
|
57
|
+
|
|
58
|
+
importlib.reload(module)
|
|
59
|
+
|
|
60
|
+
Reload a previously imported module. The argument must be a module object,
|
|
61
|
+
so it must have been successfully imported before. This is useful if you
|
|
62
|
+
have edited the module source file using an external editor and want to try
|
|
63
|
+
out the new version without leaving the Python interpreter. The return value
|
|
64
|
+
is the module object (which can be different if re-importing causes a
|
|
65
|
+
different object to be placed in `sys.modules`).
|
|
66
|
+
|
|
67
|
+
When `reload()` is executed:
|
|
68
|
+
|
|
69
|
+
-
|
|
70
|
+
|
|
71
|
+
Python module’s code is recompiled and the module-level code re-executed,
|
|
72
|
+
defining a new set of objects which are bound to names in the module’s
|
|
73
|
+
dictionary by reusing the loader which originally loaded the
|
|
74
|
+
module. The `init` function of extension modules is not called a second
|
|
75
|
+
time.
|
|
76
|
+
|
|
77
|
+
-
|
|
78
|
+
|
|
79
|
+
As with all other objects in Python the old objects are only reclaimed
|
|
80
|
+
after their reference counts drop to zero.
|
|
81
|
+
|
|
82
|
+
-
|
|
83
|
+
|
|
84
|
+
The names in the module namespace are updated to point to any new or
|
|
85
|
+
changed objects.
|
|
86
|
+
|
|
87
|
+
-
|
|
88
|
+
|
|
89
|
+
Other references to the old objects (such as names external to the module) are
|
|
90
|
+
not rebound to refer to the new objects and must be updated in each namespace
|
|
91
|
+
where they occur if that is desired.
|
|
92
|
+
|
|
93
|
+
There are a number of other caveats:
|
|
94
|
+
|
|
95
|
+
When a module is reloaded, its dictionary (containing the module’s global
|
|
96
|
+
variables) is retained. Redefinitions of names will override the old
|
|
97
|
+
definitions, so this is generally not a problem. If the new version of a
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Advanced OOP
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/tutorial/classes.html
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
Advanced class patterns build on attributes, methods, inheritance, and special methods.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
9. Classes — Python 3.14.6 documentation
|
|
12
|
+
|
|
13
|
+
Navigation
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
index
|
|
17
|
+
|
|
18
|
+
-
|
|
19
|
+
modules |
|
|
20
|
+
|
|
21
|
+
-
|
|
22
|
+
next |
|
|
23
|
+
|
|
24
|
+
-
|
|
25
|
+
previous |
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
|
|
29
|
+
- Python »
|
|
30
|
+
|
|
31
|
+
-
|
|
32
|
+
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
-
|
|
36
|
+
3.14.6 Documentation »
|
|
37
|
+
|
|
38
|
+
- The Python Tutorial »
|
|
39
|
+
|
|
40
|
+
- 9. Classes
|
|
41
|
+
|
|
42
|
+
-
|
|
43
|
+
|
|
44
|
+
|
|
|
45
|
+
|
|
46
|
+
-
|
|
47
|
+
|
|
48
|
+
Theme
|
|
49
|
+
|
|
50
|
+
Auto
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/reference/datamodel.html#object.__repr__
|
|
55
|
+
|
|
56
|
+
`__repr__` and `__str__` for custom object representations.
|
|
57
|
+
|
|
58
|
+
object.__repr__(self)
|
|
59
|
+
|
|
60
|
+
Called by the `repr()` built-in function to compute the “official” string
|
|
61
|
+
representation of an object. If at all possible, this should look like a
|
|
62
|
+
valid Python expression that could be used to recreate an object with the
|
|
63
|
+
same value (given an appropriate environment). If this is not possible, a
|
|
64
|
+
string of the form `<...some useful description...>` should be returned.
|
|
65
|
+
The return value must be a string object. If a class defines `__repr__()`
|
|
66
|
+
but not `__str__()`, then `__repr__()` is also used when an
|
|
67
|
+
“informal” string representation of instances of that class is required.
|
|
68
|
+
|
|
69
|
+
This is typically used for debugging, so it is important that the representation
|
|
70
|
+
is information-rich and unambiguous. A default implementation is provided by the
|
|
71
|
+
`object` class itself.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Pathlib
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/library/pathlib.html
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
`pathlib.Path` represents filesystem paths with object-oriented helpers.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
pathlib — Object-oriented filesystem paths — Python 3.14.6 documentation
|
|
12
|
+
|
|
13
|
+
Navigation
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
index
|
|
17
|
+
|
|
18
|
+
-
|
|
19
|
+
modules |
|
|
20
|
+
|
|
21
|
+
-
|
|
22
|
+
next |
|
|
23
|
+
|
|
24
|
+
-
|
|
25
|
+
previous |
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
|
|
29
|
+
- Python »
|
|
30
|
+
|
|
31
|
+
-
|
|
32
|
+
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
-
|
|
36
|
+
3.14.6 Documentation »
|
|
37
|
+
|
|
38
|
+
- The Python Standard Library »
|
|
39
|
+
|
|
40
|
+
- File and Directory Access »
|
|
41
|
+
|
|
42
|
+
- `pathlib` — Object-oriented filesystem paths
|
|
43
|
+
|
|
44
|
+
-
|
|
45
|
+
|
|
46
|
+
|
|
|
47
|
+
|
|
48
|
+
-
|
|
49
|
+
|
|
50
|
+
Theme
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/library/pathlib.html#pathlib.Path.mkdir
|
|
55
|
+
|
|
56
|
+
`Path.mkdir` creates directories with parents/exist_ok options.
|
|
57
|
+
|
|
58
|
+
Path.mkdir(mode=0o777, parents=False, exist_ok=False)
|
|
59
|
+
|
|
60
|
+
Create a new directory at this given path. If mode is given, it is
|
|
61
|
+
combined with the process’s `umask` value to determine the file mode
|
|
62
|
+
and access flags. If the path already exists, `FileExistsError`
|
|
63
|
+
is raised.
|
|
64
|
+
|
|
65
|
+
If parents is true, any missing parents of this path are created
|
|
66
|
+
as needed; they are created with the default permissions without taking
|
|
67
|
+
mode into account (mimicking the POSIX `mkdir -p` command).
|
|
68
|
+
|
|
69
|
+
If parents is false (the default), a missing parent raises
|
|
70
|
+
`FileNotFoundError`.
|
|
71
|
+
|
|
72
|
+
If exist_ok is false (the default), `FileExistsError` is
|
|
73
|
+
raised if the target directory already exists.
|
|
74
|
+
|
|
75
|
+
If exist_ok is true, `FileExistsError` will not be raised unless the given
|
|
76
|
+
path already exists in the file system and is not a directory (same
|
|
77
|
+
behavior as the POSIX `mkdir -p` command).
|
|
78
|
+
|
|
79
|
+
Changed in version 3.5: The exist_ok parameter was added.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Recursion
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
Recursive functions solve a problem by calling themselves on smaller inputs.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
4.8. Defining Functions
|
|
12
|
+
|
|
13
|
+
We can create a function that writes the Fibonacci series to an arbitrary
|
|
14
|
+
boundary:
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
>>> def fib(n): # write Fibonacci series less than n
|
|
18
|
+
... """Print a Fibonacci series less than n."""
|
|
19
|
+
... a, b = 0, 1
|
|
20
|
+
... while a < n:
|
|
21
|
+
... print(a, end=' ')
|
|
22
|
+
... a, b = b, a+b
|
|
23
|
+
... print()
|
|
24
|
+
...
|
|
25
|
+
>>> # Now call the function we just defined:
|
|
26
|
+
>>> fib(2000)
|
|
27
|
+
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The keyword `def` introduces a function definition. It must be
|
|
32
|
+
followed by the function name and the parenthesized list of formal parameters.
|
|
33
|
+
The statements that form the body of the function start at the next line, and
|
|
34
|
+
must be indented.
|
|
35
|
+
|
|
36
|
+
The first statement of the function body can optionally be a string literal;
|
|
37
|
+
this string literal is the function’s documentation string, or docstring.
|
|
38
|
+
(More about docstrings can be found in the section Documentation Strings.)
|
|
39
|
+
There are tools which use docstrings to automatically produce online or printed
|
|
40
|
+
documentation, or to let the user interactively browse through code; it’s good
|
|
41
|
+
practice to include docstrings in code that you write, so make a habit of it.
|
|
42
|
+
|
|
43
|
+
The execution of a function introduces a new symbol table used for the local
|
|
44
|
+
variables of the function. More precisely, all variable assignments in a
|
|
45
|
+
function store the value in the local symbol table; whereas variable references
|
|
46
|
+
first look in the local symbol table, then in the local symbol tables of
|
|
47
|
+
enclosing functions, then in the global symbol table, and finally in the table
|
|
48
|
+
of built-in names. Thus, global variables and variables of enclosing functions
|
|
49
|
+
cannot be directly assigned a value within a function (unless, for global
|
|
50
|
+
variables, named in a `global` statement, or, for variables of enclosing
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/library/sys.html#sys.setrecursionlimit
|
|
55
|
+
|
|
56
|
+
Adjusting the interpreter's recursion limit with `sys.setrecursionlimit`.
|
|
57
|
+
|
|
58
|
+
sys.setrecursionlimit(limit)
|
|
59
|
+
|
|
60
|
+
Set the maximum depth of the Python interpreter stack to limit. This limit
|
|
61
|
+
prevents infinite recursion from causing an overflow of the C stack and crashing
|
|
62
|
+
Python.
|
|
63
|
+
|
|
64
|
+
The highest possible limit is platform-dependent. A user may need to set the
|
|
65
|
+
limit higher when they have a program that requires deep recursion and a platform
|
|
66
|
+
that supports a higher limit. This should be done with care, because a too-high
|
|
67
|
+
limit can lead to a crash.
|
|
68
|
+
|
|
69
|
+
If the new limit is too low at the current recursion depth, a
|
|
70
|
+
`RecursionError` exception is raised.
|
|
71
|
+
|
|
72
|
+
Changed in version 3.5.1: A `RecursionError` exception is now raised if the new limit is too
|
|
73
|
+
low at the current recursion depth.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Regular Expressions
|
|
2
|
+
|
|
3
|
+
Source: https://docs.python.org/3/library/re.html
|
|
4
|
+
|
|
5
|
+
This local reference is generated from the official Python documentation and trimmed for pythonlings.
|
|
6
|
+
|
|
7
|
+
The `re` module searches, matches, and transforms text using regular expressions.
|
|
8
|
+
|
|
9
|
+
## Extracted reference
|
|
10
|
+
|
|
11
|
+
re — Regular expression operations — Python 3.14.6 documentation
|
|
12
|
+
|
|
13
|
+
Navigation
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
index
|
|
17
|
+
|
|
18
|
+
-
|
|
19
|
+
modules |
|
|
20
|
+
|
|
21
|
+
-
|
|
22
|
+
next |
|
|
23
|
+
|
|
24
|
+
-
|
|
25
|
+
previous |
|
|
26
|
+
|
|
27
|
+
-
|
|
28
|
+
|
|
29
|
+
- Python »
|
|
30
|
+
|
|
31
|
+
-
|
|
32
|
+
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
-
|
|
36
|
+
3.14.6 Documentation »
|
|
37
|
+
|
|
38
|
+
- The Python Standard Library »
|
|
39
|
+
|
|
40
|
+
- Text Processing Services »
|
|
41
|
+
|
|
42
|
+
- `re` — Regular expression operations
|
|
43
|
+
|
|
44
|
+
-
|
|
45
|
+
|
|
46
|
+
|
|
|
47
|
+
|
|
48
|
+
-
|
|
49
|
+
|
|
50
|
+
Theme
|
|
51
|
+
|
|
52
|
+
## More reference
|
|
53
|
+
|
|
54
|
+
Source: https://docs.python.org/3/howto/regex.html#search-and-replace
|
|
55
|
+
|
|
56
|
+
Practical search-and-replace patterns from the regex HOWTO.
|
|
57
|
+
|
|
58
|
+
Search and replace
|
|
59
|
+
|
|
60
|
+
Another common task is to find all the matches for a pattern, and replace them
|
|
61
|
+
with a different string. The `sub()` method takes a replacement value,
|
|
62
|
+
which can be either a string or a function, and the string to be processed.
|
|
63
|
+
|
|
64
|
+
.sub(replacement, string[, count=0])
|
|
65
|
+
|
|
66
|
+
Returns the string obtained by replacing the leftmost non-overlapping
|
|
67
|
+
occurrences of the RE in string by the replacement replacement. If the
|
|
68
|
+
pattern isn’t found, string is returned unchanged.
|
|
69
|
+
|
|
70
|
+
The optional argument count is the maximum number of pattern occurrences to be
|
|
71
|
+
replaced; count must be a non-negative integer. The default value of 0 means
|
|
72
|
+
to replace all occurrences.
|
|
73
|
+
|
|
74
|
+
Here’s a simple example of using the `sub()` method. It replaces colour
|
|
75
|
+
names with the word `colour`:
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
>>> p = re.compile('(blue|white|red)')
|
|
79
|
+
>>> p.sub('colour', 'blue socks and red shoes')
|
|
80
|
+
'colour socks and colour shoes'
|
|
81
|
+
>>> p.sub('colour', 'blue socks and red shoes', count=1)
|
|
82
|
+
'colour socks and red shoes'
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The `subn()` method does the same work, but returns a 2-tuple containing the
|
|
87
|
+
new string value and the number of replacements that were performed:
|
|
88
|
+
|
|
89
|
+
```python
|
|
90
|
+
>>> p = re.compile('(blue|white|red)')
|
|
91
|
+
>>> p.subn('colour', 'blue socks and red shoes')
|
|
92
|
+
('colour socks and colour shoes', 2)
|
|
93
|
+
>>> p.subn('colour', 'no colours at all')
|
|
94
|
+
('no colours at all', 0)
|
|
95
|
+
|
|
96
|
+
```
|