From 3fe29af9d2e2a9c058e4ceef8992702b559ade19 Mon Sep 17 00:00:00 2001 From: bgoonz Date: Sun, 30 May 2021 20:35:04 -0400 Subject: [PATCH] formatting --- DOCS/_static/basic.css | 594 +- DOCS/_static/classic.css | 248 +- DOCS/_static/copybutton.js | 141 +- DOCS/_static/doctools.js | 227 +- DOCS/_static/documentation_options.js | 22 +- DOCS/_static/jquery.js | 5512 +++++++++++++- DOCS/_static/language_data.js | 590 +- DOCS/_static/pydoctheme.css | 179 +- DOCS/_static/pygments.css | 329 +- DOCS/_static/right.html | 2 +- DOCS/_static/sidebar.js | 160 +- DOCS/_static/switchers.js | 182 +- DOCS/_static/underscore.js | 708 +- DOCS/tutorial/appendix.html | 849 ++- DOCS/tutorial/appetite.html | 532 +- DOCS/tutorial/classes.html | 2985 ++++++-- DOCS/tutorial/controlflow.html | 3002 ++++++-- DOCS/tutorial/datastructures.html | 2307 ++++-- DOCS/tutorial/errors.html | 1886 +++-- DOCS/tutorial/floatingpoint.html | 1205 ++- DOCS/tutorial/index.html | 1731 ++++- DOCS/tutorial/inputoutput.html | 2006 +++-- DOCS/tutorial/right.html | 2 +- README.html | 6474 +++++++++++++++++ README.md | 369 +- ...) Reading and Writing Files in Python.html | 660 ++ ...al) Reading and Writing Files in Python.md | 898 +++ ...Python packages you are going to love.html | 80 + ...l Python packages you are going to love.md | 114 + Readings/30-python-snippets.html | 65 + Readings/30-python-snippets.md | 84 + ...ists in Python3 in just seven minutes.html | 205 + ... lists in Python3 in just seven minutes.md | 260 + Readings/An A-Z of useful Python tricks.html | 291 + Readings/An A-Z of useful Python tricks.md | 431 ++ .../Automate-Boring-Stuff-with-Python.html | 470 ++ Readings/Automate-Boring-Stuff-with-Python.md | 748 ++ Readings/Controlling the Web with Python.html | 107 + Readings/Controlling the Web with Python.md | 150 + ...crawler to map a website using Python.html | 83 + ...L crawler to map a website using Python.md | 109 + ...x Cheat Sheet for Budding Programmers.html | 318 + ...gEx Cheat Sheet for Budding Programmers.md | 459 ++ Readings/beginners.pdf | Bin 0 -> 217418 bytes Readings/importing-data-python.pdf | Bin 0 -> 138489 bytes Readings/jupyter-notebook-cheat-sheet.pdf | Bin 0 -> 804299 bytes Readings/numpy.pdf | Bin 0 -> 665028 bytes Readings/python-basics.html | 1125 +++ Readings/python-basics.md | 1390 ++++ Readings/right.html | 34 + directory.html | 11 + exploring-python/Numpy.ipynb | 2661 +++++++ exploring-python/basics.ipynb | 1422 ++++ exploring-python/part1.ipynb | 2626 +++++++ exploring-python/part2.ipynb | 1107 +++ exploring-python/part3.ipynb | 2507 +++++++ exploring-python/part4.ipynb | 1402 ++++ exploring-python/part5.ipynb | 1417 ++++ exploring-python/right.html | 31 + .../working-w-jupyter-vscode.html | 234 + exploring-python/working-w-jupyter-vscode.md | 268 + left.html | 5 +- node_modules/.package-lock.json | 15 + node_modules/pandoc/.npmignore | 1 + node_modules/pandoc/CHANGELOG | 20 + node_modules/pandoc/LICENSE | 202 + node_modules/pandoc/Makefile | 12 + node_modules/pandoc/NOTICE | 2 + node_modules/pandoc/README | 59 + node_modules/pandoc/package.json | 17 + node_modules/pandoc/pandoc.js | 148 + node_modules/pandoc/right.html | 30 + node_modules/right.html | 23 + package-lock.json | 27 + package.json | 5 + .../practices/ch04_first_lines/readme.html | 119 + .../practices/ch04_first_lines/right.html | 6 +- .../ch05_interactive_code/readme.html | 129 + .../ch05_interactive_code/right.html | 6 +- .../readme.html | 108 + .../right.html | 6 +- .../ch07_data_structures/readme.html | 124 + .../practices/ch07_data_structures/right.html | 6 +- .../ch08_problem_solving/readme.html | 40 + .../practices/ch08_problem_solving/right.html | 6 +- .../ch09_working_with_files/readme.html | 116 + .../ch09_working_with_files/right.html | 6 +- .../ch10_external_libraries/readme.html | 114 + .../ch10_external_libraries/right.html | 6 +- .../practices/ch11-error-handling/readme.html | 116 + .../practices/ch11-error-handling/right.html | 6 +- prac-4-beginners/practices/readme.html | 28 + prac-4-beginners/practices/right.html | 6 +- .../right.html | 9 +- .../step_1.html | 99 + .../step_2.html | 31 + .../step_3.html | 26 + .../step_4.html | 27 + .../ch-05-interactive-code/right.html | 8 +- .../ch-05-interactive-code/step_1.html | 19 + .../ch-08-problem-solving/readme.html | 117 + .../ch-08-problem-solving/right.html | 6 +- .../ch-11-error-handling/readme.html | 112 + .../solutions/ch-11-error-handling/right.html | 6 +- prac-4-beginners/solutions/readme.html | 21 + prac-4-beginners/solutions/right.html | 6 +- python-mega-algo/README.html | 1321 ++++ python-mega-algo/bit_manipulation/README.html | 19 + python-mega-algo/bit_manipulation/right.html | 11 +- .../cellular_automata/README.html | 22 + python-mega-algo/cellular_automata/right.html | 8 +- python-mega-algo/computer_vision/README.html | 19 + python-mega-algo/computer_vision/right.html | 7 +- python-mega-algo/knapsack/README.html | 33 + python-mega-algo/knapsack/right.html | 7 +- python-mega-algo/linear_algebra/README.html | 88 + python-mega-algo/linear_algebra/right.html | 6 +- python-mega-algo/project_euler/README.html | 184 + python-mega-algo/project_euler/right.html | 6 +- python-mega-algo/quantum/README.html | 35 + python-mega-algo/quantum/right.html | 9 +- python-mega-algo/right.html | 7 +- .../sorts/normal_distribution_quick_sort.html | 120 + python-mega-algo/sorts/right.html | 29 +- right.html | 7 +- 125 files changed, 52694 insertions(+), 5254 deletions(-) create mode 100644 README.html create mode 100644 Readings/(Tutorial) Reading and Writing Files in Python.html create mode 100644 Readings/(Tutorial) Reading and Writing Files in Python.md create mode 100644 Readings/10 External Python packages you are going to love.html create mode 100644 Readings/10 External Python packages you are going to love.md create mode 100644 Readings/30-python-snippets.html create mode 100644 Readings/30-python-snippets.md create mode 100644 Readings/A quick yet complete tour of lists in Python3 in just seven minutes.html create mode 100644 Readings/A quick yet complete tour of lists in Python3 in just seven minutes.md create mode 100644 Readings/An A-Z of useful Python tricks.html create mode 100644 Readings/An A-Z of useful Python tricks.md create mode 100644 Readings/Automate-Boring-Stuff-with-Python.html create mode 100644 Readings/Automate-Boring-Stuff-with-Python.md create mode 100644 Readings/Controlling the Web with Python.html create mode 100644 Readings/Controlling the Web with Python.md create mode 100644 Readings/How to build a URL crawler to map a website using Python.html create mode 100644 Readings/How to build a URL crawler to map a website using Python.md create mode 100644 Readings/The Python RegEx Cheat Sheet for Budding Programmers.html create mode 100644 Readings/The Python RegEx Cheat Sheet for Budding Programmers.md create mode 100644 Readings/beginners.pdf create mode 100644 Readings/importing-data-python.pdf create mode 100644 Readings/jupyter-notebook-cheat-sheet.pdf create mode 100644 Readings/numpy.pdf create mode 100644 Readings/python-basics.html create mode 100644 Readings/python-basics.md create mode 100644 Readings/right.html create mode 100644 directory.html create mode 100644 exploring-python/Numpy.ipynb create mode 100644 exploring-python/basics.ipynb create mode 100644 exploring-python/part1.ipynb create mode 100644 exploring-python/part2.ipynb create mode 100644 exploring-python/part3.ipynb create mode 100644 exploring-python/part4.ipynb create mode 100644 exploring-python/part5.ipynb create mode 100644 exploring-python/right.html create mode 100644 exploring-python/working-w-jupyter-vscode.html create mode 100644 exploring-python/working-w-jupyter-vscode.md create mode 100644 node_modules/.package-lock.json create mode 100644 node_modules/pandoc/.npmignore create mode 100644 node_modules/pandoc/CHANGELOG create mode 100644 node_modules/pandoc/LICENSE create mode 100644 node_modules/pandoc/Makefile create mode 100644 node_modules/pandoc/NOTICE create mode 100644 node_modules/pandoc/README create mode 100644 node_modules/pandoc/package.json create mode 100644 node_modules/pandoc/pandoc.js create mode 100644 node_modules/pandoc/right.html create mode 100644 node_modules/right.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 prac-4-beginners/practices/ch04_first_lines/readme.html create mode 100644 prac-4-beginners/practices/ch05_interactive_code/readme.html create mode 100644 prac-4-beginners/practices/ch06-organizing-code-with-functions/readme.html create mode 100644 prac-4-beginners/practices/ch07_data_structures/readme.html create mode 100644 prac-4-beginners/practices/ch08_problem_solving/readme.html create mode 100644 prac-4-beginners/practices/ch09_working_with_files/readme.html create mode 100644 prac-4-beginners/practices/ch10_external_libraries/readme.html create mode 100644 prac-4-beginners/practices/ch11-error-handling/readme.html create mode 100644 prac-4-beginners/practices/readme.html create mode 100644 prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_1.html create mode 100644 prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_2.html create mode 100644 prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_3.html create mode 100644 prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_4.html create mode 100644 prac-4-beginners/solutions/ch-05-interactive-code/step_1.html create mode 100644 prac-4-beginners/solutions/ch-08-problem-solving/readme.html create mode 100644 prac-4-beginners/solutions/ch-11-error-handling/readme.html create mode 100644 prac-4-beginners/solutions/readme.html create mode 100644 python-mega-algo/README.html create mode 100644 python-mega-algo/bit_manipulation/README.html create mode 100644 python-mega-algo/cellular_automata/README.html create mode 100644 python-mega-algo/computer_vision/README.html create mode 100644 python-mega-algo/knapsack/README.html create mode 100644 python-mega-algo/linear_algebra/README.html create mode 100644 python-mega-algo/project_euler/README.html create mode 100644 python-mega-algo/quantum/README.html create mode 100644 python-mega-algo/sorts/normal_distribution_quick_sort.html diff --git a/DOCS/_static/basic.css b/DOCS/_static/basic.css index 01192852..3f7bc8bc 100644 --- a/DOCS/_static/basic.css +++ b/DOCS/_static/basic.css @@ -12,233 +12,235 @@ /* -- main layout ----------------------------------------------------------- */ div.clearer { - clear: both; + clear: both; } /* -- relbar ---------------------------------------------------------------- */ div.related { - width: 100%; - font-size: 90%; + width: 100%; + font-size: 90%; } div.related h3 { - display: none; + display: none; } div.related ul { - margin: 0; - padding: 0 0 0 10px; - list-style: none; + margin: 0; + padding: 0 0 0 10px; + list-style: none; } div.related li { - display: inline; + display: inline; } div.related li.right { - float: right; - margin-right: 5px; + float: right; + margin-right: 5px; } /* -- sidebar --------------------------------------------------------------- */ div.sphinxsidebarwrapper { - padding: 10px 5px 0 10px; + padding: 10px 5px 0 10px; } div.sphinxsidebar { - float: left; - width: 230px; - margin-left: -100%; - font-size: 90%; - word-wrap: break-word; - overflow-wrap : break-word; + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap: break-word; } div.sphinxsidebar ul { - list-style: none; + list-style: none; } div.sphinxsidebar ul ul, div.sphinxsidebar ul.want-points { - margin-left: 20px; - list-style: square; + margin-left: 20px; + list-style: square; } div.sphinxsidebar ul ul { - margin-top: 0; - margin-bottom: 0; + margin-top: 0; + margin-bottom: 0; } div.sphinxsidebar form { - margin-top: 10px; + margin-top: 10px; } div.sphinxsidebar input { - border: 1px solid #98dbcc; - font-family: sans-serif; - font-size: 1em; + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; } div.sphinxsidebar #searchbox form.search { - overflow: hidden; + overflow: hidden; } div.sphinxsidebar #searchbox input[type="text"] { - float: left; - width: 80%; - padding: 0.25em; - box-sizing: border-box; + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; } div.sphinxsidebar #searchbox input[type="submit"] { - float: left; - width: 20%; - border-left: none; - padding: 0.25em; - box-sizing: border-box; + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; } - img { - border: 0; - max-width: 100%; + border: 0; + max-width: 100%; } /* -- search page ----------------------------------------------------------- */ ul.search { - margin: 10px 0 0 20px; - padding: 0; + margin: 10px 0 0 20px; + padding: 0; } ul.search li { - padding: 5px 0 5px 20px; - background-image: url(file.png); - background-repeat: no-repeat; - background-position: 0 7px; + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; } ul.search li a { - font-weight: bold; + font-weight: bold; } ul.search li div.context { - color: #888; - margin: 2px 0 0 30px; - text-align: left; + color: #888; + margin: 2px 0 0 30px; + text-align: left; } ul.keywordmatches li.goodmatch a { - font-weight: bold; + font-weight: bold; } /* -- index page ------------------------------------------------------------ */ table.contentstable { - width: 90%; - margin-left: auto; - margin-right: auto; + width: 90%; + margin-left: auto; + margin-right: auto; } table.contentstable p.biglink { - line-height: 150%; + line-height: 150%; } a.biglink { - font-size: 1.3em; + font-size: 1.3em; } span.linkdescr { - font-style: italic; - padding-top: 5px; - font-size: 90%; + font-style: italic; + padding-top: 5px; + font-size: 90%; } /* -- general index --------------------------------------------------------- */ table.indextable { - width: 100%; + width: 100%; } table.indextable td { - text-align: left; - vertical-align: top; + text-align: left; + vertical-align: top; } table.indextable ul { - margin-top: 0; - margin-bottom: 0; - list-style-type: none; + margin-top: 0; + margin-bottom: 0; + list-style-type: none; } table.indextable > tbody > tr > td > ul { - padding-left: 0em; + padding-left: 0em; } table.indextable tr.pcap { - height: 10px; + height: 10px; } table.indextable tr.cap { - margin-top: 10px; - background-color: #f2f2f2; + margin-top: 10px; + background-color: #f2f2f2; } img.toggler { - margin-right: 3px; - margin-top: 3px; - cursor: pointer; + margin-right: 3px; + margin-top: 3px; + cursor: pointer; } div.modindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; } div.genindex-jumpbox { - border-top: 1px solid #ddd; - border-bottom: 1px solid #ddd; - margin: 1em 0 1em 0; - padding: 0.4em; + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; } /* -- domain module index --------------------------------------------------- */ table.modindextable td { - padding: 2px; - border-collapse: collapse; + padding: 2px; + border-collapse: collapse; } /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; - max-width: 800px; + min-width: 450px; + max-width: 800px; } -div.body p, div.body dd, div.body li, div.body blockquote { - -moz-hyphens: auto; - -ms-hyphens: auto; - -webkit-hyphens: auto; - hyphens: auto; +div.body p, +div.body dd, +div.body li, +div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; } a.headerlink { - visibility: hidden; + visibility: hidden; } a.brackets:before, -span.brackets > a:before{ - content: "["; +span.brackets > a:before { + content: "["; } a.brackets:after, span.brackets > a:after { - content: "]"; + content: "]"; } h1:hover > a.headerlink, @@ -251,194 +253,203 @@ dt:hover > a.headerlink, caption:hover > a.headerlink, p.caption:hover > a.headerlink, div.code-block-caption:hover > a.headerlink { - visibility: visible; + visibility: visible; } div.body p.caption { - text-align: inherit; + text-align: inherit; } div.body td { - text-align: left; + text-align: left; } .first { - margin-top: 0 !important; + margin-top: 0 !important; } p.rubric { - margin-top: 30px; - font-weight: bold; + margin-top: 30px; + font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { - clear: left; - float: left; - margin-right: 1em; +img.align-left, +.figure.align-left, +object.align-left { + clear: left; + float: left; + margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { - clear: right; - float: right; - margin-left: 1em; +img.align-right, +.figure.align-right, +object.align-right { + clear: right; + float: right; + margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, +.figure.align-center, +object.align-center { display: block; margin-left: auto; margin-right: auto; } -img.align-default, .figure.align-default { +img.align-default, +.figure.align-default { display: block; margin-left: auto; margin-right: auto; } .align-left { - text-align: left; + text-align: left; } .align-center { - text-align: center; + text-align: center; } .align-default { - text-align: center; + text-align: center; } .align-right { - text-align: right; + text-align: right; } /* -- sidebars -------------------------------------------------------------- */ div.sidebar { - margin: 0 0 0.5em 1em; - border: 1px solid #ddb; - padding: 7px 7px 0 7px; - background-color: #ffe; - width: 40%; - float: right; + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; } p.sidebar-title { - font-weight: bold; + font-weight: bold; } /* -- topics ---------------------------------------------------------------- */ div.topic { - border: 1px solid #ccc; - padding: 7px 7px 0 7px; - margin: 10px 0 10px 0; + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; } p.topic-title { - font-size: 1.1em; - font-weight: bold; - margin-top: 10px; + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; } /* -- admonitions ----------------------------------------------------------- */ div.admonition { - margin-top: 10px; - margin-bottom: 10px; - padding: 7px; + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; } div.admonition dt { - font-weight: bold; + font-weight: bold; } div.admonition dl { - margin-bottom: 0; + margin-bottom: 0; } p.admonition-title { - margin: 0px 10px 5px 0px; - font-weight: bold; + margin: 0px 10px 5px 0px; + font-weight: bold; } div.body p.centered { - text-align: center; - margin-top: 25px; + text-align: center; + margin-top: 25px; } /* -- tables ---------------------------------------------------------------- */ table.docutils { - border: 0; - border-collapse: collapse; + border: 0; + border-collapse: collapse; } table.align-center { - margin-left: auto; - margin-right: auto; + margin-left: auto; + margin-right: auto; } table.align-default { - margin-left: auto; - margin-right: auto; + margin-left: auto; + margin-right: auto; } table caption span.caption-number { - font-style: italic; + font-style: italic; } table caption span.caption-text { } -table.docutils td, table.docutils th { - padding: 1px 8px 1px 5px; - border-top: 0; - border-left: 0; - border-right: 0; - border-bottom: 1px solid #aaa; +table.docutils td, +table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; +table.footnote td, +table.footnote th { + border: 0 !important; } th { - text-align: left; - padding-right: 5px; + text-align: left; + padding-right: 5px; } table.citation { - border-left: solid 1px gray; - margin-left: 1px; + border-left: solid 1px gray; + margin-left: 1px; } table.citation td { - border-bottom: none; + border-bottom: none; } th > p:first-child, td > p:first-child { - margin-top: 0px; + margin-top: 0px; } th > p:last-child, td > p:last-child { - margin-bottom: 0px; + margin-bottom: 0px; } /* -- figures --------------------------------------------------------------- */ div.figure { - margin: 0.5em; - padding: 0.5em; + margin: 0.5em; + padding: 0.5em; } div.figure p.caption { - padding: 0.3em; + padding: 0.3em; } div.figure p.caption span.caption-number { - font-style: italic; + font-style: italic; } div.figure p.caption span.caption-text { @@ -446,323 +457,334 @@ div.figure p.caption span.caption-text { /* -- field list styles ----------------------------------------------------- */ -table.field-list td, table.field-list th { - border: 0 !important; +table.field-list td, +table.field-list th { + border: 0 !important; } .field-list ul { - margin: 0; - padding-left: 1em; + margin: 0; + padding-left: 1em; } .field-list p { - margin: 0; + margin: 0; } .field-name { - -moz-hyphens: manual; - -ms-hyphens: manual; - -webkit-hyphens: manual; - hyphens: manual; + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; } /* -- hlist styles ---------------------------------------------------------- */ table.hlist td { - vertical-align: top; + vertical-align: top; } - /* -- other body styles ----------------------------------------------------- */ ol.arabic { - list-style: decimal; + list-style: decimal; } ol.loweralpha { - list-style: lower-alpha; + list-style: lower-alpha; } ol.upperalpha { - list-style: upper-alpha; + list-style: upper-alpha; } ol.lowerroman { - list-style: lower-roman; + list-style: lower-roman; } ol.upperroman { - list-style: upper-roman; + list-style: upper-roman; } li > p:first-child { - margin-top: 0px; + margin-top: 0px; } li > p:last-child { - margin-bottom: 0px; + margin-bottom: 0px; } dl.footnote > dt, dl.citation > dt { - float: left; + float: left; } dl.footnote > dd, dl.citation > dd { - margin-bottom: 0em; + margin-bottom: 0em; } dl.footnote > dd:after, dl.citation > dd:after { - content: ""; - clear: both; + content: ""; + clear: both; } dl.field-list { - display: grid; - grid-template-columns: fit-content(30%) auto; + display: grid; + grid-template-columns: fit-content(30%) auto; } dl.field-list > dt { - font-weight: bold; - word-break: break-word; - padding-left: 0.5em; - padding-right: 5px; + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; } dl.field-list > dt:after { - content: ":"; + content: ":"; } dl.field-list > dd { - padding-left: 0.5em; - margin-top: 0em; - margin-left: 0em; - margin-bottom: 0em; + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; } dl { - margin-bottom: 15px; + margin-bottom: 15px; } dd > p:first-child { - margin-top: 0px; + margin-top: 0px; } -dd ul, dd table { - margin-bottom: 10px; +dd ul, +dd table { + margin-bottom: 10px; } dd { - margin-top: 3px; - margin-bottom: 10px; - margin-left: 30px; + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; } -dt:target, span.highlighted { - background-color: #fbe54e; +dt:target, +span.highlighted { + background-color: #fbe54e; } rect.highlighted { - fill: #fbe54e; + fill: #fbe54e; } dl.glossary dt { - font-weight: bold; - font-size: 1.1em; + font-weight: bold; + font-size: 1.1em; } .optional { - font-size: 1.3em; + font-size: 1.3em; } .sig-paren { - font-size: larger; + font-size: larger; } .versionmodified { - font-style: italic; + font-style: italic; } .system-message { - background-color: #fda; - padding: 5px; - border: 3px solid red; + background-color: #fda; + padding: 5px; + border: 3px solid red; } -.footnote:target { - background-color: #ffa; +.footnote:target { + background-color: #ffa; } .line-block { - display: block; - margin-top: 1em; - margin-bottom: 1em; + display: block; + margin-top: 1em; + margin-bottom: 1em; } .line-block .line-block { - margin-top: 0; - margin-bottom: 0; - margin-left: 1.5em; + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; } -.guilabel, .menuselection { - font-family: sans-serif; +.guilabel, +.menuselection { + font-family: sans-serif; } .accelerator { - text-decoration: underline; + text-decoration: underline; } .classifier { - font-style: oblique; + font-style: oblique; } .classifier:before { - font-style: normal; - margin: 0.5em; - content: ":"; + font-style: normal; + margin: 0.5em; + content: ":"; } -abbr, acronym { - border-bottom: dotted 1px; - cursor: help; +abbr, +acronym { + border-bottom: dotted 1px; + cursor: help; } /* -- code displays --------------------------------------------------------- */ pre { - overflow: auto; - overflow-y: hidden; /* fixes display issues on Chrome browsers */ + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ } span.pre { - -moz-hyphens: none; - -ms-hyphens: none; - -webkit-hyphens: none; - hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; } td.linenos pre { - padding: 5px 0px; - border: 0; - background-color: transparent; - color: #aaa; + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; } table.highlighttable { - margin-left: 0.5em; + margin-left: 0.5em; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + padding: 0 0.5em 0 0.5em; } div.code-block-caption { - padding: 2px 5px; - font-size: small; + padding: 2px 5px; + font-size: small; } div.code-block-caption code { - background-color: transparent; + background-color: transparent; } div.code-block-caption + div > div.highlight > pre { - margin-top: 0; + margin-top: 0; } -div.doctest > div.highlight span.gp { /* gp: Generic.Prompt */ - user-select: none; +div.doctest > div.highlight span.gp { + /* gp: Generic.Prompt */ + user-select: none; } div.code-block-caption span.caption-number { - padding: 0.1em 0.3em; - font-style: italic; + padding: 0.1em 0.3em; + font-style: italic; } div.code-block-caption span.caption-text { } div.literal-block-wrapper { - padding: 1em 1em 0; + padding: 1em 1em 0; } div.literal-block-wrapper div.highlight { - margin: 0; + margin: 0; } code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; + background-color: transparent; + font-weight: bold; + font-size: 1.2em; } code.descclassname { - background-color: transparent; + background-color: transparent; } -code.xref, a code { - background-color: transparent; - font-weight: bold; +code.xref, +a code { + background-color: transparent; + font-weight: bold; } -h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { - background-color: transparent; +h1 code, +h2 code, +h3 code, +h4 code, +h5 code, +h6 code { + background-color: transparent; } .viewcode-link { - float: right; + float: right; } .viewcode-back { - float: right; - font-family: sans-serif; + float: right; + font-family: sans-serif; } div.viewcode-block:target { - margin: -1px -10px; - padding: 0 10px; + margin: -1px -10px; + padding: 0 10px; } /* -- math display ---------------------------------------------------------- */ img.math { - vertical-align: middle; + vertical-align: middle; } div.body div.math p { - text-align: center; + text-align: center; } span.eqno { - float: right; + float: right; } span.eqno a.headerlink { - position: relative; - left: 0px; - z-index: 1; + position: relative; + left: 0px; + z-index: 1; } div.math:hover a.headerlink { - visibility: visible; + visibility: visible; } /* -- printout stylesheet --------------------------------------------------- */ @media print { - div.document, - div.documentwrapper, - div.bodywrapper { - margin: 0 !important; - width: 100%; - } - - div.sphinxsidebar, - div.related, - div.footer, - #top-link { - display: none; - } -} \ No newline at end of file + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} diff --git a/DOCS/_static/classic.css b/DOCS/_static/classic.css index 15375cc0..3ceb75b7 100644 --- a/DOCS/_static/classic.css +++ b/DOCS/_static/classic.css @@ -14,135 +14,131 @@ /* -- page layout ----------------------------------------------------------- */ html { - /* CSS hack for macOS's scrollbar (see #1125) */ - background-color: #FFFFFF; + /* CSS hack for macOS's scrollbar (see #1125) */ + background-color: #ffffff; } body { - font-family: 'Lucida Grande', Arial, sans-serif; - font-size: 100%; - background-color: white; - color: #000; - margin: 0; - padding: 0; + font-family: "Lucida Grande", Arial, sans-serif; + font-size: 100%; + background-color: white; + color: #000; + margin: 0; + padding: 0; } div.document { - background-color: white; + background-color: white; } div.documentwrapper { - float: left; - width: 100%; + float: left; + width: 100%; } div.bodywrapper { - margin: 0 0 0 230px; + margin: 0 0 0 230px; } div.body { - background-color: white; - color: #222222; - padding: 0 20px 30px 20px; + background-color: white; + color: #222222; + padding: 0 20px 30px 20px; } div.footer { - color: #555555; - width: 100%; - padding: 9px 0 9px 0; - text-align: center; - font-size: 75%; + color: #555555; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; } div.footer a { - color: #555555; - text-decoration: underline; + color: #555555; + text-decoration: underline; } div.related { - background-color: white; - line-height: 30px; - color: #666666; + background-color: white; + line-height: 30px; + color: #666666; } div.related a { - color: #444444; + color: #444444; } div.sphinxsidebar { } div.sphinxsidebar h3 { - font-family: 'Lucida Grande', Arial, sans-serif; - color: #444444; - font-size: 1.4em; - font-weight: normal; - margin: 0; - padding: 0; + font-family: "Lucida Grande", Arial, sans-serif; + color: #444444; + font-size: 1.4em; + font-weight: normal; + margin: 0; + padding: 0; } div.sphinxsidebar h3 a { - color: #444444; + color: #444444; } div.sphinxsidebar h4 { - font-family: 'Lucida Grande', Arial, sans-serif; - color: #444444; - font-size: 1.3em; - font-weight: normal; - margin: 5px 0 0 0; - padding: 0; + font-family: "Lucida Grande", Arial, sans-serif; + color: #444444; + font-size: 1.3em; + font-weight: normal; + margin: 5px 0 0 0; + padding: 0; } div.sphinxsidebar p { - color: #444444; + color: #444444; } div.sphinxsidebar p.topless { - margin: 5px 10px 10px 10px; + margin: 5px 10px 10px 10px; } div.sphinxsidebar ul { - margin: 10px; - padding: 0; - color: #444444; + margin: 10px; + padding: 0; + color: #444444; } div.sphinxsidebar a { - color: #444444; + color: #444444; } div.sphinxsidebar input { - border: 1px solid #444444; - font-family: sans-serif; - font-size: 1em; + border: 1px solid #444444; + font-family: sans-serif; + font-size: 1em; } - /* for collapsible sidebar */ div#sidebarbutton { - background-color: #3c6e83; + background-color: #3c6e83; } - /* -- hyperlink styles ------------------------------------------------------ */ a { - color: #0090c0; - text-decoration: none; + color: #0090c0; + text-decoration: none; } a:visited { - color: #00608f; - text-decoration: none; + color: #00608f; + text-decoration: none; } a:hover { - text-decoration: underline; + text-decoration: underline; } - - /* -- body styles ----------------------------------------------------------- */ div.body h1, @@ -151,121 +147,139 @@ div.body h3, div.body h4, div.body h5, div.body h6 { - font-family: 'Lucida Grande', Arial, sans-serif; - background-color: white; - font-weight: normal; - color: #1a1a1a; - border-bottom: 1px solid #ccc; - margin: 20px -20px 10px -20px; - padding: 3px 0 3px 10px; -} - -div.body h1 { margin-top: 0; font-size: 200%; } -div.body h2 { font-size: 160%; } -div.body h3 { font-size: 140%; } -div.body h4 { font-size: 120%; } -div.body h5 { font-size: 110%; } -div.body h6 { font-size: 100%; } + font-family: "Lucida Grande", Arial, sans-serif; + background-color: white; + font-weight: normal; + color: #1a1a1a; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { + margin-top: 0; + font-size: 200%; +} +div.body h2 { + font-size: 160%; +} +div.body h3 { + font-size: 140%; +} +div.body h4 { + font-size: 120%; +} +div.body h5 { + font-size: 110%; +} +div.body h6 { + font-size: 100%; +} a.headerlink { - color: #aaaaaa; - font-size: 0.8em; - padding: 0 4px 0 4px; - text-decoration: none; + color: #aaaaaa; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; } a.headerlink:hover { - background-color: #aaaaaa; - color: white; + background-color: #aaaaaa; + color: white; } -div.body p, div.body dd, div.body li, div.body blockquote { - text-align: justify; - line-height: 130%; +div.body p, +div.body dd, +div.body li, +div.body blockquote { + text-align: justify; + line-height: 130%; } div.admonition p.admonition-title + p { - display: inline; + display: inline; } div.admonition p { - margin-bottom: 5px; + margin-bottom: 5px; } div.admonition pre { - margin-bottom: 5px; + margin-bottom: 5px; } -div.admonition ul, div.admonition ol { - margin-bottom: 5px; +div.admonition ul, +div.admonition ol { + margin-bottom: 5px; } div.note { - background-color: #eee; - border: 1px solid #ccc; + background-color: #eee; + border: 1px solid #ccc; } div.seealso { - background-color: #ffc; - border: 1px solid #ff6; + background-color: #ffc; + border: 1px solid #ff6; } div.topic { - background-color: #eee; + background-color: #eee; } div.warning { - background-color: #ffe4e4; - border: 1px solid #f66; + background-color: #ffe4e4; + border: 1px solid #f66; } p.admonition-title { - display: inline; + display: inline; } p.admonition-title:after { - content: ":"; + content: ":"; } pre { - padding: 5px; - background-color: #eeffcc; - color: #333333; - line-height: 120%; - border: 1px solid #ac9; - border-left: none; - border-right: none; + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; } code { - background-color: #ecf0f3; - padding: 0 1px 0 1px; - font-size: 0.95em; + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; } -th, dl.field-list > dt { - background-color: #ede; +th, +dl.field-list > dt { + background-color: #ede; } .warning code { - background: #efc2c2; + background: #efc2c2; } .note code { - background: #d6d6d6; + background: #d6d6d6; } .viewcode-back { - font-family: 'Lucida Grande', Arial, sans-serif; + font-family: "Lucida Grande", Arial, sans-serif; } div.viewcode-block:target { - background-color: #f4debf; - border-top: 1px solid #ac9; - border-bottom: 1px solid #ac9; + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; } div.code-block-caption { - color: #efefef; - background-color: #1c4e63; -} \ No newline at end of file + color: #efefef; + background-color: #1c4e63; +} diff --git a/DOCS/_static/copybutton.js b/DOCS/_static/copybutton.js index f5960d26..d39aca83 100644 --- a/DOCS/_static/copybutton.js +++ b/DOCS/_static/copybutton.js @@ -1,64 +1,85 @@ -$(document).ready(function() { - /* Add a [>>>] button on the top-right corner of code samples to hide - * the >>> and ... prompts and the output and thus make the code - * copyable. */ - var div = $('.highlight-python .highlight,' + - '.highlight-python3 .highlight,' + - '.highlight-pycon .highlight,' + - '.highlight-default .highlight'); - var pre = div.find('pre'); +$(document).ready(function () { + /* Add a [>>>] button on the top-right corner of code samples to hide + * the >>> and ... prompts and the output and thus make the code + * copyable. */ + var div = $( + ".highlight-python .highlight," + + ".highlight-python3 .highlight," + + ".highlight-pycon .highlight," + + ".highlight-default .highlight" + ); + var pre = div.find("pre"); - // get the styles from the current theme - pre.parent().parent().css('position', 'relative'); - var hide_text = 'Hide the prompts and output'; - var show_text = 'Show the prompts and output'; - var border_width = pre.css('border-top-width'); - var border_style = pre.css('border-top-style'); - var border_color = pre.css('border-top-color'); - var button_styles = { - 'cursor':'pointer', 'position': 'absolute', 'top': '0', 'right': '0', - 'border-color': border_color, 'border-style': border_style, - 'border-width': border_width, 'color': border_color, 'text-size': '75%', - 'font-family': 'monospace', 'padding-left': '0.2em', 'padding-right': '0.2em', - 'border-radius': '0 3px 0 0' - } + // get the styles from the current theme + pre.parent().parent().css("position", "relative"); + var hide_text = "Hide the prompts and output"; + var show_text = "Show the prompts and output"; + var border_width = pre.css("border-top-width"); + var border_style = pre.css("border-top-style"); + var border_color = pre.css("border-top-color"); + var button_styles = { + cursor: "pointer", + position: "absolute", + top: "0", + right: "0", + "border-color": border_color, + "border-style": border_style, + "border-width": border_width, + color: border_color, + "text-size": "75%", + "font-family": "monospace", + "padding-left": "0.2em", + "padding-right": "0.2em", + "border-radius": "0 3px 0 0", + }; - // create and add the button to all the code blocks that contain >>> - div.each(function(index) { - var jthis = $(this); - if (jthis.find('.gp').length > 0) { - var button = $('>>>'); - button.css(button_styles) - button.attr('title', hide_text); - button.data('hidden', 'false'); - jthis.prepend(button); - } - // tracebacks (.gt) contain bare text elements that need to be - // wrapped in a span to work with .nextUntil() (see later) - jthis.find('pre:has(.gt)').contents().filter(function() { - return ((this.nodeType == 3) && (this.data.trim().length > 0)); - }).wrap(''); - }); + // create and add the button to all the code blocks that contain >>> + div.each(function (index) { + var jthis = $(this); + if (jthis.find(".gp").length > 0) { + var button = $('>>>'); + button.css(button_styles); + button.attr("title", hide_text); + button.data("hidden", "false"); + jthis.prepend(button); + } + // tracebacks (.gt) contain bare text elements that need to be + // wrapped in a span to work with .nextUntil() (see later) + jthis + .find("pre:has(.gt)") + .contents() + .filter(function () { + return this.nodeType == 3 && this.data.trim().length > 0; + }) + .wrap(""); + }); - // define the behavior of the button when it's clicked - $('.copybutton').click(function(e){ - e.preventDefault(); - var button = $(this); - if (button.data('hidden') === 'false') { - // hide the code output - button.parent().find('.go, .gp, .gt').hide(); - button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'hidden'); - button.css('text-decoration', 'line-through'); - button.attr('title', show_text); - button.data('hidden', 'true'); - } else { - // show the code output - button.parent().find('.go, .gp, .gt').show(); - button.next('pre').find('.gt').nextUntil('.gp, .go').css('visibility', 'visible'); - button.css('text-decoration', 'none'); - button.attr('title', hide_text); - button.data('hidden', 'false'); - } - }); + // define the behavior of the button when it's clicked + $(".copybutton").click(function (e) { + e.preventDefault(); + var button = $(this); + if (button.data("hidden") === "false") { + // hide the code output + button.parent().find(".go, .gp, .gt").hide(); + button + .next("pre") + .find(".gt") + .nextUntil(".gp, .go") + .css("visibility", "hidden"); + button.css("text-decoration", "line-through"); + button.attr("title", show_text); + button.data("hidden", "true"); + } else { + // show the code output + button.parent().find(".go, .gp, .gt").show(); + button + .next("pre") + .find(".gt") + .nextUntil(".gp, .go") + .css("visibility", "visible"); + button.css("text-decoration", "none"); + button.attr("title", hide_text); + button.data("hidden", "false"); + } + }); }); - diff --git a/DOCS/_static/doctools.js b/DOCS/_static/doctools.js index daccd209..37e4fb71 100644 --- a/DOCS/_static/doctools.js +++ b/DOCS/_static/doctools.js @@ -30,8 +30,8 @@ if (!window.console || !console.firebug) { /** * small helper function to urldecode strings */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); +jQuery.urldecode = function (x) { + return decodeURIComponent(x).replace(/\+/g, " "); }; /** @@ -44,19 +44,16 @@ jQuery.urlencode = encodeURIComponent; * current request. Multiple values per key are supported, * it will always return arrays of strings for the value parts. */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); +jQuery.getQueryParameters = function (s) { + if (typeof s === "undefined") s = document.location.search; + var parts = s.substr(s.indexOf("?") + 1).split("&"); var result = {}; for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); + var tmp = parts[i].split("=", 2); var key = jQuery.urldecode(tmp[0]); var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; + if (key in result) result[key].push(value); + else result[key] = [value]; } return result; }; @@ -65,49 +62,63 @@ jQuery.getQueryParameters = function(s) { * highlight a given string on a jquery object by wrapping it in * span elements with the given class name. */ -jQuery.fn.highlightText = function(text, className) { +jQuery.fn.highlightText = function (text, className) { function highlight(node, addItems) { if (node.nodeType === 3) { var val = node.nodeValue; var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { + if ( + pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight") + ) { var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + var isInSVG = jQuery(node) + .closest("body, svg, foreignObject") + .is("svg"); if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + span = document.createElementNS( + "http://www.w3.org/2000/svg", + "tspan" + ); } else { span = document.createElement("span"); span.className = className; } span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); + node.parentNode.insertBefore( + span, + node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling + ) + ); node.nodeValue = val.substr(0, pos); if (isInSVG) { - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); var bbox = node.parentElement.getBBox(); rect.x.baseVal.value = bbox.x; rect.y.baseVal.value = bbox.y; rect.width.baseVal.value = bbox.width; rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); + rect.setAttribute("class", className); addItems.push({ - "parent": node.parentNode, - "target": rect}); + parent: node.parentNode, + target: rect, + }); } } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { + } else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function () { highlight(this, addItems); }); } } var addItems = []; - var result = this.each(function() { + var result = this.each(function () { highlight(this, addItems); }); for (var i = 0; i < addItems.length; ++i) { @@ -121,19 +132,21 @@ jQuery.fn.highlightText = function(text, className) { * This will be supported until firefox bug is fixed. */ if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { + jQuery.uaMatch = function (ua) { ua = ua.toLowerCase(); - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + var match = + /(chrome)[ \/]([\w.]+)/.exec(ua) || /(webkit)[ \/]([\w.]+)/.exec(ua) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + (ua.indexOf("compatible") < 0 && + /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua)) || []; return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" + browser: match[1] || "", + version: match[2] || "0", }; }; jQuery.browser = {}; @@ -144,8 +157,7 @@ if (!jQuery.browser) { * Small JavaScript module for the documentation. */ var Documentation = { - - init : function() { + init: function () { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); @@ -157,48 +169,51 @@ var Documentation = { /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: function (n) { + return n === 1 ? 0 : 1; + }, + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { + gettext: function (string) { var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; + if (typeof translated === "undefined") return string; + return typeof translated === "string" ? translated : translated[0]; }, - ngettext : function(singular, plural, n) { + ngettext: function (singular, plural, n) { var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; + if (typeof translated === "undefined") return n == 1 ? singular : plural; return translated[Documentation.PLURALEXPR(n)]; }, - addTranslations : function(catalog) { + addTranslations: function (catalog) { for (var key in catalog.messages) this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.PLURAL_EXPR = new Function( + "n", + "return +(" + catalog.plural_expr + ")" + ); this.LOCALE = catalog.locale; }, /** * add context elements like header anchor links */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); + addContextElements: function () { + $("div[id] > :header:first").each(function () { + $('\u00B6') + .attr("href", "#" + this.id) + .attr("title", _("Permalink to this headline")) + .appendTo(this); }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); + $("dt[id]").each(function () { + $('\u00B6') + .attr("href", "#" + this.id) + .attr("title", _("Permalink to this definition")) + .appendTo(this); }); }, @@ -206,97 +221,107 @@ var Documentation = { * workaround a firefox stupidity * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 */ - fixFirefoxAnchorBug : function() { + fixFirefoxAnchorBug: function () { if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; + window.setTimeout(function () { + document.location.href += ""; }, 10); }, /** * highlight the search words provided in the url in the text */ - highlightSearchWords : function() { + highlightSearchWords: function () { var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + var terms = params.highlight ? params.highlight[0].split(/\s+/) : []; if (terms.length) { - var body = $('div.body'); + var body = $("div.body"); if (!body.length) { - body = $('body'); + body = $("body"); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); + window.setTimeout(function () { + $.each(terms, function () { + body.highlightText(this.toLowerCase(), "highlighted"); }); }, 10); - $('') - .appendTo($('#searchbox')); + $( + '" + ).appendTo($("#searchbox")); } }, /** * init the domain index toggle buttons */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); + initIndexTable: function () { + var togglers = $("img.toggler") + .click(function () { + var src = $(this).attr("src"); + var idnum = $(this).attr("id").substr(7); + $("tr.cg-" + idnum).toggle(); + if (src.substr(-9) === "minus.png") + $(this).attr("src", src.substr(0, src.length - 9) + "plus.png"); + else $(this).attr("src", src.substr(0, src.length - 8) + "minus.png"); + }) + .css("display", ""); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); + togglers.click(); } }, /** * helper function to hide the search marks again */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); + hideSearchWords: function () { + $("#searchbox .highlight-link").fadeOut(300); + $("span.highlighted").removeClass("highlighted"); }, /** * make the url absolute */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + makeURL: function (relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + "/" + relativeURL; }, /** * get the current relative url */ - getCurrentURL : function() { + getCurrentURL: function () { var path = document.location.pathname; var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function () { + if (this === "..") parts.pop(); }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + var url = parts.join("/"); + return path.substring(url.lastIndexOf("/") + 1, path.length - 1); }, - initOnKeyListeners: function() { - $(document).keydown(function(event) { + initOnKeyListeners: function () { + $(document).keydown(function (event) { var activeElementType = document.activeElement.tagName; // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' - && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) { + if ( + activeElementType !== "TEXTAREA" && + activeElementType !== "INPUT" && + activeElementType !== "SELECT" && + !event.altKey && + !event.ctrlKey && + !event.metaKey && + !event.shiftKey + ) { switch (event.keyCode) { case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); + var prevHref = $('link[rel="prev"]').prop("href"); if (prevHref) { window.location.href = prevHref; return false; } case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); + var nextHref = $('link[rel="next"]').prop("href"); if (nextHref) { window.location.href = nextHref; return false; @@ -304,12 +329,12 @@ var Documentation = { } } }); - } + }, }; // quick alias for translations _ = Documentation.gettext; -$(document).ready(function() { +$(document).ready(function () { Documentation.init(); }); diff --git a/DOCS/_static/documentation_options.js b/DOCS/_static/documentation_options.js index ed565a01..ee97a660 100644 --- a/DOCS/_static/documentation_options.js +++ b/DOCS/_static/documentation_options.js @@ -1,11 +1,13 @@ var DOCUMENTATION_OPTIONS = { - URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '3.9.5', - LANGUAGE: 'None', - COLLAPSE_INDEX: false, - BUILDER: 'html', - FILE_SUFFIX: '.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: false -}; \ No newline at end of file + URL_ROOT: document + .getElementById("documentation_options") + .getAttribute("data-url_root"), + VERSION: "3.9.5", + LANGUAGE: "None", + COLLAPSE_INDEX: false, + BUILDER: "html", + FILE_SUFFIX: ".html", + HAS_SOURCE: true, + SOURCELINK_SUFFIX: ".txt", + NAVIGATION_WITH_KEYS: false, +}; diff --git a/DOCS/_static/jquery.js b/DOCS/_static/jquery.js index a1c07fd8..4b3be598 100644 --- a/DOCS/_static/jquery.js +++ b/DOCS/_static/jquery.js @@ -1,2 +1,5512 @@ /*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|" + M + ")" + M + "*"), + U = new RegExp(M + "|>"), + X = new RegExp($), + V = new RegExp("^" + I + "$"), + G = { + ID: new RegExp("^#(" + I + ")"), + CLASS: new RegExp("^\\.(" + I + ")"), + TAG: new RegExp("^(" + I + "|[*])"), + ATTR: new RegExp("^" + W), + PSEUDO: new RegExp("^" + $), + CHILD: new RegExp( + "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + M + + "*(even|odd|(([+-]|)(\\d*)n|)" + + M + + "*(?:([+-]|)" + + M + + "*(\\d+)|))" + + M + + "*\\)|)", + "i" + ), + bool: new RegExp("^(?:" + R + ")$", "i"), + needsContext: new RegExp( + "^" + + M + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + M + + "*((?:-\\d)?\\d*)" + + M + + "*\\)|)(?=[^-]|$)", + "i" + ), + }, + Y = /HTML$/i, + Q = /^(?:input|select|textarea|button)$/i, + J = /^h\d$/i, + K = /^[^{]+\{\s*\[native \w/, + Z = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + ee = /[+~]/, + te = new RegExp("\\\\([\\da-f]{1,6}" + M + "?|(" + M + ")|.)", "ig"), + ne = function (e, t, n) { + var r = "0x" + t - 65536; + return r != r || n + ? t + : r < 0 + ? String.fromCharCode(r + 65536) + : String.fromCharCode((r >> 10) | 55296, (1023 & r) | 56320); + }, + re = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, + ie = function (e, t) { + return t + ? "\0" === e + ? "\ufffd" + : e.slice(0, -1) + + "\\" + + e.charCodeAt(e.length - 1).toString(16) + + " " + : "\\" + e; + }, + oe = function () { + T(); + }, + ae = be( + function (e) { + return !0 === e.disabled && "fieldset" === e.nodeName.toLowerCase(); + }, + { dir: "parentNode", next: "legend" } + ); + try { + H.apply((t = O.call(m.childNodes)), m.childNodes), + t[m.childNodes.length].nodeType; + } catch (e) { + H = { + apply: t.length + ? function (e, t) { + L.apply(e, O.call(t)); + } + : function (e, t) { + var n = e.length, + r = 0; + while ((e[n++] = t[r++])); + e.length = n - 1; + }, + }; + } + function se(t, e, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f = e && e.ownerDocument, + p = e ? e.nodeType : 9; + if ( + ((n = n || []), + "string" != typeof t || !t || (1 !== p && 9 !== p && 11 !== p)) + ) + return n; + if ( + !r && + ((e ? e.ownerDocument || e : m) !== C && T(e), (e = e || C), E) + ) { + if (11 !== p && (u = Z.exec(t))) + if ((i = u[1])) { + if (9 === p) { + if (!(a = e.getElementById(i))) return n; + if (a.id === i) return n.push(a), n; + } else if (f && (a = f.getElementById(i)) && y(e, a) && a.id === i) + return n.push(a), n; + } else { + if (u[2]) return H.apply(n, e.getElementsByTagName(t)), n; + if ( + (i = u[3]) && + d.getElementsByClassName && + e.getElementsByClassName + ) + return H.apply(n, e.getElementsByClassName(i)), n; + } + if ( + d.qsa && + !A[t + " "] && + (!v || !v.test(t)) && + (1 !== p || "object" !== e.nodeName.toLowerCase()) + ) { + if (((c = t), (f = e), 1 === p && U.test(t))) { + (s = e.getAttribute("id")) + ? (s = s.replace(re, ie)) + : e.setAttribute("id", (s = k)), + (o = (l = h(t)).length); + while (o--) l[o] = "#" + s + " " + xe(l[o]); + (c = l.join(",")), (f = (ee.test(t) && ye(e.parentNode)) || e); + } + try { + return H.apply(n, f.querySelectorAll(c)), n; + } catch (e) { + A(t, !0); + } finally { + s === k && e.removeAttribute("id"); + } + } + } + return g(t.replace(B, "$1"), e, n, r); + } + function ue() { + var r = []; + return function e(t, n) { + return ( + r.push(t + " ") > b.cacheLength && delete e[r.shift()], + (e[t + " "] = n) + ); + }; + } + function le(e) { + return (e[k] = !0), e; + } + function ce(e) { + var t = C.createElement("fieldset"); + try { + return !!e(t); + } catch (e) { + return !1; + } finally { + t.parentNode && t.parentNode.removeChild(t), (t = null); + } + } + function fe(e, t) { + var n = e.split("|"), + r = n.length; + while (r--) b.attrHandle[n[r]] = t; + } + function pe(e, t) { + var n = t && e, + r = + n && + 1 === e.nodeType && + 1 === t.nodeType && + e.sourceIndex - t.sourceIndex; + if (r) return r; + if (n) while ((n = n.nextSibling)) if (n === t) return -1; + return e ? 1 : -1; + } + function de(t) { + return function (e) { + return "input" === e.nodeName.toLowerCase() && e.type === t; + }; + } + function he(n) { + return function (e) { + var t = e.nodeName.toLowerCase(); + return ("input" === t || "button" === t) && e.type === n; + }; + } + function ge(t) { + return function (e) { + return "form" in e + ? e.parentNode && !1 === e.disabled + ? "label" in e + ? "label" in e.parentNode + ? e.parentNode.disabled === t + : e.disabled === t + : e.isDisabled === t || (e.isDisabled !== !t && ae(e) === t) + : e.disabled === t + : "label" in e && e.disabled === t; + }; + } + function ve(a) { + return le(function (o) { + return ( + (o = +o), + le(function (e, t) { + var n, + r = a([], e.length, o), + i = r.length; + while (i--) e[(n = r[i])] && (e[n] = !(t[n] = e[n])); + }) + ); + }); + } + function ye(e) { + return e && "undefined" != typeof e.getElementsByTagName && e; + } + for (e in ((d = se.support = {}), + (i = se.isXML = + function (e) { + var t = e.namespaceURI, + n = (e.ownerDocument || e).documentElement; + return !Y.test(t || (n && n.nodeName) || "HTML"); + }), + (T = se.setDocument = + function (e) { + var t, + n, + r = e ? e.ownerDocument || e : m; + return ( + r !== C && + 9 === r.nodeType && + r.documentElement && + ((a = (C = r).documentElement), + (E = !i(C)), + m !== C && + (n = C.defaultView) && + n.top !== n && + (n.addEventListener + ? n.addEventListener("unload", oe, !1) + : n.attachEvent && n.attachEvent("onunload", oe)), + (d.attributes = ce(function (e) { + return (e.className = "i"), !e.getAttribute("className"); + })), + (d.getElementsByTagName = ce(function (e) { + return ( + e.appendChild(C.createComment("")), + !e.getElementsByTagName("*").length + ); + })), + (d.getElementsByClassName = K.test(C.getElementsByClassName)), + (d.getById = ce(function (e) { + return ( + (a.appendChild(e).id = k), + !C.getElementsByName || !C.getElementsByName(k).length + ); + })), + d.getById + ? ((b.filter.ID = function (e) { + var t = e.replace(te, ne); + return function (e) { + return e.getAttribute("id") === t; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && E) { + var n = t.getElementById(e); + return n ? [n] : []; + } + })) + : ((b.filter.ID = function (e) { + var n = e.replace(te, ne); + return function (e) { + var t = + "undefined" != typeof e.getAttributeNode && + e.getAttributeNode("id"); + return t && t.value === n; + }; + }), + (b.find.ID = function (e, t) { + if ("undefined" != typeof t.getElementById && E) { + var n, + r, + i, + o = t.getElementById(e); + if (o) { + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + (i = t.getElementsByName(e)), (r = 0); + while ((o = i[r++])) + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + } + return []; + } + })), + (b.find.TAG = d.getElementsByTagName + ? function (e, t) { + return "undefined" != typeof t.getElementsByTagName + ? t.getElementsByTagName(e) + : d.qsa + ? t.querySelectorAll(e) + : void 0; + } + : function (e, t) { + var n, + r = [], + i = 0, + o = t.getElementsByTagName(e); + if ("*" === e) { + while ((n = o[i++])) 1 === n.nodeType && r.push(n); + return r; + } + return o; + }), + (b.find.CLASS = + d.getElementsByClassName && + function (e, t) { + if ("undefined" != typeof t.getElementsByClassName && E) + return t.getElementsByClassName(e); + }), + (s = []), + (v = []), + (d.qsa = K.test(C.querySelectorAll)) && + (ce(function (e) { + (a.appendChild(e).innerHTML = + ""), + e.querySelectorAll("[msallowcapture^='']").length && + v.push("[*^$]=" + M + "*(?:''|\"\")"), + e.querySelectorAll("[selected]").length || + v.push("\\[" + M + "*(?:value|" + R + ")"), + e.querySelectorAll("[id~=" + k + "-]").length || v.push("~="), + e.querySelectorAll(":checked").length || v.push(":checked"), + e.querySelectorAll("a#" + k + "+*").length || + v.push(".#.+[+~]"); + }), + ce(function (e) { + e.innerHTML = + ""; + var t = C.createElement("input"); + t.setAttribute("type", "hidden"), + e.appendChild(t).setAttribute("name", "D"), + e.querySelectorAll("[name=d]").length && + v.push("name" + M + "*[*^$|!~]?="), + 2 !== e.querySelectorAll(":enabled").length && + v.push(":enabled", ":disabled"), + (a.appendChild(e).disabled = !0), + 2 !== e.querySelectorAll(":disabled").length && + v.push(":enabled", ":disabled"), + e.querySelectorAll("*,:x"), + v.push(",.*:"); + })), + (d.matchesSelector = K.test( + (c = + a.matches || + a.webkitMatchesSelector || + a.mozMatchesSelector || + a.oMatchesSelector || + a.msMatchesSelector) + )) && + ce(function (e) { + (d.disconnectedMatch = c.call(e, "*")), + c.call(e, "[s!='']:x"), + s.push("!=", $); + }), + (v = v.length && new RegExp(v.join("|"))), + (s = s.length && new RegExp(s.join("|"))), + (t = K.test(a.compareDocumentPosition)), + (y = + t || K.test(a.contains) + ? function (e, t) { + var n = 9 === e.nodeType ? e.documentElement : e, + r = t && t.parentNode; + return ( + e === r || + !( + !r || + 1 !== r.nodeType || + !(n.contains + ? n.contains(r) + : e.compareDocumentPosition && + 16 & e.compareDocumentPosition(r)) + ) + ); + } + : function (e, t) { + if (t) while ((t = t.parentNode)) if (t === e) return !0; + return !1; + }), + (D = t + ? function (e, t) { + if (e === t) return (l = !0), 0; + var n = + !e.compareDocumentPosition - !t.compareDocumentPosition; + return ( + n || + (1 & + (n = + (e.ownerDocument || e) === (t.ownerDocument || t) + ? e.compareDocumentPosition(t) + : 1) || + (!d.sortDetached && t.compareDocumentPosition(e) === n) + ? e === C || (e.ownerDocument === m && y(m, e)) + ? -1 + : t === C || (t.ownerDocument === m && y(m, t)) + ? 1 + : u + ? P(u, e) - P(u, t) + : 0 + : 4 & n + ? -1 + : 1) + ); + } + : function (e, t) { + if (e === t) return (l = !0), 0; + var n, + r = 0, + i = e.parentNode, + o = t.parentNode, + a = [e], + s = [t]; + if (!i || !o) + return e === C + ? -1 + : t === C + ? 1 + : i + ? -1 + : o + ? 1 + : u + ? P(u, e) - P(u, t) + : 0; + if (i === o) return pe(e, t); + n = e; + while ((n = n.parentNode)) a.unshift(n); + n = t; + while ((n = n.parentNode)) s.unshift(n); + while (a[r] === s[r]) r++; + return r + ? pe(a[r], s[r]) + : a[r] === m + ? -1 + : s[r] === m + ? 1 + : 0; + })), + C + ); + }), + (se.matches = function (e, t) { + return se(e, null, null, t); + }), + (se.matchesSelector = function (e, t) { + if ( + ((e.ownerDocument || e) !== C && T(e), + d.matchesSelector && + E && + !A[t + " "] && + (!s || !s.test(t)) && + (!v || !v.test(t))) + ) + try { + var n = c.call(e, t); + if ( + n || + d.disconnectedMatch || + (e.document && 11 !== e.document.nodeType) + ) + return n; + } catch (e) { + A(t, !0); + } + return 0 < se(t, C, null, [e]).length; + }), + (se.contains = function (e, t) { + return (e.ownerDocument || e) !== C && T(e), y(e, t); + }), + (se.attr = function (e, t) { + (e.ownerDocument || e) !== C && T(e); + var n = b.attrHandle[t.toLowerCase()], + r = n && j.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !E) : void 0; + return void 0 !== r + ? r + : d.attributes || !E + ? e.getAttribute(t) + : (r = e.getAttributeNode(t)) && r.specified + ? r.value + : null; + }), + (se.escape = function (e) { + return (e + "").replace(re, ie); + }), + (se.error = function (e) { + throw new Error("Syntax error, unrecognized expression: " + e); + }), + (se.uniqueSort = function (e) { + var t, + n = [], + r = 0, + i = 0; + if ( + ((l = !d.detectDuplicates), + (u = !d.sortStable && e.slice(0)), + e.sort(D), + l) + ) { + while ((t = e[i++])) t === e[i] && (r = n.push(i)); + while (r--) e.splice(n[r], 1); + } + return (u = null), e; + }), + (o = se.getText = + function (e) { + var t, + n = "", + r = 0, + i = e.nodeType; + if (i) { + if (1 === i || 9 === i || 11 === i) { + if ("string" == typeof e.textContent) return e.textContent; + for (e = e.firstChild; e; e = e.nextSibling) n += o(e); + } else if (3 === i || 4 === i) return e.nodeValue; + } else while ((t = e[r++])) n += o(t); + return n; + }), + ((b = se.selectors = + { + cacheLength: 50, + createPseudo: le, + match: G, + attrHandle: {}, + find: {}, + relative: { + ">": { dir: "parentNode", first: !0 }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: !0 }, + "~": { dir: "previousSibling" }, + }, + preFilter: { + ATTR: function (e) { + return ( + (e[1] = e[1].replace(te, ne)), + (e[3] = (e[3] || e[4] || e[5] || "").replace(te, ne)), + "~=" === e[2] && (e[3] = " " + e[3] + " "), + e.slice(0, 4) + ); + }, + CHILD: function (e) { + return ( + (e[1] = e[1].toLowerCase()), + "nth" === e[1].slice(0, 3) + ? (e[3] || se.error(e[0]), + (e[4] = +(e[4] + ? e[5] + (e[6] || 1) + : 2 * ("even" === e[3] || "odd" === e[3]))), + (e[5] = +(e[7] + e[8] || "odd" === e[3]))) + : e[3] && se.error(e[0]), + e + ); + }, + PSEUDO: function (e) { + var t, + n = !e[6] && e[2]; + return G.CHILD.test(e[0]) + ? null + : (e[3] + ? (e[2] = e[4] || e[5] || "") + : n && + X.test(n) && + (t = h(n, !0)) && + (t = n.indexOf(")", n.length - t) - n.length) && + ((e[0] = e[0].slice(0, t)), (e[2] = n.slice(0, t))), + e.slice(0, 3)); + }, + }, + filter: { + TAG: function (e) { + var t = e.replace(te, ne).toLowerCase(); + return "*" === e + ? function () { + return !0; + } + : function (e) { + return e.nodeName && e.nodeName.toLowerCase() === t; + }; + }, + CLASS: function (e) { + var t = p[e + " "]; + return ( + t || + ((t = new RegExp("(^|" + M + ")" + e + "(" + M + "|$)")) && + p(e, function (e) { + return t.test( + ("string" == typeof e.className && e.className) || + ("undefined" != typeof e.getAttribute && + e.getAttribute("class")) || + "" + ); + })) + ); + }, + ATTR: function (n, r, i) { + return function (e) { + var t = se.attr(e, n); + return null == t + ? "!=" === r + : !r || + ((t += ""), + "=" === r + ? t === i + : "!=" === r + ? t !== i + : "^=" === r + ? i && 0 === t.indexOf(i) + : "*=" === r + ? i && -1 < t.indexOf(i) + : "$=" === r + ? i && t.slice(-i.length) === i + : "~=" === r + ? -1 < (" " + t.replace(F, " ") + " ").indexOf(i) + : "|=" === r && + (t === i || t.slice(0, i.length + 1) === i + "-")); + }; + }, + CHILD: function (h, e, t, g, v) { + var y = "nth" !== h.slice(0, 3), + m = "last" !== h.slice(-4), + x = "of-type" === e; + return 1 === g && 0 === v + ? function (e) { + return !!e.parentNode; + } + : function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l = y !== m ? "nextSibling" : "previousSibling", + c = e.parentNode, + f = x && e.nodeName.toLowerCase(), + p = !n && !x, + d = !1; + if (c) { + if (y) { + while (l) { + a = e; + while ((a = a[l])) + if ( + x + ? a.nodeName.toLowerCase() === f + : 1 === a.nodeType + ) + return !1; + u = l = "only" === h && !u && "nextSibling"; + } + return !0; + } + if (((u = [m ? c.firstChild : c.lastChild]), m && p)) { + (d = + (s = + (r = + (i = + (o = (a = c)[k] || (a[k] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] || [])[0] === S && + r[1]) && r[2]), + (a = s && c.childNodes[s]); + while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop())) + if (1 === a.nodeType && ++d && a === e) { + i[h] = [S, s, d]; + break; + } + } else if ( + (p && + (d = s = + (r = + (i = + (o = (a = e)[k] || (a[k] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] || [])[0] === S && r[1]), + !1 === d) + ) + while ((a = (++s && a && a[l]) || (d = s = 0) || u.pop())) + if ( + (x + ? a.nodeName.toLowerCase() === f + : 1 === a.nodeType) && + ++d && + (p && + ((i = + (o = a[k] || (a[k] = {}))[a.uniqueID] || + (o[a.uniqueID] = {}))[h] = [S, d]), + a === e) + ) + break; + return (d -= v) === g || (d % g == 0 && 0 <= d / g); + } + }; + }, + PSEUDO: function (e, o) { + var t, + a = + b.pseudos[e] || + b.setFilters[e.toLowerCase()] || + se.error("unsupported pseudo: " + e); + return a[k] + ? a(o) + : 1 < a.length + ? ((t = [e, e, "", o]), + b.setFilters.hasOwnProperty(e.toLowerCase()) + ? le(function (e, t) { + var n, + r = a(e, o), + i = r.length; + while (i--) e[(n = P(e, r[i]))] = !(t[n] = r[i]); + }) + : function (e) { + return a(e, 0, t); + }) + : a; + }, + }, + pseudos: { + not: le(function (e) { + var r = [], + i = [], + s = f(e.replace(B, "$1")); + return s[k] + ? le(function (e, t, n, r) { + var i, + o = s(e, null, r, []), + a = e.length; + while (a--) (i = o[a]) && (e[a] = !(t[a] = i)); + }) + : function (e, t, n) { + return (r[0] = e), s(r, null, n, i), (r[0] = null), !i.pop(); + }; + }), + has: le(function (t) { + return function (e) { + return 0 < se(t, e).length; + }; + }), + contains: le(function (t) { + return ( + (t = t.replace(te, ne)), + function (e) { + return -1 < (e.textContent || o(e)).indexOf(t); + } + ); + }), + lang: le(function (n) { + return ( + V.test(n || "") || se.error("unsupported lang: " + n), + (n = n.replace(te, ne).toLowerCase()), + function (e) { + var t; + do { + if ( + (t = E + ? e.lang + : e.getAttribute("xml:lang") || e.getAttribute("lang")) + ) + return ( + (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") + ); + } while ((e = e.parentNode) && 1 === e.nodeType); + return !1; + } + ); + }), + target: function (e) { + var t = n.location && n.location.hash; + return t && t.slice(1) === e.id; + }, + root: function (e) { + return e === a; + }, + focus: function (e) { + return ( + e === C.activeElement && + (!C.hasFocus || C.hasFocus()) && + !!(e.type || e.href || ~e.tabIndex) + ); + }, + enabled: ge(!1), + disabled: ge(!0), + checked: function (e) { + var t = e.nodeName.toLowerCase(); + return ( + ("input" === t && !!e.checked) || ("option" === t && !!e.selected) + ); + }, + selected: function (e) { + return ( + e.parentNode && e.parentNode.selectedIndex, !0 === e.selected + ); + }, + empty: function (e) { + for (e = e.firstChild; e; e = e.nextSibling) + if (e.nodeType < 6) return !1; + return !0; + }, + parent: function (e) { + return !b.pseudos.empty(e); + }, + header: function (e) { + return J.test(e.nodeName); + }, + input: function (e) { + return Q.test(e.nodeName); + }, + button: function (e) { + var t = e.nodeName.toLowerCase(); + return ("input" === t && "button" === e.type) || "button" === t; + }, + text: function (e) { + var t; + return ( + "input" === e.nodeName.toLowerCase() && + "text" === e.type && + (null == (t = e.getAttribute("type")) || + "text" === t.toLowerCase()) + ); + }, + first: ve(function () { + return [0]; + }), + last: ve(function (e, t) { + return [t - 1]; + }), + eq: ve(function (e, t, n) { + return [n < 0 ? n + t : n]; + }), + even: ve(function (e, t) { + for (var n = 0; n < t; n += 2) e.push(n); + return e; + }), + odd: ve(function (e, t) { + for (var n = 1; n < t; n += 2) e.push(n); + return e; + }), + lt: ve(function (e, t, n) { + for (var r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; ) e.push(r); + return e; + }), + gt: ve(function (e, t, n) { + for (var r = n < 0 ? n + t : n; ++r < t; ) e.push(r); + return e; + }), + }, + }).pseudos.nth = b.pseudos.eq), + { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 })) + b.pseudos[e] = de(e); + for (e in { submit: !0, reset: !0 }) b.pseudos[e] = he(e); + function me() {} + function xe(e) { + for (var t = 0, n = e.length, r = ""; t < n; t++) r += e[t].value; + return r; + } + function be(s, e, t) { + var u = e.dir, + l = e.next, + c = l || u, + f = t && "parentNode" === c, + p = r++; + return e.first + ? function (e, t, n) { + while ((e = e[u])) if (1 === e.nodeType || f) return s(e, t, n); + return !1; + } + : function (e, t, n) { + var r, + i, + o, + a = [S, p]; + if (n) { + while ((e = e[u])) + if ((1 === e.nodeType || f) && s(e, t, n)) return !0; + } else + while ((e = e[u])) + if (1 === e.nodeType || f) + if ( + ((i = + (o = e[k] || (e[k] = {}))[e.uniqueID] || + (o[e.uniqueID] = {})), + l && l === e.nodeName.toLowerCase()) + ) + e = e[u] || e; + else { + if ((r = i[c]) && r[0] === S && r[1] === p) + return (a[2] = r[2]); + if (((i[c] = a)[2] = s(e, t, n))) return !0; + } + return !1; + }; + } + function we(i) { + return 1 < i.length + ? function (e, t, n) { + var r = i.length; + while (r--) if (!i[r](e, t, n)) return !1; + return !0; + } + : i[0]; + } + function Te(e, t, n, r, i) { + for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++) + (o = e[s]) && ((n && !n(o, r, i)) || (a.push(o), l && t.push(s))); + return a; + } + function Ce(d, h, g, v, y, e) { + return ( + v && !v[k] && (v = Ce(v)), + y && !y[k] && (y = Ce(y, e)), + le(function (e, t, n, r) { + var i, + o, + a, + s = [], + u = [], + l = t.length, + c = + e || + (function (e, t, n) { + for (var r = 0, i = t.length; r < i; r++) se(e, t[r], n); + return n; + })(h || "*", n.nodeType ? [n] : n, []), + f = !d || (!e && h) ? c : Te(c, s, d, n, r), + p = g ? (y || (e ? d : l || v) ? [] : t) : f; + if ((g && g(f, p, n, r), v)) { + (i = Te(p, u)), v(i, [], n, r), (o = i.length); + while (o--) (a = i[o]) && (p[u[o]] = !(f[u[o]] = a)); + } + if (e) { + if (y || d) { + if (y) { + (i = []), (o = p.length); + while (o--) (a = p[o]) && i.push((f[o] = a)); + y(null, (p = []), i, r); + } + o = p.length; + while (o--) + (a = p[o]) && + -1 < (i = y ? P(e, a) : s[o]) && + (e[i] = !(t[i] = a)); + } + } else (p = Te(p === t ? p.splice(l, p.length) : p)), y ? y(null, t, p, r) : H.apply(t, p); + }) + ); + } + function Ee(e) { + for ( + var i, + t, + n, + r = e.length, + o = b.relative[e[0].type], + a = o || b.relative[" "], + s = o ? 1 : 0, + u = be( + function (e) { + return e === i; + }, + a, + !0 + ), + l = be( + function (e) { + return -1 < P(i, e); + }, + a, + !0 + ), + c = [ + function (e, t, n) { + var r = + (!o && (n || t !== w)) || + ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); + return (i = null), r; + }, + ]; + s < r; + s++ + ) + if ((t = b.relative[e[s].type])) c = [be(we(c), t)]; + else { + if ((t = b.filter[e[s].type].apply(null, e[s].matches))[k]) { + for (n = ++s; n < r; n++) if (b.relative[e[n].type]) break; + return Ce( + 1 < s && we(c), + 1 < s && + xe( + e + .slice(0, s - 1) + .concat({ value: " " === e[s - 2].type ? "*" : "" }) + ).replace(B, "$1"), + t, + s < n && Ee(e.slice(s, n)), + n < r && Ee((e = e.slice(n))), + n < r && xe(e) + ); + } + c.push(t); + } + return we(c); + } + return ( + (me.prototype = b.filters = b.pseudos), + (b.setFilters = new me()), + (h = se.tokenize = + function (e, t) { + var n, + r, + i, + o, + a, + s, + u, + l = x[e + " "]; + if (l) return t ? 0 : l.slice(0); + (a = e), (s = []), (u = b.preFilter); + while (a) { + for (o in ((n && !(r = _.exec(a))) || + (r && (a = a.slice(r[0].length) || a), s.push((i = []))), + (n = !1), + (r = z.exec(a)) && + ((n = r.shift()), + i.push({ value: n, type: r[0].replace(B, " ") }), + (a = a.slice(n.length))), + b.filter)) + !(r = G[o].exec(a)) || + (u[o] && !(r = u[o](r))) || + ((n = r.shift()), + i.push({ value: n, type: o, matches: r }), + (a = a.slice(n.length))); + if (!n) break; + } + return t ? a.length : a ? se.error(e) : x(e, s).slice(0); + }), + (f = se.compile = + function (e, t) { + var n, + v, + y, + m, + x, + r, + i = [], + o = [], + a = N[e + " "]; + if (!a) { + t || (t = h(e)), (n = t.length); + while (n--) (a = Ee(t[n]))[k] ? i.push(a) : o.push(a); + (a = N( + e, + ((v = o), + (m = 0 < (y = i).length), + (x = 0 < v.length), + (r = function (e, t, n, r, i) { + var o, + a, + s, + u = 0, + l = "0", + c = e && [], + f = [], + p = w, + d = e || (x && b.find.TAG("*", i)), + h = (S += null == p ? 1 : Math.random() || 0.1), + g = d.length; + for ( + i && (w = t === C || t || i); + l !== g && null != (o = d[l]); + l++ + ) { + if (x && o) { + (a = 0), t || o.ownerDocument === C || (T(o), (n = !E)); + while ((s = v[a++])) + if (s(o, t || C, n)) { + r.push(o); + break; + } + i && (S = h); + } + m && ((o = !s && o) && u--, e && c.push(o)); + } + if (((u += l), m && l !== u)) { + a = 0; + while ((s = y[a++])) s(c, f, t, n); + if (e) { + if (0 < u) while (l--) c[l] || f[l] || (f[l] = q.call(r)); + f = Te(f); + } + H.apply(r, f), + i && + !e && + 0 < f.length && + 1 < u + y.length && + se.uniqueSort(r); + } + return i && ((S = h), (w = p)), c; + }), + m ? le(r) : r) + )).selector = e; + } + return a; + }), + (g = se.select = + function (e, t, n, r) { + var i, + o, + a, + s, + u, + l = "function" == typeof e && e, + c = !r && h((e = l.selector || e)); + if (((n = n || []), 1 === c.length)) { + if ( + 2 < (o = c[0] = c[0].slice(0)).length && + "ID" === (a = o[0]).type && + 9 === t.nodeType && + E && + b.relative[o[1].type] + ) { + if (!(t = (b.find.ID(a.matches[0].replace(te, ne), t) || [])[0])) + return n; + l && (t = t.parentNode), (e = e.slice(o.shift().value.length)); + } + i = G.needsContext.test(e) ? 0 : o.length; + while (i--) { + if (((a = o[i]), b.relative[(s = a.type)])) break; + if ( + (u = b.find[s]) && + (r = u( + a.matches[0].replace(te, ne), + (ee.test(o[0].type) && ye(t.parentNode)) || t + )) + ) { + if ((o.splice(i, 1), !(e = r.length && xe(o)))) + return H.apply(n, r), n; + break; + } + } + } + return ( + (l || f(e, c))( + r, + t, + !E, + n, + !t || (ee.test(e) && ye(t.parentNode)) || t + ), + n + ); + }), + (d.sortStable = k.split("").sort(D).join("") === k), + (d.detectDuplicates = !!l), + T(), + (d.sortDetached = ce(function (e) { + return 1 & e.compareDocumentPosition(C.createElement("fieldset")); + })), + ce(function (e) { + return ( + (e.innerHTML = ""), + "#" === e.firstChild.getAttribute("href") + ); + }) || + fe("type|href|height|width", function (e, t, n) { + if (!n) return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2); + }), + (d.attributes && + ce(function (e) { + return ( + (e.innerHTML = ""), + e.firstChild.setAttribute("value", ""), + "" === e.firstChild.getAttribute("value") + ); + })) || + fe("value", function (e, t, n) { + if (!n && "input" === e.nodeName.toLowerCase()) return e.defaultValue; + }), + ce(function (e) { + return null == e.getAttribute("disabled"); + }) || + fe(R, function (e, t, n) { + var r; + if (!n) + return !0 === e[t] + ? t.toLowerCase() + : (r = e.getAttributeNode(t)) && r.specified + ? r.value + : null; + }), + se + ); + })(C); + (k.find = h), + (k.expr = h.selectors), + (k.expr[":"] = k.expr.pseudos), + (k.uniqueSort = k.unique = h.uniqueSort), + (k.text = h.getText), + (k.isXMLDoc = h.isXML), + (k.contains = h.contains), + (k.escapeSelector = h.escape); + var T = function (e, t, n) { + var r = [], + i = void 0 !== n; + while ((e = e[t]) && 9 !== e.nodeType) + if (1 === e.nodeType) { + if (i && k(e).is(n)) break; + r.push(e); + } + return r; + }, + S = function (e, t) { + for (var n = []; e; e = e.nextSibling) + 1 === e.nodeType && e !== t && n.push(e); + return n; + }, + N = k.expr.match.needsContext; + function A(e, t) { + return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase(); + } + var D = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; + function j(e, n, r) { + return m(n) + ? k.grep(e, function (e, t) { + return !!n.call(e, t, e) !== r; + }) + : n.nodeType + ? k.grep(e, function (e) { + return (e === n) !== r; + }) + : "string" != typeof n + ? k.grep(e, function (e) { + return -1 < i.call(n, e) !== r; + }) + : k.filter(n, e, r); + } + (k.filter = function (e, t, n) { + var r = t[0]; + return ( + n && (e = ":not(" + e + ")"), + 1 === t.length && 1 === r.nodeType + ? k.find.matchesSelector(r, e) + ? [r] + : [] + : k.find.matches( + e, + k.grep(t, function (e) { + return 1 === e.nodeType; + }) + ) + ); + }), + k.fn.extend({ + find: function (e) { + var t, + n, + r = this.length, + i = this; + if ("string" != typeof e) + return this.pushStack( + k(e).filter(function () { + for (t = 0; t < r; t++) if (k.contains(i[t], this)) return !0; + }) + ); + for (n = this.pushStack([]), t = 0; t < r; t++) k.find(e, i[t], n); + return 1 < r ? k.uniqueSort(n) : n; + }, + filter: function (e) { + return this.pushStack(j(this, e || [], !1)); + }, + not: function (e) { + return this.pushStack(j(this, e || [], !0)); + }, + is: function (e) { + return !!j(this, "string" == typeof e && N.test(e) ? k(e) : e || [], !1) + .length; + }, + }); + var q, + L = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; + ((k.fn.init = function (e, t, n) { + var r, i; + if (!e) return this; + if (((n = n || q), "string" == typeof e)) { + if ( + !(r = + "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length + ? [null, e, null] + : L.exec(e)) || + (!r[1] && t) + ) + return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); + if (r[1]) { + if ( + ((t = t instanceof k ? t[0] : t), + k.merge( + this, + k.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : E, !0) + ), + D.test(r[1]) && k.isPlainObject(t)) + ) + for (r in t) m(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); + return this; + } + return ( + (i = E.getElementById(r[2])) && ((this[0] = i), (this.length = 1)), this + ); + } + return e.nodeType + ? ((this[0] = e), (this.length = 1), this) + : m(e) + ? void 0 !== n.ready + ? n.ready(e) + : e(k) + : k.makeArray(e, this); + }).prototype = k.fn), + (q = k(E)); + var H = /^(?:parents|prev(?:Until|All))/, + O = { children: !0, contents: !0, next: !0, prev: !0 }; + function P(e, t) { + while ((e = e[t]) && 1 !== e.nodeType); + return e; + } + k.fn.extend({ + has: function (e) { + var t = k(e, this), + n = t.length; + return this.filter(function () { + for (var e = 0; e < n; e++) if (k.contains(this, t[e])) return !0; + }); + }, + closest: function (e, t) { + var n, + r = 0, + i = this.length, + o = [], + a = "string" != typeof e && k(e); + if (!N.test(e)) + for (; r < i; r++) + for (n = this[r]; n && n !== t; n = n.parentNode) + if ( + n.nodeType < 11 && + (a + ? -1 < a.index(n) + : 1 === n.nodeType && k.find.matchesSelector(n, e)) + ) { + o.push(n); + break; + } + return this.pushStack(1 < o.length ? k.uniqueSort(o) : o); + }, + index: function (e) { + return e + ? "string" == typeof e + ? i.call(k(e), this[0]) + : i.call(this, e.jquery ? e[0] : e) + : this[0] && this[0].parentNode + ? this.first().prevAll().length + : -1; + }, + add: function (e, t) { + return this.pushStack(k.uniqueSort(k.merge(this.get(), k(e, t)))); + }, + addBack: function (e) { + return this.add(null == e ? this.prevObject : this.prevObject.filter(e)); + }, + }), + k.each( + { + parent: function (e) { + var t = e.parentNode; + return t && 11 !== t.nodeType ? t : null; + }, + parents: function (e) { + return T(e, "parentNode"); + }, + parentsUntil: function (e, t, n) { + return T(e, "parentNode", n); + }, + next: function (e) { + return P(e, "nextSibling"); + }, + prev: function (e) { + return P(e, "previousSibling"); + }, + nextAll: function (e) { + return T(e, "nextSibling"); + }, + prevAll: function (e) { + return T(e, "previousSibling"); + }, + nextUntil: function (e, t, n) { + return T(e, "nextSibling", n); + }, + prevUntil: function (e, t, n) { + return T(e, "previousSibling", n); + }, + siblings: function (e) { + return S((e.parentNode || {}).firstChild, e); + }, + children: function (e) { + return S(e.firstChild); + }, + contents: function (e) { + return "undefined" != typeof e.contentDocument + ? e.contentDocument + : (A(e, "template") && (e = e.content || e), + k.merge([], e.childNodes)); + }, + }, + function (r, i) { + k.fn[r] = function (e, t) { + var n = k.map(this, i, e); + return ( + "Until" !== r.slice(-5) && (t = e), + t && "string" == typeof t && (n = k.filter(t, n)), + 1 < this.length && + (O[r] || k.uniqueSort(n), H.test(r) && n.reverse()), + this.pushStack(n) + ); + }; + } + ); + var R = /[^\x20\t\r\n\f]+/g; + function M(e) { + return e; + } + function I(e) { + throw e; + } + function W(e, t, n, r) { + var i; + try { + e && m((i = e.promise)) + ? i.call(e).done(t).fail(n) + : e && m((i = e.then)) + ? i.call(e, t, n) + : t.apply(void 0, [e].slice(r)); + } catch (e) { + n.apply(void 0, [e]); + } + } + (k.Callbacks = function (r) { + var e, n; + r = + "string" == typeof r + ? ((e = r), + (n = {}), + k.each(e.match(R) || [], function (e, t) { + n[t] = !0; + }), + n) + : k.extend({}, r); + var i, + t, + o, + a, + s = [], + u = [], + l = -1, + c = function () { + for (a = a || r.once, o = i = !0; u.length; l = -1) { + t = u.shift(); + while (++l < s.length) + !1 === s[l].apply(t[0], t[1]) && + r.stopOnFalse && + ((l = s.length), (t = !1)); + } + r.memory || (t = !1), (i = !1), a && (s = t ? [] : ""); + }, + f = { + add: function () { + return ( + s && + (t && !i && ((l = s.length - 1), u.push(t)), + (function n(e) { + k.each(e, function (e, t) { + m(t) + ? (r.unique && f.has(t)) || s.push(t) + : t && t.length && "string" !== w(t) && n(t); + }); + })(arguments), + t && !i && c()), + this + ); + }, + remove: function () { + return ( + k.each(arguments, function (e, t) { + var n; + while (-1 < (n = k.inArray(t, s, n))) + s.splice(n, 1), n <= l && l--; + }), + this + ); + }, + has: function (e) { + return e ? -1 < k.inArray(e, s) : 0 < s.length; + }, + empty: function () { + return s && (s = []), this; + }, + disable: function () { + return (a = u = []), (s = t = ""), this; + }, + disabled: function () { + return !s; + }, + lock: function () { + return (a = u = []), t || i || (s = t = ""), this; + }, + locked: function () { + return !!a; + }, + fireWith: function (e, t) { + return ( + a || + ((t = [e, (t = t || []).slice ? t.slice() : t]), + u.push(t), + i || c()), + this + ); + }, + fire: function () { + return f.fireWith(this, arguments), this; + }, + fired: function () { + return !!o; + }, + }; + return f; + }), + k.extend({ + Deferred: function (e) { + var o = [ + [ + "notify", + "progress", + k.Callbacks("memory"), + k.Callbacks("memory"), + 2, + ], + [ + "resolve", + "done", + k.Callbacks("once memory"), + k.Callbacks("once memory"), + 0, + "resolved", + ], + [ + "reject", + "fail", + k.Callbacks("once memory"), + k.Callbacks("once memory"), + 1, + "rejected", + ], + ], + i = "pending", + a = { + state: function () { + return i; + }, + always: function () { + return s.done(arguments).fail(arguments), this; + }, + catch: function (e) { + return a.then(null, e); + }, + pipe: function () { + var i = arguments; + return k + .Deferred(function (r) { + k.each(o, function (e, t) { + var n = m(i[t[4]]) && i[t[4]]; + s[t[1]](function () { + var e = n && n.apply(this, arguments); + e && m(e.promise) + ? e + .promise() + .progress(r.notify) + .done(r.resolve) + .fail(r.reject) + : r[t[0] + "With"](this, n ? [e] : arguments); + }); + }), + (i = null); + }) + .promise(); + }, + then: function (t, n, r) { + var u = 0; + function l(i, o, a, s) { + return function () { + var n = this, + r = arguments, + e = function () { + var e, t; + if (!(i < u)) { + if ((e = a.apply(n, r)) === o.promise()) + throw new TypeError("Thenable self-resolution"); + (t = + e && + ("object" == typeof e || "function" == typeof e) && + e.then), + m(t) + ? s + ? t.call(e, l(u, o, M, s), l(u, o, I, s)) + : (u++, + t.call( + e, + l(u, o, M, s), + l(u, o, I, s), + l(u, o, M, o.notifyWith) + )) + : (a !== M && ((n = void 0), (r = [e])), + (s || o.resolveWith)(n, r)); + } + }, + t = s + ? e + : function () { + try { + e(); + } catch (e) { + k.Deferred.exceptionHook && + k.Deferred.exceptionHook(e, t.stackTrace), + u <= i + 1 && + (a !== I && ((n = void 0), (r = [e])), + o.rejectWith(n, r)); + } + }; + i + ? t() + : (k.Deferred.getStackHook && + (t.stackTrace = k.Deferred.getStackHook()), + C.setTimeout(t)); + }; + } + return k + .Deferred(function (e) { + o[0][3].add(l(0, e, m(r) ? r : M, e.notifyWith)), + o[1][3].add(l(0, e, m(t) ? t : M)), + o[2][3].add(l(0, e, m(n) ? n : I)); + }) + .promise(); + }, + promise: function (e) { + return null != e ? k.extend(e, a) : a; + }, + }, + s = {}; + return ( + k.each(o, function (e, t) { + var n = t[2], + r = t[5]; + (a[t[1]] = n.add), + r && + n.add( + function () { + i = r; + }, + o[3 - e][2].disable, + o[3 - e][3].disable, + o[0][2].lock, + o[0][3].lock + ), + n.add(t[3].fire), + (s[t[0]] = function () { + return ( + s[t[0] + "With"](this === s ? void 0 : this, arguments), this + ); + }), + (s[t[0] + "With"] = n.fireWith); + }), + a.promise(s), + e && e.call(s, s), + s + ); + }, + when: function (e) { + var n = arguments.length, + t = n, + r = Array(t), + i = s.call(arguments), + o = k.Deferred(), + a = function (t) { + return function (e) { + (r[t] = this), + (i[t] = 1 < arguments.length ? s.call(arguments) : e), + --n || o.resolveWith(r, i); + }; + }; + if ( + n <= 1 && + (W(e, o.done(a(t)).resolve, o.reject, !n), + "pending" === o.state() || m(i[t] && i[t].then)) + ) + return o.then(); + while (t--) W(i[t], a(t), o.reject); + return o.promise(); + }, + }); + var $ = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + (k.Deferred.exceptionHook = function (e, t) { + C.console && + C.console.warn && + e && + $.test(e.name) && + C.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t); + }), + (k.readyException = function (e) { + C.setTimeout(function () { + throw e; + }); + }); + var F = k.Deferred(); + function B() { + E.removeEventListener("DOMContentLoaded", B), + C.removeEventListener("load", B), + k.ready(); + } + (k.fn.ready = function (e) { + return ( + F.then(e)["catch"](function (e) { + k.readyException(e); + }), + this + ); + }), + k.extend({ + isReady: !1, + readyWait: 1, + ready: function (e) { + (!0 === e ? --k.readyWait : k.isReady) || + ((k.isReady = !0) !== e && 0 < --k.readyWait) || + F.resolveWith(E, [k]); + }, + }), + (k.ready.then = F.then), + "complete" === E.readyState || + ("loading" !== E.readyState && !E.documentElement.doScroll) + ? C.setTimeout(k.ready) + : (E.addEventListener("DOMContentLoaded", B), + C.addEventListener("load", B)); + var _ = function (e, t, n, r, i, o, a) { + var s = 0, + u = e.length, + l = null == n; + if ("object" === w(n)) + for (s in ((i = !0), n)) _(e, t, s, n[s], !0, o, a); + else if ( + void 0 !== r && + ((i = !0), + m(r) || (a = !0), + l && + (a + ? (t.call(e, r), (t = null)) + : ((l = t), + (t = function (e, t, n) { + return l.call(k(e), n); + }))), + t) + ) + for (; s < u; s++) t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); + return i ? e : l ? t.call(e) : u ? t(e[0], n) : o; + }, + z = /^-ms-/, + U = /-([a-z])/g; + function X(e, t) { + return t.toUpperCase(); + } + function V(e) { + return e.replace(z, "ms-").replace(U, X); + } + var G = function (e) { + return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType; + }; + function Y() { + this.expando = k.expando + Y.uid++; + } + (Y.uid = 1), + (Y.prototype = { + cache: function (e) { + var t = e[this.expando]; + return ( + t || + ((t = {}), + G(e) && + (e.nodeType + ? (e[this.expando] = t) + : Object.defineProperty(e, this.expando, { + value: t, + configurable: !0, + }))), + t + ); + }, + set: function (e, t, n) { + var r, + i = this.cache(e); + if ("string" == typeof t) i[V(t)] = n; + else for (r in t) i[V(r)] = t[r]; + return i; + }, + get: function (e, t) { + return void 0 === t + ? this.cache(e) + : e[this.expando] && e[this.expando][V(t)]; + }, + access: function (e, t, n) { + return void 0 === t || (t && "string" == typeof t && void 0 === n) + ? this.get(e, t) + : (this.set(e, t, n), void 0 !== n ? n : t); + }, + remove: function (e, t) { + var n, + r = e[this.expando]; + if (void 0 !== r) { + if (void 0 !== t) { + n = (t = Array.isArray(t) + ? t.map(V) + : (t = V(t)) in r + ? [t] + : t.match(R) || []).length; + while (n--) delete r[t[n]]; + } + (void 0 === t || k.isEmptyObject(r)) && + (e.nodeType ? (e[this.expando] = void 0) : delete e[this.expando]); + } + }, + hasData: function (e) { + var t = e[this.expando]; + return void 0 !== t && !k.isEmptyObject(t); + }, + }); + var Q = new Y(), + J = new Y(), + K = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + Z = /[A-Z]/g; + function ee(e, t, n) { + var r, i; + if (void 0 === n && 1 === e.nodeType) + if ( + ((r = "data-" + t.replace(Z, "-$&").toLowerCase()), + "string" == typeof (n = e.getAttribute(r))) + ) { + try { + n = + "true" === (i = n) || + ("false" !== i && + ("null" === i + ? null + : i === +i + "" + ? +i + : K.test(i) + ? JSON.parse(i) + : i)); + } catch (e) {} + J.set(e, t, n); + } else n = void 0; + return n; + } + k.extend({ + hasData: function (e) { + return J.hasData(e) || Q.hasData(e); + }, + data: function (e, t, n) { + return J.access(e, t, n); + }, + removeData: function (e, t) { + J.remove(e, t); + }, + _data: function (e, t, n) { + return Q.access(e, t, n); + }, + _removeData: function (e, t) { + Q.remove(e, t); + }, + }), + k.fn.extend({ + data: function (n, e) { + var t, + r, + i, + o = this[0], + a = o && o.attributes; + if (void 0 === n) { + if ( + this.length && + ((i = J.get(o)), 1 === o.nodeType && !Q.get(o, "hasDataAttrs")) + ) { + t = a.length; + while (t--) + a[t] && + 0 === (r = a[t].name).indexOf("data-") && + ((r = V(r.slice(5))), ee(o, r, i[r])); + Q.set(o, "hasDataAttrs", !0); + } + return i; + } + return "object" == typeof n + ? this.each(function () { + J.set(this, n); + }) + : _( + this, + function (e) { + var t; + if (o && void 0 === e) + return void 0 !== (t = J.get(o, n)) + ? t + : void 0 !== (t = ee(o, n)) + ? t + : void 0; + this.each(function () { + J.set(this, n, e); + }); + }, + null, + e, + 1 < arguments.length, + null, + !0 + ); + }, + removeData: function (e) { + return this.each(function () { + J.remove(this, e); + }); + }, + }), + k.extend({ + queue: function (e, t, n) { + var r; + if (e) + return ( + (t = (t || "fx") + "queue"), + (r = Q.get(e, t)), + n && + (!r || Array.isArray(n) + ? (r = Q.access(e, t, k.makeArray(n))) + : r.push(n)), + r || [] + ); + }, + dequeue: function (e, t) { + t = t || "fx"; + var n = k.queue(e, t), + r = n.length, + i = n.shift(), + o = k._queueHooks(e, t); + "inprogress" === i && ((i = n.shift()), r--), + i && + ("fx" === t && n.unshift("inprogress"), + delete o.stop, + i.call( + e, + function () { + k.dequeue(e, t); + }, + o + )), + !r && o && o.empty.fire(); + }, + _queueHooks: function (e, t) { + var n = t + "queueHooks"; + return ( + Q.get(e, n) || + Q.access(e, n, { + empty: k.Callbacks("once memory").add(function () { + Q.remove(e, [t + "queue", n]); + }), + }) + ); + }, + }), + k.fn.extend({ + queue: function (t, n) { + var e = 2; + return ( + "string" != typeof t && ((n = t), (t = "fx"), e--), + arguments.length < e + ? k.queue(this[0], t) + : void 0 === n + ? this + : this.each(function () { + var e = k.queue(this, t, n); + k._queueHooks(this, t), + "fx" === t && "inprogress" !== e[0] && k.dequeue(this, t); + }) + ); + }, + dequeue: function (e) { + return this.each(function () { + k.dequeue(this, e); + }); + }, + clearQueue: function (e) { + return this.queue(e || "fx", []); + }, + promise: function (e, t) { + var n, + r = 1, + i = k.Deferred(), + o = this, + a = this.length, + s = function () { + --r || i.resolveWith(o, [o]); + }; + "string" != typeof e && ((t = e), (e = void 0)), (e = e || "fx"); + while (a--) + (n = Q.get(o[a], e + "queueHooks")) && + n.empty && + (r++, n.empty.add(s)); + return s(), i.promise(t); + }, + }); + var te = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + ne = new RegExp("^(?:([+-])=|)(" + te + ")([a-z%]*)$", "i"), + re = ["Top", "Right", "Bottom", "Left"], + ie = E.documentElement, + oe = function (e) { + return k.contains(e.ownerDocument, e); + }, + ae = { composed: !0 }; + ie.getRootNode && + (oe = function (e) { + return ( + k.contains(e.ownerDocument, e) || e.getRootNode(ae) === e.ownerDocument + ); + }); + var se = function (e, t) { + return ( + "none" === (e = t || e).style.display || + ("" === e.style.display && oe(e) && "none" === k.css(e, "display")) + ); + }, + ue = function (e, t, n, r) { + var i, + o, + a = {}; + for (o in t) (a[o] = e.style[o]), (e.style[o] = t[o]); + for (o in ((i = n.apply(e, r || [])), t)) e.style[o] = a[o]; + return i; + }; + function le(e, t, n, r) { + var i, + o, + a = 20, + s = r + ? function () { + return r.cur(); + } + : function () { + return k.css(e, t, ""); + }, + u = s(), + l = (n && n[3]) || (k.cssNumber[t] ? "" : "px"), + c = + e.nodeType && + (k.cssNumber[t] || ("px" !== l && +u)) && + ne.exec(k.css(e, t)); + if (c && c[3] !== l) { + (u /= 2), (l = l || c[3]), (c = +u || 1); + while (a--) + k.style(e, t, c + l), + (1 - o) * (1 - (o = s() / u || 0.5)) <= 0 && (a = 0), + (c /= o); + (c *= 2), k.style(e, t, c + l), (n = n || []); + } + return ( + n && + ((c = +c || +u || 0), + (i = n[1] ? c + (n[1] + 1) * n[2] : +n[2]), + r && ((r.unit = l), (r.start = c), (r.end = i))), + i + ); + } + var ce = {}; + function fe(e, t) { + for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++) + (r = e[c]).style && + ((n = r.style.display), + t + ? ("none" === n && + ((l[c] = Q.get(r, "display") || null), + l[c] || (r.style.display = "")), + "" === r.style.display && + se(r) && + (l[c] = + ((u = a = o = void 0), + (a = (i = r).ownerDocument), + (s = i.nodeName), + (u = ce[s]) || + ((o = a.body.appendChild(a.createElement(s))), + (u = k.css(o, "display")), + o.parentNode.removeChild(o), + "none" === u && (u = "block"), + (ce[s] = u))))) + : "none" !== n && ((l[c] = "none"), Q.set(r, "display", n))); + for (c = 0; c < f; c++) null != l[c] && (e[c].style.display = l[c]); + return e; + } + k.fn.extend({ + show: function () { + return fe(this, !0); + }, + hide: function () { + return fe(this); + }, + toggle: function (e) { + return "boolean" == typeof e + ? e + ? this.show() + : this.hide() + : this.each(function () { + se(this) ? k(this).show() : k(this).hide(); + }); + }, + }); + var pe = /^(?:checkbox|radio)$/i, + de = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, + he = /^$|^module$|\/(?:java|ecma)script/i, + ge = { + option: [1, ""], + thead: [1, "", "
"], + col: [2, "", "
"], + tr: [2, "", "
"], + td: [3, "", "
"], + _default: [0, "", ""], + }; + function ve(e, t) { + var n; + return ( + (n = + "undefined" != typeof e.getElementsByTagName + ? e.getElementsByTagName(t || "*") + : "undefined" != typeof e.querySelectorAll + ? e.querySelectorAll(t || "*") + : []), + void 0 === t || (t && A(e, t)) ? k.merge([e], n) : n + ); + } + function ye(e, t) { + for (var n = 0, r = e.length; n < r; n++) + Q.set(e[n], "globalEval", !t || Q.get(t[n], "globalEval")); + } + (ge.optgroup = ge.option), + (ge.tbody = ge.tfoot = ge.colgroup = ge.caption = ge.thead), + (ge.th = ge.td); + var me, + xe, + be = /<|&#?\w+;/; + function we(e, t, n, r, i) { + for ( + var o, + a, + s, + u, + l, + c, + f = t.createDocumentFragment(), + p = [], + d = 0, + h = e.length; + d < h; + d++ + ) + if ((o = e[d]) || 0 === o) + if ("object" === w(o)) k.merge(p, o.nodeType ? [o] : o); + else if (be.test(o)) { + (a = a || f.appendChild(t.createElement("div"))), + (s = (de.exec(o) || ["", ""])[1].toLowerCase()), + (u = ge[s] || ge._default), + (a.innerHTML = u[1] + k.htmlPrefilter(o) + u[2]), + (c = u[0]); + while (c--) a = a.lastChild; + k.merge(p, a.childNodes), ((a = f.firstChild).textContent = ""); + } else p.push(t.createTextNode(o)); + (f.textContent = ""), (d = 0); + while ((o = p[d++])) + if (r && -1 < k.inArray(o, r)) i && i.push(o); + else if ( + ((l = oe(o)), (a = ve(f.appendChild(o), "script")), l && ye(a), n) + ) { + c = 0; + while ((o = a[c++])) he.test(o.type || "") && n.push(o); + } + return f; + } + (me = E.createDocumentFragment().appendChild(E.createElement("div"))), + (xe = E.createElement("input")).setAttribute("type", "radio"), + xe.setAttribute("checked", "checked"), + xe.setAttribute("name", "t"), + me.appendChild(xe), + (y.checkClone = me.cloneNode(!0).cloneNode(!0).lastChild.checked), + (me.innerHTML = ""), + (y.noCloneChecked = !!me.cloneNode(!0).lastChild.defaultValue); + var Te = /^key/, + Ce = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + Ee = /^([^.]*)(?:\.(.+)|)/; + function ke() { + return !0; + } + function Se() { + return !1; + } + function Ne(e, t) { + return ( + (e === + (function () { + try { + return E.activeElement; + } catch (e) {} + })()) == + ("focus" === t) + ); + } + function Ae(e, t, n, r, i, o) { + var a, s; + if ("object" == typeof t) { + for (s in ("string" != typeof n && ((r = r || n), (n = void 0)), t)) + Ae(e, s, n, r, t[s], o); + return e; + } + if ( + (null == r && null == i + ? ((i = n), (r = n = void 0)) + : null == i && + ("string" == typeof n + ? ((i = r), (r = void 0)) + : ((i = r), (r = n), (n = void 0))), + !1 === i) + ) + i = Se; + else if (!i) return e; + return ( + 1 === o && + ((a = i), + ((i = function (e) { + return k().off(e), a.apply(this, arguments); + }).guid = a.guid || (a.guid = k.guid++))), + e.each(function () { + k.event.add(this, t, i, r, n); + }) + ); + } + function De(e, i, o) { + o + ? (Q.set(e, i, !1), + k.event.add(e, i, { + namespace: !1, + handler: function (e) { + var t, + n, + r = Q.get(this, i); + if (1 & e.isTrigger && this[i]) { + if (r.length) + (k.event.special[i] || {}).delegateType && e.stopPropagation(); + else if ( + ((r = s.call(arguments)), + Q.set(this, i, r), + (t = o(this, i)), + this[i](), + r !== (n = Q.get(this, i)) || t ? Q.set(this, i, !1) : (n = {}), + r !== n) + ) + return ( + e.stopImmediatePropagation(), e.preventDefault(), n.value + ); + } else + r.length && + (Q.set(this, i, { + value: k.event.trigger( + k.extend(r[0], k.Event.prototype), + r.slice(1), + this + ), + }), + e.stopImmediatePropagation()); + }, + })) + : void 0 === Q.get(e, i) && k.event.add(e, i, ke); + } + (k.event = { + global: {}, + add: function (t, e, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = Q.get(t); + if (v) { + n.handler && ((n = (o = n).handler), (i = o.selector)), + i && k.find.matchesSelector(ie, i), + n.guid || (n.guid = k.guid++), + (u = v.events) || (u = v.events = {}), + (a = v.handle) || + (a = v.handle = + function (e) { + return "undefined" != typeof k && k.event.triggered !== e.type + ? k.event.dispatch.apply(t, arguments) + : void 0; + }), + (l = (e = (e || "").match(R) || [""]).length); + while (l--) + (d = g = (s = Ee.exec(e[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d && + ((f = k.event.special[d] || {}), + (d = (i ? f.delegateType : f.bindType) || d), + (f = k.event.special[d] || {}), + (c = k.extend( + { + type: d, + origType: g, + data: r, + handler: n, + guid: n.guid, + selector: i, + needsContext: i && k.expr.match.needsContext.test(i), + namespace: h.join("."), + }, + o + )), + (p = u[d]) || + (((p = u[d] = []).delegateCount = 0), + (f.setup && !1 !== f.setup.call(t, r, h, a)) || + (t.addEventListener && t.addEventListener(d, a))), + f.add && + (f.add.call(t, c), c.handler.guid || (c.handler.guid = n.guid)), + i ? p.splice(p.delegateCount++, 0, c) : p.push(c), + (k.event.global[d] = !0)); + } + }, + remove: function (e, t, n, r, i) { + var o, + a, + s, + u, + l, + c, + f, + p, + d, + h, + g, + v = Q.hasData(e) && Q.get(e); + if (v && (u = v.events)) { + l = (t = (t || "").match(R) || [""]).length; + while (l--) + if ( + ((d = g = (s = Ee.exec(t[l]) || [])[1]), + (h = (s[2] || "").split(".").sort()), + d) + ) { + (f = k.event.special[d] || {}), + (p = u[(d = (r ? f.delegateType : f.bindType) || d)] || []), + (s = + s[2] && + new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)")), + (a = o = p.length); + while (o--) + (c = p[o]), + (!i && g !== c.origType) || + (n && n.guid !== c.guid) || + (s && !s.test(c.namespace)) || + (r && r !== c.selector && ("**" !== r || !c.selector)) || + (p.splice(o, 1), + c.selector && p.delegateCount--, + f.remove && f.remove.call(e, c)); + a && + !p.length && + ((f.teardown && !1 !== f.teardown.call(e, h, v.handle)) || + k.removeEvent(e, d, v.handle), + delete u[d]); + } else for (d in u) k.event.remove(e, d + t[l], n, r, !0); + k.isEmptyObject(u) && Q.remove(e, "handle events"); + } + }, + dispatch: function (e) { + var t, + n, + r, + i, + o, + a, + s = k.event.fix(e), + u = new Array(arguments.length), + l = (Q.get(this, "events") || {})[s.type] || [], + c = k.event.special[s.type] || {}; + for (u[0] = s, t = 1; t < arguments.length; t++) u[t] = arguments[t]; + if ( + ((s.delegateTarget = this), + !c.preDispatch || !1 !== c.preDispatch.call(this, s)) + ) { + (a = k.event.handlers.call(this, s, l)), (t = 0); + while ((i = a[t++]) && !s.isPropagationStopped()) { + (s.currentTarget = i.elem), (n = 0); + while ((o = i.handlers[n++]) && !s.isImmediatePropagationStopped()) + (s.rnamespace && + !1 !== o.namespace && + !s.rnamespace.test(o.namespace)) || + ((s.handleObj = o), + (s.data = o.data), + void 0 !== + (r = ( + (k.event.special[o.origType] || {}).handle || o.handler + ).apply(i.elem, u)) && + !1 === (s.result = r) && + (s.preventDefault(), s.stopPropagation())); + } + return c.postDispatch && c.postDispatch.call(this, s), s.result; + } + }, + handlers: function (e, t) { + var n, + r, + i, + o, + a, + s = [], + u = t.delegateCount, + l = e.target; + if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) + for (; l !== this; l = l.parentNode || this) + if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { + for (o = [], a = {}, n = 0; n < u; n++) + void 0 === a[(i = (r = t[n]).selector + " ")] && + (a[i] = r.needsContext + ? -1 < k(i, this).index(l) + : k.find(i, this, null, [l]).length), + a[i] && o.push(r); + o.length && s.push({ elem: l, handlers: o }); + } + return ( + (l = this), u < t.length && s.push({ elem: l, handlers: t.slice(u) }), s + ); + }, + addProp: function (t, e) { + Object.defineProperty(k.Event.prototype, t, { + enumerable: !0, + configurable: !0, + get: m(e) + ? function () { + if (this.originalEvent) return e(this.originalEvent); + } + : function () { + if (this.originalEvent) return this.originalEvent[t]; + }, + set: function (e) { + Object.defineProperty(this, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: e, + }); + }, + }); + }, + fix: function (e) { + return e[k.expando] ? e : new k.Event(e); + }, + special: { + load: { noBubble: !0 }, + click: { + setup: function (e) { + var t = this || e; + return ( + pe.test(t.type) && t.click && A(t, "input") && De(t, "click", ke), + !1 + ); + }, + trigger: function (e) { + var t = this || e; + return ( + pe.test(t.type) && t.click && A(t, "input") && De(t, "click"), !0 + ); + }, + _default: function (e) { + var t = e.target; + return ( + (pe.test(t.type) && + t.click && + A(t, "input") && + Q.get(t, "click")) || + A(t, "a") + ); + }, + }, + beforeunload: { + postDispatch: function (e) { + void 0 !== e.result && + e.originalEvent && + (e.originalEvent.returnValue = e.result); + }, + }, + }, + }), + (k.removeEvent = function (e, t, n) { + e.removeEventListener && e.removeEventListener(t, n); + }), + (k.Event = function (e, t) { + if (!(this instanceof k.Event)) return new k.Event(e, t); + e && e.type + ? ((this.originalEvent = e), + (this.type = e.type), + (this.isDefaultPrevented = + e.defaultPrevented || + (void 0 === e.defaultPrevented && !1 === e.returnValue) + ? ke + : Se), + (this.target = + e.target && 3 === e.target.nodeType + ? e.target.parentNode + : e.target), + (this.currentTarget = e.currentTarget), + (this.relatedTarget = e.relatedTarget)) + : (this.type = e), + t && k.extend(this, t), + (this.timeStamp = (e && e.timeStamp) || Date.now()), + (this[k.expando] = !0); + }), + (k.Event.prototype = { + constructor: k.Event, + isDefaultPrevented: Se, + isPropagationStopped: Se, + isImmediatePropagationStopped: Se, + isSimulated: !1, + preventDefault: function () { + var e = this.originalEvent; + (this.isDefaultPrevented = ke), + e && !this.isSimulated && e.preventDefault(); + }, + stopPropagation: function () { + var e = this.originalEvent; + (this.isPropagationStopped = ke), + e && !this.isSimulated && e.stopPropagation(); + }, + stopImmediatePropagation: function () { + var e = this.originalEvent; + (this.isImmediatePropagationStopped = ke), + e && !this.isSimulated && e.stopImmediatePropagation(), + this.stopPropagation(); + }, + }), + k.each( + { + altKey: !0, + bubbles: !0, + cancelable: !0, + changedTouches: !0, + ctrlKey: !0, + detail: !0, + eventPhase: !0, + metaKey: !0, + pageX: !0, + pageY: !0, + shiftKey: !0, + view: !0, + char: !0, + code: !0, + charCode: !0, + key: !0, + keyCode: !0, + button: !0, + buttons: !0, + clientX: !0, + clientY: !0, + offsetX: !0, + offsetY: !0, + pointerId: !0, + pointerType: !0, + screenX: !0, + screenY: !0, + targetTouches: !0, + toElement: !0, + touches: !0, + which: function (e) { + var t = e.button; + return null == e.which && Te.test(e.type) + ? null != e.charCode + ? e.charCode + : e.keyCode + : !e.which && void 0 !== t && Ce.test(e.type) + ? 1 & t + ? 1 + : 2 & t + ? 3 + : 4 & t + ? 2 + : 0 + : e.which; + }, + }, + k.event.addProp + ), + k.each({ focus: "focusin", blur: "focusout" }, function (e, t) { + k.event.special[e] = { + setup: function () { + return De(this, e, Ne), !1; + }, + trigger: function () { + return De(this, e), !0; + }, + delegateType: t, + }; + }), + k.each( + { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout", + }, + function (e, i) { + k.event.special[e] = { + delegateType: i, + bindType: i, + handle: function (e) { + var t, + n = e.relatedTarget, + r = e.handleObj; + return ( + (n && (n === this || k.contains(this, n))) || + ((e.type = r.origType), + (t = r.handler.apply(this, arguments)), + (e.type = i)), + t + ); + }, + }; + } + ), + k.fn.extend({ + on: function (e, t, n, r) { + return Ae(this, e, t, n, r); + }, + one: function (e, t, n, r) { + return Ae(this, e, t, n, r, 1); + }, + off: function (e, t, n) { + var r, i; + if (e && e.preventDefault && e.handleObj) + return ( + (r = e.handleObj), + k(e.delegateTarget).off( + r.namespace ? r.origType + "." + r.namespace : r.origType, + r.selector, + r.handler + ), + this + ); + if ("object" == typeof e) { + for (i in e) this.off(i, t, e[i]); + return this; + } + return ( + (!1 !== t && "function" != typeof t) || ((n = t), (t = void 0)), + !1 === n && (n = Se), + this.each(function () { + k.event.remove(this, e, n, t); + }) + ); + }, + }); + var je = + /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + qe = /\s*$/g; + function Oe(e, t) { + return ( + (A(e, "table") && + A(11 !== t.nodeType ? t : t.firstChild, "tr") && + k(e).children("tbody")[0]) || + e + ); + } + function Pe(e) { + return (e.type = (null !== e.getAttribute("type")) + "/" + e.type), e; + } + function Re(e) { + return ( + "true/" === (e.type || "").slice(0, 5) + ? (e.type = e.type.slice(5)) + : e.removeAttribute("type"), + e + ); + } + function Me(e, t) { + var n, r, i, o, a, s, u, l; + if (1 === t.nodeType) { + if ( + Q.hasData(e) && + ((o = Q.access(e)), (a = Q.set(t, o)), (l = o.events)) + ) + for (i in (delete a.handle, (a.events = {}), l)) + for (n = 0, r = l[i].length; n < r; n++) k.event.add(t, i, l[i][n]); + J.hasData(e) && ((s = J.access(e)), (u = k.extend({}, s)), J.set(t, u)); + } + } + function Ie(n, r, i, o) { + r = g.apply([], r); + var e, + t, + a, + s, + u, + l, + c = 0, + f = n.length, + p = f - 1, + d = r[0], + h = m(d); + if (h || (1 < f && "string" == typeof d && !y.checkClone && Le.test(d))) + return n.each(function (e) { + var t = n.eq(e); + h && (r[0] = d.call(this, e, t.html())), Ie(t, r, i, o); + }); + if ( + f && + ((t = (e = we(r, n[0].ownerDocument, !1, n, o)).firstChild), + 1 === e.childNodes.length && (e = t), + t || o) + ) { + for (s = (a = k.map(ve(e, "script"), Pe)).length; c < f; c++) + (u = e), + c !== p && + ((u = k.clone(u, !0, !0)), s && k.merge(a, ve(u, "script"))), + i.call(n[c], u, c); + if (s) + for (l = a[a.length - 1].ownerDocument, k.map(a, Re), c = 0; c < s; c++) + (u = a[c]), + he.test(u.type || "") && + !Q.access(u, "globalEval") && + k.contains(l, u) && + (u.src && "module" !== (u.type || "").toLowerCase() + ? k._evalUrl && + !u.noModule && + k._evalUrl(u.src, { + nonce: u.nonce || u.getAttribute("nonce"), + }) + : b(u.textContent.replace(He, ""), u, l)); + } + return n; + } + function We(e, t, n) { + for (var r, i = t ? k.filter(t, e) : e, o = 0; null != (r = i[o]); o++) + n || 1 !== r.nodeType || k.cleanData(ve(r)), + r.parentNode && + (n && oe(r) && ye(ve(r, "script")), r.parentNode.removeChild(r)); + return e; + } + k.extend({ + htmlPrefilter: function (e) { + return e.replace(je, "<$1>"); + }, + clone: function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c = e.cloneNode(!0), + f = oe(e); + if ( + !( + y.noCloneChecked || + (1 !== e.nodeType && 11 !== e.nodeType) || + k.isXMLDoc(e) + ) + ) + for (a = ve(c), r = 0, i = (o = ve(e)).length; r < i; r++) + (s = o[r]), + (u = a[r]), + void 0, + "input" === (l = u.nodeName.toLowerCase()) && pe.test(s.type) + ? (u.checked = s.checked) + : ("input" !== l && "textarea" !== l) || + (u.defaultValue = s.defaultValue); + if (t) + if (n) + for (o = o || ve(e), a = a || ve(c), r = 0, i = o.length; r < i; r++) + Me(o[r], a[r]); + else Me(e, c); + return ( + 0 < (a = ve(c, "script")).length && ye(a, !f && ve(e, "script")), c + ); + }, + cleanData: function (e) { + for (var t, n, r, i = k.event.special, o = 0; void 0 !== (n = e[o]); o++) + if (G(n)) { + if ((t = n[Q.expando])) { + if (t.events) + for (r in t.events) + i[r] ? k.event.remove(n, r) : k.removeEvent(n, r, t.handle); + n[Q.expando] = void 0; + } + n[J.expando] && (n[J.expando] = void 0); + } + }, + }), + k.fn.extend({ + detach: function (e) { + return We(this, e, !0); + }, + remove: function (e) { + return We(this, e); + }, + text: function (e) { + return _( + this, + function (e) { + return void 0 === e + ? k.text(this) + : this.empty().each(function () { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + (this.textContent = e); + }); + }, + null, + e, + arguments.length + ); + }, + append: function () { + return Ie(this, arguments, function (e) { + (1 !== this.nodeType && + 11 !== this.nodeType && + 9 !== this.nodeType) || + Oe(this, e).appendChild(e); + }); + }, + prepend: function () { + return Ie(this, arguments, function (e) { + if ( + 1 === this.nodeType || + 11 === this.nodeType || + 9 === this.nodeType + ) { + var t = Oe(this, e); + t.insertBefore(e, t.firstChild); + } + }); + }, + before: function () { + return Ie(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this); + }); + }, + after: function () { + return Ie(this, arguments, function (e) { + this.parentNode && this.parentNode.insertBefore(e, this.nextSibling); + }); + }, + empty: function () { + for (var e, t = 0; null != (e = this[t]); t++) + 1 === e.nodeType && (k.cleanData(ve(e, !1)), (e.textContent = "")); + return this; + }, + clone: function (e, t) { + return ( + (e = null != e && e), + (t = null == t ? e : t), + this.map(function () { + return k.clone(this, e, t); + }) + ); + }, + html: function (e) { + return _( + this, + function (e) { + var t = this[0] || {}, + n = 0, + r = this.length; + if (void 0 === e && 1 === t.nodeType) return t.innerHTML; + if ( + "string" == typeof e && + !qe.test(e) && + !ge[(de.exec(e) || ["", ""])[1].toLowerCase()] + ) { + e = k.htmlPrefilter(e); + try { + for (; n < r; n++) + 1 === (t = this[n] || {}).nodeType && + (k.cleanData(ve(t, !1)), (t.innerHTML = e)); + t = 0; + } catch (e) {} + } + t && this.empty().append(e); + }, + null, + e, + arguments.length + ); + }, + replaceWith: function () { + var n = []; + return Ie( + this, + arguments, + function (e) { + var t = this.parentNode; + k.inArray(this, n) < 0 && + (k.cleanData(ve(this)), t && t.replaceChild(e, this)); + }, + n + ); + }, + }), + k.each( + { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith", + }, + function (e, a) { + k.fn[e] = function (e) { + for (var t, n = [], r = k(e), i = r.length - 1, o = 0; o <= i; o++) + (t = o === i ? this : this.clone(!0)), + k(r[o])[a](t), + u.apply(n, t.get()); + return this.pushStack(n); + }; + } + ); + var $e = new RegExp("^(" + te + ")(?!px)[a-z%]+$", "i"), + Fe = function (e) { + var t = e.ownerDocument.defaultView; + return (t && t.opener) || (t = C), t.getComputedStyle(e); + }, + Be = new RegExp(re.join("|"), "i"); + function _e(e, t, n) { + var r, + i, + o, + a, + s = e.style; + return ( + (n = n || Fe(e)) && + ("" !== (a = n.getPropertyValue(t) || n[t]) || + oe(e) || + (a = k.style(e, t)), + !y.pixelBoxStyles() && + $e.test(a) && + Be.test(t) && + ((r = s.width), + (i = s.minWidth), + (o = s.maxWidth), + (s.minWidth = s.maxWidth = s.width = a), + (a = n.width), + (s.width = r), + (s.minWidth = i), + (s.maxWidth = o))), + void 0 !== a ? a + "" : a + ); + } + function ze(e, t) { + return { + get: function () { + if (!e()) return (this.get = t).apply(this, arguments); + delete this.get; + }, + }; + } + !(function () { + function e() { + if (u) { + (s.style.cssText = + "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"), + (u.style.cssText = + "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"), + ie.appendChild(s).appendChild(u); + var e = C.getComputedStyle(u); + (n = "1%" !== e.top), + (a = 12 === t(e.marginLeft)), + (u.style.right = "60%"), + (o = 36 === t(e.right)), + (r = 36 === t(e.width)), + (u.style.position = "absolute"), + (i = 12 === t(u.offsetWidth / 3)), + ie.removeChild(s), + (u = null); + } + } + function t(e) { + return Math.round(parseFloat(e)); + } + var n, + r, + i, + o, + a, + s = E.createElement("div"), + u = E.createElement("div"); + u.style && + ((u.style.backgroundClip = "content-box"), + (u.cloneNode(!0).style.backgroundClip = ""), + (y.clearCloneStyle = "content-box" === u.style.backgroundClip), + k.extend(y, { + boxSizingReliable: function () { + return e(), r; + }, + pixelBoxStyles: function () { + return e(), o; + }, + pixelPosition: function () { + return e(), n; + }, + reliableMarginLeft: function () { + return e(), a; + }, + scrollboxSize: function () { + return e(), i; + }, + })); + })(); + var Ue = ["Webkit", "Moz", "ms"], + Xe = E.createElement("div").style, + Ve = {}; + function Ge(e) { + var t = k.cssProps[e] || Ve[e]; + return ( + t || + (e in Xe + ? e + : (Ve[e] = + (function (e) { + var t = e[0].toUpperCase() + e.slice(1), + n = Ue.length; + while (n--) if ((e = Ue[n] + t) in Xe) return e; + })(e) || e)) + ); + } + var Ye = /^(none|table(?!-c[ea]).+)/, + Qe = /^--/, + Je = { position: "absolute", visibility: "hidden", display: "block" }, + Ke = { letterSpacing: "0", fontWeight: "400" }; + function Ze(e, t, n) { + var r = ne.exec(t); + return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t; + } + function et(e, t, n, r, i, o) { + var a = "width" === t ? 1 : 0, + s = 0, + u = 0; + if (n === (r ? "border" : "content")) return 0; + for (; a < 4; a += 2) + "margin" === n && (u += k.css(e, n + re[a], !0, i)), + r + ? ("content" === n && (u -= k.css(e, "padding" + re[a], !0, i)), + "margin" !== n && + (u -= k.css(e, "border" + re[a] + "Width", !0, i))) + : ((u += k.css(e, "padding" + re[a], !0, i)), + "padding" !== n + ? (u += k.css(e, "border" + re[a] + "Width", !0, i)) + : (s += k.css(e, "border" + re[a] + "Width", !0, i))); + return ( + !r && + 0 <= o && + (u += + Math.max( + 0, + Math.ceil( + e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - 0.5 + ) + ) || 0), + u + ); + } + function tt(e, t, n) { + var r = Fe(e), + i = + (!y.boxSizingReliable() || n) && + "border-box" === k.css(e, "boxSizing", !1, r), + o = i, + a = _e(e, t, r), + s = "offset" + t[0].toUpperCase() + t.slice(1); + if ($e.test(a)) { + if (!n) return a; + a = "auto"; + } + return ( + ((!y.boxSizingReliable() && i) || + "auto" === a || + (!parseFloat(a) && "inline" === k.css(e, "display", !1, r))) && + e.getClientRects().length && + ((i = "border-box" === k.css(e, "boxSizing", !1, r)), + (o = s in e) && (a = e[s])), + (a = parseFloat(a) || 0) + + et(e, t, n || (i ? "border" : "content"), o, r, a) + + "px" + ); + } + function nt(e, t, n, r, i) { + return new nt.prototype.init(e, t, n, r, i); + } + k.extend({ + cssHooks: { + opacity: { + get: function (e, t) { + if (t) { + var n = _e(e, "opacity"); + return "" === n ? "1" : n; + } + }, + }, + }, + cssNumber: { + animationIterationCount: !0, + columnCount: !0, + fillOpacity: !0, + flexGrow: !0, + flexShrink: !0, + fontWeight: !0, + gridArea: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnStart: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowStart: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + widows: !0, + zIndex: !0, + zoom: !0, + }, + cssProps: {}, + style: function (e, t, n, r) { + if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { + var i, + o, + a, + s = V(t), + u = Qe.test(t), + l = e.style; + if ( + (u || (t = Ge(s)), (a = k.cssHooks[t] || k.cssHooks[s]), void 0 === n) + ) + return a && "get" in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; + "string" === (o = typeof n) && + (i = ne.exec(n)) && + i[1] && + ((n = le(e, t, i)), (o = "number")), + null != n && + n == n && + ("number" !== o || + u || + (n += (i && i[3]) || (k.cssNumber[s] ? "" : "px")), + y.clearCloneStyle || + "" !== n || + 0 !== t.indexOf("background") || + (l[t] = "inherit"), + (a && "set" in a && void 0 === (n = a.set(e, n, r))) || + (u ? l.setProperty(t, n) : (l[t] = n))); + } + }, + css: function (e, t, n, r) { + var i, + o, + a, + s = V(t); + return ( + Qe.test(t) || (t = Ge(s)), + (a = k.cssHooks[t] || k.cssHooks[s]) && + "get" in a && + (i = a.get(e, !0, n)), + void 0 === i && (i = _e(e, t, r)), + "normal" === i && t in Ke && (i = Ke[t]), + "" === n || n + ? ((o = parseFloat(i)), !0 === n || isFinite(o) ? o || 0 : i) + : i + ); + }, + }), + k.each(["height", "width"], function (e, u) { + k.cssHooks[u] = { + get: function (e, t, n) { + if (t) + return !Ye.test(k.css(e, "display")) || + (e.getClientRects().length && e.getBoundingClientRect().width) + ? tt(e, u, n) + : ue(e, Je, function () { + return tt(e, u, n); + }); + }, + set: function (e, t, n) { + var r, + i = Fe(e), + o = !y.scrollboxSize() && "absolute" === i.position, + a = (o || n) && "border-box" === k.css(e, "boxSizing", !1, i), + s = n ? et(e, u, n, a, i) : 0; + return ( + a && + o && + (s -= Math.ceil( + e["offset" + u[0].toUpperCase() + u.slice(1)] - + parseFloat(i[u]) - + et(e, u, "border", !1, i) - + 0.5 + )), + s && + (r = ne.exec(t)) && + "px" !== (r[3] || "px") && + ((e.style[u] = t), (t = k.css(e, u))), + Ze(0, t, s) + ); + }, + }; + }), + (k.cssHooks.marginLeft = ze(y.reliableMarginLeft, function (e, t) { + if (t) + return ( + (parseFloat(_e(e, "marginLeft")) || + e.getBoundingClientRect().left - + ue(e, { marginLeft: 0 }, function () { + return e.getBoundingClientRect().left; + })) + "px" + ); + })), + k.each({ margin: "", padding: "", border: "Width" }, function (i, o) { + (k.cssHooks[i + o] = { + expand: function (e) { + for ( + var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; + t < 4; + t++ + ) + n[i + re[t] + o] = r[t] || r[t - 2] || r[0]; + return n; + }, + }), + "margin" !== i && (k.cssHooks[i + o].set = Ze); + }), + k.fn.extend({ + css: function (e, t) { + return _( + this, + function (e, t, n) { + var r, + i, + o = {}, + a = 0; + if (Array.isArray(t)) { + for (r = Fe(e), i = t.length; a < i; a++) + o[t[a]] = k.css(e, t[a], !1, r); + return o; + } + return void 0 !== n ? k.style(e, t, n) : k.css(e, t); + }, + e, + t, + 1 < arguments.length + ); + }, + }), + (((k.Tween = nt).prototype = { + constructor: nt, + init: function (e, t, n, r, i, o) { + (this.elem = e), + (this.prop = n), + (this.easing = i || k.easing._default), + (this.options = t), + (this.start = this.now = this.cur()), + (this.end = r), + (this.unit = o || (k.cssNumber[n] ? "" : "px")); + }, + cur: function () { + var e = nt.propHooks[this.prop]; + return e && e.get ? e.get(this) : nt.propHooks._default.get(this); + }, + run: function (e) { + var t, + n = nt.propHooks[this.prop]; + return ( + this.options.duration + ? (this.pos = t = + k.easing[this.easing]( + e, + this.options.duration * e, + 0, + 1, + this.options.duration + )) + : (this.pos = t = e), + (this.now = (this.end - this.start) * t + this.start), + this.options.step && + this.options.step.call(this.elem, this.now, this), + n && n.set ? n.set(this) : nt.propHooks._default.set(this), + this + ); + }, + }).init.prototype = nt.prototype), + ((nt.propHooks = { + _default: { + get: function (e) { + var t; + return 1 !== e.elem.nodeType || + (null != e.elem[e.prop] && null == e.elem.style[e.prop]) + ? e.elem[e.prop] + : (t = k.css(e.elem, e.prop, "")) && "auto" !== t + ? t + : 0; + }, + set: function (e) { + k.fx.step[e.prop] + ? k.fx.step[e.prop](e) + : 1 !== e.elem.nodeType || + (!k.cssHooks[e.prop] && null == e.elem.style[Ge(e.prop)]) + ? (e.elem[e.prop] = e.now) + : k.style(e.elem, e.prop, e.now + e.unit); + }, + }, + }).scrollTop = nt.propHooks.scrollLeft = + { + set: function (e) { + e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now); + }, + }), + (k.easing = { + linear: function (e) { + return e; + }, + swing: function (e) { + return 0.5 - Math.cos(e * Math.PI) / 2; + }, + _default: "swing", + }), + (k.fx = nt.prototype.init), + (k.fx.step = {}); + var rt, + it, + ot, + at, + st = /^(?:toggle|show|hide)$/, + ut = /queueHooks$/; + function lt() { + it && + (!1 === E.hidden && C.requestAnimationFrame + ? C.requestAnimationFrame(lt) + : C.setTimeout(lt, k.fx.interval), + k.fx.tick()); + } + function ct() { + return ( + C.setTimeout(function () { + rt = void 0; + }), + (rt = Date.now()) + ); + } + function ft(e, t) { + var n, + r = 0, + i = { height: e }; + for (t = t ? 1 : 0; r < 4; r += 2 - t) + i["margin" + (n = re[r])] = i["padding" + n] = e; + return t && (i.opacity = i.width = e), i; + } + function pt(e, t, n) { + for ( + var r, + i = (dt.tweeners[t] || []).concat(dt.tweeners["*"]), + o = 0, + a = i.length; + o < a; + o++ + ) + if ((r = i[o].call(n, t, e))) return r; + } + function dt(o, e, t) { + var n, + a, + r = 0, + i = dt.prefilters.length, + s = k.Deferred().always(function () { + delete u.elem; + }), + u = function () { + if (a) return !1; + for ( + var e = rt || ct(), + t = Math.max(0, l.startTime + l.duration - e), + n = 1 - (t / l.duration || 0), + r = 0, + i = l.tweens.length; + r < i; + r++ + ) + l.tweens[r].run(n); + return ( + s.notifyWith(o, [l, n, t]), + n < 1 && i + ? t + : (i || s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l]), !1) + ); + }, + l = s.promise({ + elem: o, + props: k.extend({}, e), + opts: k.extend(!0, { specialEasing: {}, easing: k.easing._default }, t), + originalProperties: e, + originalOptions: t, + startTime: rt || ct(), + duration: t.duration, + tweens: [], + createTween: function (e, t) { + var n = k.Tween( + o, + l.opts, + e, + t, + l.opts.specialEasing[e] || l.opts.easing + ); + return l.tweens.push(n), n; + }, + stop: function (e) { + var t = 0, + n = e ? l.tweens.length : 0; + if (a) return this; + for (a = !0; t < n; t++) l.tweens[t].run(1); + return ( + e + ? (s.notifyWith(o, [l, 1, 0]), s.resolveWith(o, [l, e])) + : s.rejectWith(o, [l, e]), + this + ); + }, + }), + c = l.props; + for ( + !(function (e, t) { + var n, r, i, o, a; + for (n in e) + if ( + ((i = t[(r = V(n))]), + (o = e[n]), + Array.isArray(o) && ((i = o[1]), (o = e[n] = o[0])), + n !== r && ((e[r] = o), delete e[n]), + (a = k.cssHooks[r]) && ("expand" in a)) + ) + for (n in ((o = a.expand(o)), delete e[r], o)) + (n in e) || ((e[n] = o[n]), (t[n] = i)); + else t[r] = i; + })(c, l.opts.specialEasing); + r < i; + r++ + ) + if ((n = dt.prefilters[r].call(l, o, c, l.opts))) + return ( + m(n.stop) && + (k._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), + n + ); + return ( + k.map(c, pt, l), + m(l.opts.start) && l.opts.start.call(o, l), + l + .progress(l.opts.progress) + .done(l.opts.done, l.opts.complete) + .fail(l.opts.fail) + .always(l.opts.always), + k.fx.timer(k.extend(u, { elem: o, anim: l, queue: l.opts.queue })), + l + ); + } + (k.Animation = k.extend(dt, { + tweeners: { + "*": [ + function (e, t) { + var n = this.createTween(e, t); + return le(n.elem, e, ne.exec(t), n), n; + }, + ], + }, + tweener: function (e, t) { + m(e) ? ((t = e), (e = ["*"])) : (e = e.match(R)); + for (var n, r = 0, i = e.length; r < i; r++) + (n = e[r]), + (dt.tweeners[n] = dt.tweeners[n] || []), + dt.tweeners[n].unshift(t); + }, + prefilters: [ + function (e, t, n) { + var r, + i, + o, + a, + s, + u, + l, + c, + f = "width" in t || "height" in t, + p = this, + d = {}, + h = e.style, + g = e.nodeType && se(e), + v = Q.get(e, "fxshow"); + for (r in (n.queue || + (null == (a = k._queueHooks(e, "fx")).unqueued && + ((a.unqueued = 0), + (s = a.empty.fire), + (a.empty.fire = function () { + a.unqueued || s(); + })), + a.unqueued++, + p.always(function () { + p.always(function () { + a.unqueued--, k.queue(e, "fx").length || a.empty.fire(); + }); + })), + t)) + if (((i = t[r]), st.test(i))) { + if ( + (delete t[r], + (o = o || "toggle" === i), + i === (g ? "hide" : "show")) + ) { + if ("show" !== i || !v || void 0 === v[r]) continue; + g = !0; + } + d[r] = (v && v[r]) || k.style(e, r); + } + if ((u = !k.isEmptyObject(t)) || !k.isEmptyObject(d)) + for (r in (f && + 1 === e.nodeType && + ((n.overflow = [h.overflow, h.overflowX, h.overflowY]), + null == (l = v && v.display) && (l = Q.get(e, "display")), + "none" === (c = k.css(e, "display")) && + (l + ? (c = l) + : (fe([e], !0), + (l = e.style.display || l), + (c = k.css(e, "display")), + fe([e]))), + ("inline" === c || ("inline-block" === c && null != l)) && + "none" === k.css(e, "float") && + (u || + (p.done(function () { + h.display = l; + }), + null == l && ((c = h.display), (l = "none" === c ? "" : c))), + (h.display = "inline-block"))), + n.overflow && + ((h.overflow = "hidden"), + p.always(function () { + (h.overflow = n.overflow[0]), + (h.overflowX = n.overflow[1]), + (h.overflowY = n.overflow[2]); + })), + (u = !1), + d)) + u || + (v + ? "hidden" in v && (g = v.hidden) + : (v = Q.access(e, "fxshow", { display: l })), + o && (v.hidden = !g), + g && fe([e], !0), + p.done(function () { + for (r in (g || fe([e]), Q.remove(e, "fxshow"), d)) + k.style(e, r, d[r]); + })), + (u = pt(g ? v[r] : 0, r, p)), + r in v || + ((v[r] = u.start), g && ((u.end = u.start), (u.start = 0))); + }, + ], + prefilter: function (e, t) { + t ? dt.prefilters.unshift(e) : dt.prefilters.push(e); + }, + })), + (k.speed = function (e, t, n) { + var r = + e && "object" == typeof e + ? k.extend({}, e) + : { + complete: n || (!n && t) || (m(e) && e), + duration: e, + easing: (n && t) || (t && !m(t) && t), + }; + return ( + k.fx.off + ? (r.duration = 0) + : "number" != typeof r.duration && + (r.duration in k.fx.speeds + ? (r.duration = k.fx.speeds[r.duration]) + : (r.duration = k.fx.speeds._default)), + (null != r.queue && !0 !== r.queue) || (r.queue = "fx"), + (r.old = r.complete), + (r.complete = function () { + m(r.old) && r.old.call(this), r.queue && k.dequeue(this, r.queue); + }), + r + ); + }), + k.fn.extend({ + fadeTo: function (e, t, n, r) { + return this.filter(se) + .css("opacity", 0) + .show() + .end() + .animate({ opacity: t }, e, n, r); + }, + animate: function (t, e, n, r) { + var i = k.isEmptyObject(t), + o = k.speed(e, n, r), + a = function () { + var e = dt(this, k.extend({}, t), o); + (i || Q.get(this, "finish")) && e.stop(!0); + }; + return ( + (a.finish = a), + i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) + ); + }, + stop: function (i, e, o) { + var a = function (e) { + var t = e.stop; + delete e.stop, t(o); + }; + return ( + "string" != typeof i && ((o = e), (e = i), (i = void 0)), + e && !1 !== i && this.queue(i || "fx", []), + this.each(function () { + var e = !0, + t = null != i && i + "queueHooks", + n = k.timers, + r = Q.get(this); + if (t) r[t] && r[t].stop && a(r[t]); + else for (t in r) r[t] && r[t].stop && ut.test(t) && a(r[t]); + for (t = n.length; t--; ) + n[t].elem !== this || + (null != i && n[t].queue !== i) || + (n[t].anim.stop(o), (e = !1), n.splice(t, 1)); + (!e && o) || k.dequeue(this, i); + }) + ); + }, + finish: function (a) { + return ( + !1 !== a && (a = a || "fx"), + this.each(function () { + var e, + t = Q.get(this), + n = t[a + "queue"], + r = t[a + "queueHooks"], + i = k.timers, + o = n ? n.length : 0; + for ( + t.finish = !0, + k.queue(this, a, []), + r && r.stop && r.stop.call(this, !0), + e = i.length; + e--; + + ) + i[e].elem === this && + i[e].queue === a && + (i[e].anim.stop(!0), i.splice(e, 1)); + for (e = 0; e < o; e++) + n[e] && n[e].finish && n[e].finish.call(this); + delete t.finish; + }) + ); + }, + }), + k.each(["toggle", "show", "hide"], function (e, r) { + var i = k.fn[r]; + k.fn[r] = function (e, t, n) { + return null == e || "boolean" == typeof e + ? i.apply(this, arguments) + : this.animate(ft(r, !0), e, t, n); + }; + }), + k.each( + { + slideDown: ft("show"), + slideUp: ft("hide"), + slideToggle: ft("toggle"), + fadeIn: { opacity: "show" }, + fadeOut: { opacity: "hide" }, + fadeToggle: { opacity: "toggle" }, + }, + function (e, r) { + k.fn[e] = function (e, t, n) { + return this.animate(r, e, t, n); + }; + } + ), + (k.timers = []), + (k.fx.tick = function () { + var e, + t = 0, + n = k.timers; + for (rt = Date.now(); t < n.length; t++) + (e = n[t])() || n[t] !== e || n.splice(t--, 1); + n.length || k.fx.stop(), (rt = void 0); + }), + (k.fx.timer = function (e) { + k.timers.push(e), k.fx.start(); + }), + (k.fx.interval = 13), + (k.fx.start = function () { + it || ((it = !0), lt()); + }), + (k.fx.stop = function () { + it = null; + }), + (k.fx.speeds = { slow: 600, fast: 200, _default: 400 }), + (k.fn.delay = function (r, e) { + return ( + (r = (k.fx && k.fx.speeds[r]) || r), + (e = e || "fx"), + this.queue(e, function (e, t) { + var n = C.setTimeout(e, r); + t.stop = function () { + C.clearTimeout(n); + }; + }) + ); + }), + (ot = E.createElement("input")), + (at = E.createElement("select").appendChild(E.createElement("option"))), + (ot.type = "checkbox"), + (y.checkOn = "" !== ot.value), + (y.optSelected = at.selected), + ((ot = E.createElement("input")).value = "t"), + (ot.type = "radio"), + (y.radioValue = "t" === ot.value); + var ht, + gt = k.expr.attrHandle; + k.fn.extend({ + attr: function (e, t) { + return _(this, k.attr, e, t, 1 < arguments.length); + }, + removeAttr: function (e) { + return this.each(function () { + k.removeAttr(this, e); + }); + }, + }), + k.extend({ + attr: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return "undefined" == typeof e.getAttribute + ? k.prop(e, t, n) + : ((1 === o && k.isXMLDoc(e)) || + (i = + k.attrHooks[t.toLowerCase()] || + (k.expr.match.bool.test(t) ? ht : void 0)), + void 0 !== n + ? null === n + ? void k.removeAttr(e, t) + : i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e.setAttribute(t, n + ""), n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : null == (r = k.find.attr(e, t)) + ? void 0 + : r); + }, + attrHooks: { + type: { + set: function (e, t) { + if (!y.radioValue && "radio" === t && A(e, "input")) { + var n = e.value; + return e.setAttribute("type", t), n && (e.value = n), t; + } + }, + }, + }, + removeAttr: function (e, t) { + var n, + r = 0, + i = t && t.match(R); + if (i && 1 === e.nodeType) while ((n = i[r++])) e.removeAttribute(n); + }, + }), + (ht = { + set: function (e, t, n) { + return !1 === t ? k.removeAttr(e, n) : e.setAttribute(n, n), n; + }, + }), + k.each(k.expr.match.bool.source.match(/\w+/g), function (e, t) { + var a = gt[t] || k.find.attr; + gt[t] = function (e, t, n) { + var r, + i, + o = t.toLowerCase(); + return ( + n || + ((i = gt[o]), + (gt[o] = r), + (r = null != a(e, t, n) ? o : null), + (gt[o] = i)), + r + ); + }; + }); + var vt = /^(?:input|select|textarea|button)$/i, + yt = /^(?:a|area)$/i; + function mt(e) { + return (e.match(R) || []).join(" "); + } + function xt(e) { + return (e.getAttribute && e.getAttribute("class")) || ""; + } + function bt(e) { + return Array.isArray(e) ? e : ("string" == typeof e && e.match(R)) || []; + } + k.fn.extend({ + prop: function (e, t) { + return _(this, k.prop, e, t, 1 < arguments.length); + }, + removeProp: function (e) { + return this.each(function () { + delete this[k.propFix[e] || e]; + }); + }, + }), + k.extend({ + prop: function (e, t, n) { + var r, + i, + o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return ( + (1 === o && k.isXMLDoc(e)) || + ((t = k.propFix[t] || t), (i = k.propHooks[t])), + void 0 !== n + ? i && "set" in i && void 0 !== (r = i.set(e, n, t)) + ? r + : (e[t] = n) + : i && "get" in i && null !== (r = i.get(e, t)) + ? r + : e[t] + ); + }, + propHooks: { + tabIndex: { + get: function (e) { + var t = k.find.attr(e, "tabindex"); + return t + ? parseInt(t, 10) + : vt.test(e.nodeName) || (yt.test(e.nodeName) && e.href) + ? 0 + : -1; + }, + }, + }, + propFix: { for: "htmlFor", class: "className" }, + }), + y.optSelected || + (k.propHooks.selected = { + get: function (e) { + var t = e.parentNode; + return t && t.parentNode && t.parentNode.selectedIndex, null; + }, + set: function (e) { + var t = e.parentNode; + t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex); + }, + }), + k.each( + [ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable", + ], + function () { + k.propFix[this.toLowerCase()] = this; + } + ), + k.fn.extend({ + addClass: function (t) { + var e, + n, + r, + i, + o, + a, + s, + u = 0; + if (m(t)) + return this.each(function (e) { + k(this).addClass(t.call(this, e, xt(this))); + }); + if ((e = bt(t)).length) + while ((n = this[u++])) + if (((i = xt(n)), (r = 1 === n.nodeType && " " + mt(i) + " "))) { + a = 0; + while ((o = e[a++])) + r.indexOf(" " + o + " ") < 0 && (r += o + " "); + i !== (s = mt(r)) && n.setAttribute("class", s); + } + return this; + }, + removeClass: function (t) { + var e, + n, + r, + i, + o, + a, + s, + u = 0; + if (m(t)) + return this.each(function (e) { + k(this).removeClass(t.call(this, e, xt(this))); + }); + if (!arguments.length) return this.attr("class", ""); + if ((e = bt(t)).length) + while ((n = this[u++])) + if (((i = xt(n)), (r = 1 === n.nodeType && " " + mt(i) + " "))) { + a = 0; + while ((o = e[a++])) + while (-1 < r.indexOf(" " + o + " ")) + r = r.replace(" " + o + " ", " "); + i !== (s = mt(r)) && n.setAttribute("class", s); + } + return this; + }, + toggleClass: function (i, t) { + var o = typeof i, + a = "string" === o || Array.isArray(i); + return "boolean" == typeof t && a + ? t + ? this.addClass(i) + : this.removeClass(i) + : m(i) + ? this.each(function (e) { + k(this).toggleClass(i.call(this, e, xt(this), t), t); + }) + : this.each(function () { + var e, t, n, r; + if (a) { + (t = 0), (n = k(this)), (r = bt(i)); + while ((e = r[t++])) + n.hasClass(e) ? n.removeClass(e) : n.addClass(e); + } else (void 0 !== i && "boolean" !== o) || ((e = xt(this)) && Q.set(this, "__className__", e), this.setAttribute && this.setAttribute("class", e || !1 === i ? "" : Q.get(this, "__className__") || "")); + }); + }, + hasClass: function (e) { + var t, + n, + r = 0; + t = " " + e + " "; + while ((n = this[r++])) + if (1 === n.nodeType && -1 < (" " + mt(xt(n)) + " ").indexOf(t)) + return !0; + return !1; + }, + }); + var wt = /\r/g; + k.fn.extend({ + val: function (n) { + var r, + e, + i, + t = this[0]; + return arguments.length + ? ((i = m(n)), + this.each(function (e) { + var t; + 1 === this.nodeType && + (null == (t = i ? n.call(this, e, k(this).val()) : n) + ? (t = "") + : "number" == typeof t + ? (t += "") + : Array.isArray(t) && + (t = k.map(t, function (e) { + return null == e ? "" : e + ""; + })), + ((r = + k.valHooks[this.type] || + k.valHooks[this.nodeName.toLowerCase()]) && + "set" in r && + void 0 !== r.set(this, t, "value")) || + (this.value = t)); + })) + : t + ? (r = k.valHooks[t.type] || k.valHooks[t.nodeName.toLowerCase()]) && + "get" in r && + void 0 !== (e = r.get(t, "value")) + ? e + : "string" == typeof (e = t.value) + ? e.replace(wt, "") + : null == e + ? "" + : e + : void 0; + }, + }), + k.extend({ + valHooks: { + option: { + get: function (e) { + var t = k.find.attr(e, "value"); + return null != t ? t : mt(k.text(e)); + }, + }, + select: { + get: function (e) { + var t, + n, + r, + i = e.options, + o = e.selectedIndex, + a = "select-one" === e.type, + s = a ? null : [], + u = a ? o + 1 : i.length; + for (r = o < 0 ? u : a ? o : 0; r < u; r++) + if ( + ((n = i[r]).selected || r === o) && + !n.disabled && + (!n.parentNode.disabled || !A(n.parentNode, "optgroup")) + ) { + if (((t = k(n).val()), a)) return t; + s.push(t); + } + return s; + }, + set: function (e, t) { + var n, + r, + i = e.options, + o = k.makeArray(t), + a = i.length; + while (a--) + ((r = i[a]).selected = + -1 < k.inArray(k.valHooks.option.get(r), o)) && (n = !0); + return n || (e.selectedIndex = -1), o; + }, + }, + }, + }), + k.each(["radio", "checkbox"], function () { + (k.valHooks[this] = { + set: function (e, t) { + if (Array.isArray(t)) + return (e.checked = -1 < k.inArray(k(e).val(), t)); + }, + }), + y.checkOn || + (k.valHooks[this].get = function (e) { + return null === e.getAttribute("value") ? "on" : e.value; + }); + }), + (y.focusin = "onfocusin" in C); + var Tt = /^(?:focusinfocus|focusoutblur)$/, + Ct = function (e) { + e.stopPropagation(); + }; + k.extend(k.event, { + trigger: function (e, t, n, r) { + var i, + o, + a, + s, + u, + l, + c, + f, + p = [n || E], + d = v.call(e, "type") ? e.type : e, + h = v.call(e, "namespace") ? e.namespace.split(".") : []; + if ( + ((o = f = a = n = n || E), + 3 !== n.nodeType && + 8 !== n.nodeType && + !Tt.test(d + k.event.triggered) && + (-1 < d.indexOf(".") && ((d = (h = d.split(".")).shift()), h.sort()), + (u = d.indexOf(":") < 0 && "on" + d), + ((e = e[k.expando] + ? e + : new k.Event(d, "object" == typeof e && e)).isTrigger = r ? 2 : 3), + (e.namespace = h.join(".")), + (e.rnamespace = e.namespace + ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") + : null), + (e.result = void 0), + e.target || (e.target = n), + (t = null == t ? [e] : k.makeArray(t, [e])), + (c = k.event.special[d] || {}), + r || !c.trigger || !1 !== c.trigger.apply(n, t))) + ) { + if (!r && !c.noBubble && !x(n)) { + for ( + s = c.delegateType || d, Tt.test(s + d) || (o = o.parentNode); + o; + o = o.parentNode + ) + p.push(o), (a = o); + a === (n.ownerDocument || E) && + p.push(a.defaultView || a.parentWindow || C); + } + i = 0; + while ((o = p[i++]) && !e.isPropagationStopped()) + (f = o), + (e.type = 1 < i ? s : c.bindType || d), + (l = (Q.get(o, "events") || {})[e.type] && Q.get(o, "handle")) && + l.apply(o, t), + (l = u && o[u]) && + l.apply && + G(o) && + ((e.result = l.apply(o, t)), + !1 === e.result && e.preventDefault()); + return ( + (e.type = d), + r || + e.isDefaultPrevented() || + (c._default && !1 !== c._default.apply(p.pop(), t)) || + !G(n) || + (u && + m(n[d]) && + !x(n) && + ((a = n[u]) && (n[u] = null), + (k.event.triggered = d), + e.isPropagationStopped() && f.addEventListener(d, Ct), + n[d](), + e.isPropagationStopped() && f.removeEventListener(d, Ct), + (k.event.triggered = void 0), + a && (n[u] = a))), + e.result + ); + } + }, + simulate: function (e, t, n) { + var r = k.extend(new k.Event(), n, { type: e, isSimulated: !0 }); + k.event.trigger(r, null, t); + }, + }), + k.fn.extend({ + trigger: function (e, t) { + return this.each(function () { + k.event.trigger(e, t, this); + }); + }, + triggerHandler: function (e, t) { + var n = this[0]; + if (n) return k.event.trigger(e, t, n, !0); + }, + }), + y.focusin || + k.each({ focus: "focusin", blur: "focusout" }, function (n, r) { + var i = function (e) { + k.event.simulate(r, e.target, k.event.fix(e)); + }; + k.event.special[r] = { + setup: function () { + var e = this.ownerDocument || this, + t = Q.access(e, r); + t || e.addEventListener(n, i, !0), Q.access(e, r, (t || 0) + 1); + }, + teardown: function () { + var e = this.ownerDocument || this, + t = Q.access(e, r) - 1; + t + ? Q.access(e, r, t) + : (e.removeEventListener(n, i, !0), Q.remove(e, r)); + }, + }; + }); + var Et = C.location, + kt = Date.now(), + St = /\?/; + k.parseXML = function (e) { + var t; + if (!e || "string" != typeof e) return null; + try { + t = new C.DOMParser().parseFromString(e, "text/xml"); + } catch (e) { + t = void 0; + } + return ( + (t && !t.getElementsByTagName("parsererror").length) || + k.error("Invalid XML: " + e), + t + ); + }; + var Nt = /\[\]$/, + At = /\r?\n/g, + Dt = /^(?:submit|button|image|reset|file)$/i, + jt = /^(?:input|select|textarea|keygen)/i; + function qt(n, e, r, i) { + var t; + if (Array.isArray(e)) + k.each(e, function (e, t) { + r || Nt.test(n) + ? i(n, t) + : qt( + n + "[" + ("object" == typeof t && null != t ? e : "") + "]", + t, + r, + i + ); + }); + else if (r || "object" !== w(e)) i(n, e); + else for (t in e) qt(n + "[" + t + "]", e[t], r, i); + } + (k.param = function (e, t) { + var n, + r = [], + i = function (e, t) { + var n = m(t) ? t() : t; + r[r.length] = + encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n); + }; + if (null == e) return ""; + if (Array.isArray(e) || (e.jquery && !k.isPlainObject(e))) + k.each(e, function () { + i(this.name, this.value); + }); + else for (n in e) qt(n, e[n], t, i); + return r.join("&"); + }), + k.fn.extend({ + serialize: function () { + return k.param(this.serializeArray()); + }, + serializeArray: function () { + return this.map(function () { + var e = k.prop(this, "elements"); + return e ? k.makeArray(e) : this; + }) + .filter(function () { + var e = this.type; + return ( + this.name && + !k(this).is(":disabled") && + jt.test(this.nodeName) && + !Dt.test(e) && + (this.checked || !pe.test(e)) + ); + }) + .map(function (e, t) { + var n = k(this).val(); + return null == n + ? null + : Array.isArray(n) + ? k.map(n, function (e) { + return { name: t.name, value: e.replace(At, "\r\n") }; + }) + : { name: t.name, value: n.replace(At, "\r\n") }; + }) + .get(); + }, + }); + var Lt = /%20/g, + Ht = /#.*$/, + Ot = /([?&])_=[^&]*/, + Pt = /^(.*?):[ \t]*([^\r\n]*)$/gm, + Rt = /^(?:GET|HEAD)$/, + Mt = /^\/\//, + It = {}, + Wt = {}, + $t = "*/".concat("*"), + Ft = E.createElement("a"); + function Bt(o) { + return function (e, t) { + "string" != typeof e && ((t = e), (e = "*")); + var n, + r = 0, + i = e.toLowerCase().match(R) || []; + if (m(t)) + while ((n = i[r++])) + "+" === n[0] + ? ((n = n.slice(1) || "*"), (o[n] = o[n] || []).unshift(t)) + : (o[n] = o[n] || []).push(t); + }; + } + function _t(t, i, o, a) { + var s = {}, + u = t === Wt; + function l(e) { + var r; + return ( + (s[e] = !0), + k.each(t[e] || [], function (e, t) { + var n = t(i, o, a); + return "string" != typeof n || u || s[n] + ? u + ? !(r = n) + : void 0 + : (i.dataTypes.unshift(n), l(n), !1); + }), + r + ); + } + return l(i.dataTypes[0]) || (!s["*"] && l("*")); + } + function zt(e, t) { + var n, + r, + i = k.ajaxSettings.flatOptions || {}; + for (n in t) void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); + return r && k.extend(!0, e, r), e; + } + (Ft.href = Et.href), + k.extend({ + active: 0, + lastModified: {}, + etag: {}, + ajaxSettings: { + url: Et.href, + type: "GET", + isLocal: + /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test( + Et.protocol + ), + global: !0, + processData: !0, + async: !0, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + accepts: { + "*": $t, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript", + }, + contents: { xml: /\bxml\b/, html: /\bhtml/, json: /\bjson\b/ }, + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON", + }, + converters: { + "* text": String, + "text html": !0, + "text json": JSON.parse, + "text xml": k.parseXML, + }, + flatOptions: { url: !0, context: !0 }, + }, + ajaxSetup: function (e, t) { + return t ? zt(zt(e, k.ajaxSettings), t) : zt(k.ajaxSettings, e); + }, + ajaxPrefilter: Bt(It), + ajaxTransport: Bt(Wt), + ajax: function (e, t) { + "object" == typeof e && ((t = e), (e = void 0)), (t = t || {}); + var c, + f, + p, + n, + d, + r, + h, + g, + i, + o, + v = k.ajaxSetup({}, t), + y = v.context || v, + m = v.context && (y.nodeType || y.jquery) ? k(y) : k.event, + x = k.Deferred(), + b = k.Callbacks("once memory"), + w = v.statusCode || {}, + a = {}, + s = {}, + u = "canceled", + T = { + readyState: 0, + getResponseHeader: function (e) { + var t; + if (h) { + if (!n) { + n = {}; + while ((t = Pt.exec(p))) + n[t[1].toLowerCase() + " "] = ( + n[t[1].toLowerCase() + " "] || [] + ).concat(t[2]); + } + t = n[e.toLowerCase() + " "]; + } + return null == t ? null : t.join(", "); + }, + getAllResponseHeaders: function () { + return h ? p : null; + }, + setRequestHeader: function (e, t) { + return ( + null == h && + ((e = s[e.toLowerCase()] = s[e.toLowerCase()] || e), + (a[e] = t)), + this + ); + }, + overrideMimeType: function (e) { + return null == h && (v.mimeType = e), this; + }, + statusCode: function (e) { + var t; + if (e) + if (h) T.always(e[T.status]); + else for (t in e) w[t] = [w[t], e[t]]; + return this; + }, + abort: function (e) { + var t = e || u; + return c && c.abort(t), l(0, t), this; + }, + }; + if ( + (x.promise(T), + (v.url = ((e || v.url || Et.href) + "").replace( + Mt, + Et.protocol + "//" + )), + (v.type = t.method || t.type || v.method || v.type), + (v.dataTypes = (v.dataType || "*").toLowerCase().match(R) || [""]), + null == v.crossDomain) + ) { + r = E.createElement("a"); + try { + (r.href = v.url), + (r.href = r.href), + (v.crossDomain = + Ft.protocol + "//" + Ft.host != r.protocol + "//" + r.host); + } catch (e) { + v.crossDomain = !0; + } + } + if ( + (v.data && + v.processData && + "string" != typeof v.data && + (v.data = k.param(v.data, v.traditional)), + _t(It, v, t, T), + h) + ) + return T; + for (i in ((g = k.event && v.global) && + 0 == k.active++ && + k.event.trigger("ajaxStart"), + (v.type = v.type.toUpperCase()), + (v.hasContent = !Rt.test(v.type)), + (f = v.url.replace(Ht, "")), + v.hasContent + ? v.data && + v.processData && + 0 === + (v.contentType || "").indexOf( + "application/x-www-form-urlencoded" + ) && + (v.data = v.data.replace(Lt, "+")) + : ((o = v.url.slice(f.length)), + v.data && + (v.processData || "string" == typeof v.data) && + ((f += (St.test(f) ? "&" : "?") + v.data), delete v.data), + !1 === v.cache && + ((f = f.replace(Ot, "$1")), + (o = (St.test(f) ? "&" : "?") + "_=" + kt++ + o)), + (v.url = f + o)), + v.ifModified && + (k.lastModified[f] && + T.setRequestHeader("If-Modified-Since", k.lastModified[f]), + k.etag[f] && T.setRequestHeader("If-None-Match", k.etag[f])), + ((v.data && v.hasContent && !1 !== v.contentType) || t.contentType) && + T.setRequestHeader("Content-Type", v.contentType), + T.setRequestHeader( + "Accept", + v.dataTypes[0] && v.accepts[v.dataTypes[0]] + ? v.accepts[v.dataTypes[0]] + + ("*" !== v.dataTypes[0] ? ", " + $t + "; q=0.01" : "") + : v.accepts["*"] + ), + v.headers)) + T.setRequestHeader(i, v.headers[i]); + if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) + return T.abort(); + if ( + ((u = "abort"), + b.add(v.complete), + T.done(v.success), + T.fail(v.error), + (c = _t(Wt, v, t, T))) + ) { + if (((T.readyState = 1), g && m.trigger("ajaxSend", [T, v]), h)) + return T; + v.async && + 0 < v.timeout && + (d = C.setTimeout(function () { + T.abort("timeout"); + }, v.timeout)); + try { + (h = !1), c.send(a, l); + } catch (e) { + if (h) throw e; + l(-1, e); + } + } else l(-1, "No Transport"); + function l(e, t, n, r) { + var i, + o, + a, + s, + u, + l = t; + h || + ((h = !0), + d && C.clearTimeout(d), + (c = void 0), + (p = r || ""), + (T.readyState = 0 < e ? 4 : 0), + (i = (200 <= e && e < 300) || 304 === e), + n && + (s = (function (e, t, n) { + var r, + i, + o, + a, + s = e.contents, + u = e.dataTypes; + while ("*" === u[0]) + u.shift(), + void 0 === r && + (r = e.mimeType || t.getResponseHeader("Content-Type")); + if (r) + for (i in s) + if (s[i] && s[i].test(r)) { + u.unshift(i); + break; + } + if (u[0] in n) o = u[0]; + else { + for (i in n) { + if (!u[0] || e.converters[i + " " + u[0]]) { + o = i; + break; + } + a || (a = i); + } + o = o || a; + } + if (o) return o !== u[0] && u.unshift(o), n[o]; + })(v, T, n)), + (s = (function (e, t, n, r) { + var i, + o, + a, + s, + u, + l = {}, + c = e.dataTypes.slice(); + if (c[1]) + for (a in e.converters) l[a.toLowerCase()] = e.converters[a]; + o = c.shift(); + while (o) + if ( + (e.responseFields[o] && (n[e.responseFields[o]] = t), + !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), + (u = o), + (o = c.shift())) + ) + if ("*" === o) o = u; + else if ("*" !== u && u !== o) { + if (!(a = l[u + " " + o] || l["* " + o])) + for (i in l) + if ( + (s = i.split(" "))[1] === o && + (a = l[u + " " + s[0]] || l["* " + s[0]]) + ) { + !0 === a + ? (a = l[i]) + : !0 !== l[i] && ((o = s[0]), c.unshift(s[1])); + break; + } + if (!0 !== a) + if (a && e["throws"]) t = a(t); + else + try { + t = a(t); + } catch (e) { + return { + state: "parsererror", + error: a + ? e + : "No conversion from " + u + " to " + o, + }; + } + } + return { state: "success", data: t }; + })(v, s, T, i)), + i + ? (v.ifModified && + ((u = T.getResponseHeader("Last-Modified")) && + (k.lastModified[f] = u), + (u = T.getResponseHeader("etag")) && (k.etag[f] = u)), + 204 === e || "HEAD" === v.type + ? (l = "nocontent") + : 304 === e + ? (l = "notmodified") + : ((l = s.state), (o = s.data), (i = !(a = s.error)))) + : ((a = l), (!e && l) || ((l = "error"), e < 0 && (e = 0))), + (T.status = e), + (T.statusText = (t || l) + ""), + i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), + T.statusCode(w), + (w = void 0), + g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), + b.fireWith(y, [T, l]), + g && + (m.trigger("ajaxComplete", [T, v]), + --k.active || k.event.trigger("ajaxStop"))); + } + return T; + }, + getJSON: function (e, t, n) { + return k.get(e, t, n, "json"); + }, + getScript: function (e, t) { + return k.get(e, void 0, t, "script"); + }, + }), + k.each(["get", "post"], function (e, i) { + k[i] = function (e, t, n, r) { + return ( + m(t) && ((r = r || n), (n = t), (t = void 0)), + k.ajax( + k.extend( + { url: e, type: i, dataType: r, data: t, success: n }, + k.isPlainObject(e) && e + ) + ) + ); + }; + }), + (k._evalUrl = function (e, t) { + return k.ajax({ + url: e, + type: "GET", + dataType: "script", + cache: !0, + async: !1, + global: !1, + converters: { "text script": function () {} }, + dataFilter: function (e) { + k.globalEval(e, t); + }, + }); + }), + k.fn.extend({ + wrapAll: function (e) { + var t; + return ( + this[0] && + (m(e) && (e = e.call(this[0])), + (t = k(e, this[0].ownerDocument).eq(0).clone(!0)), + this[0].parentNode && t.insertBefore(this[0]), + t + .map(function () { + var e = this; + while (e.firstElementChild) e = e.firstElementChild; + return e; + }) + .append(this)), + this + ); + }, + wrapInner: function (n) { + return m(n) + ? this.each(function (e) { + k(this).wrapInner(n.call(this, e)); + }) + : this.each(function () { + var e = k(this), + t = e.contents(); + t.length ? t.wrapAll(n) : e.append(n); + }); + }, + wrap: function (t) { + var n = m(t); + return this.each(function (e) { + k(this).wrapAll(n ? t.call(this, e) : t); + }); + }, + unwrap: function (e) { + return ( + this.parent(e) + .not("body") + .each(function () { + k(this).replaceWith(this.childNodes); + }), + this + ); + }, + }), + (k.expr.pseudos.hidden = function (e) { + return !k.expr.pseudos.visible(e); + }), + (k.expr.pseudos.visible = function (e) { + return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length); + }), + (k.ajaxSettings.xhr = function () { + try { + return new C.XMLHttpRequest(); + } catch (e) {} + }); + var Ut = { 0: 200, 1223: 204 }, + Xt = k.ajaxSettings.xhr(); + (y.cors = !!Xt && "withCredentials" in Xt), + (y.ajax = Xt = !!Xt), + k.ajaxTransport(function (i) { + var o, a; + if (y.cors || (Xt && !i.crossDomain)) + return { + send: function (e, t) { + var n, + r = i.xhr(); + if ( + (r.open(i.type, i.url, i.async, i.username, i.password), + i.xhrFields) + ) + for (n in i.xhrFields) r[n] = i.xhrFields[n]; + for (n in (i.mimeType && + r.overrideMimeType && + r.overrideMimeType(i.mimeType), + i.crossDomain || + e["X-Requested-With"] || + (e["X-Requested-With"] = "XMLHttpRequest"), + e)) + r.setRequestHeader(n, e[n]); + (o = function (e) { + return function () { + o && + ((o = + a = + r.onload = + r.onerror = + r.onabort = + r.ontimeout = + r.onreadystatechange = + null), + "abort" === e + ? r.abort() + : "error" === e + ? "number" != typeof r.status + ? t(0, "error") + : t(r.status, r.statusText) + : t( + Ut[r.status] || r.status, + r.statusText, + "text" !== (r.responseType || "text") || + "string" != typeof r.responseText + ? { binary: r.response } + : { text: r.responseText }, + r.getAllResponseHeaders() + )); + }; + }), + (r.onload = o()), + (a = r.onerror = r.ontimeout = o("error")), + void 0 !== r.onabort + ? (r.onabort = a) + : (r.onreadystatechange = function () { + 4 === r.readyState && + C.setTimeout(function () { + o && a(); + }); + }), + (o = o("abort")); + try { + r.send((i.hasContent && i.data) || null); + } catch (e) { + if (o) throw e; + } + }, + abort: function () { + o && o(); + }, + }; + }), + k.ajaxPrefilter(function (e) { + e.crossDomain && (e.contents.script = !1); + }), + k.ajaxSetup({ + accepts: { + script: + "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript", + }, + contents: { script: /\b(?:java|ecma)script\b/ }, + converters: { + "text script": function (e) { + return k.globalEval(e), e; + }, + }, + }), + k.ajaxPrefilter("script", function (e) { + void 0 === e.cache && (e.cache = !1), e.crossDomain && (e.type = "GET"); + }), + k.ajaxTransport("script", function (n) { + var r, i; + if (n.crossDomain || n.scriptAttrs) + return { + send: function (e, t) { + (r = k(" + + - + - - - - - - - - + + + + + + + + - - - - - - - - - - - - + + + +
- -
-

16. Appendix

-
-

16.1. Interactive Mode

-
-

16.1.1. Error Handling

-

When an error occurs, the interpreter prints an error message and a stack trace. -In interactive mode, it then returns to the primary prompt; when input came from -a file, it exits with a nonzero exit status after printing the stack trace. -(Exceptions handled by an except clause in a try statement -are not errors in this context.) Some errors are unconditionally fatal and -cause an exit with a nonzero exit; this applies to internal inconsistencies and -some cases of running out of memory. All error messages are written to the -standard error stream; normal output from executed commands is written to -standard output.

-

Typing the interrupt character (usually Control-C or Delete) to the primary or -secondary prompt cancels the input and returns to the primary prompt. 1 -Typing an interrupt while a command is executing raises the -KeyboardInterrupt exception, which may be handled by a try -statement.

-
-
-

16.1.2. Executable Python Scripts

-

On BSD’ish Unix systems, Python scripts can be made directly executable, like -shell scripts, by putting the line

-
#!/usr/bin/env python3.5
-
-
-

(assuming that the interpreter is on the user’s PATH) at the beginning -of the script and giving the file an executable mode. The #! must be the -first two characters of the file. On some platforms, this first line must end -with a Unix-style line ending ('\n'), not a Windows ('\r\n') line -ending. Note that the hash, or pound, character, '#', is used to start a -comment in Python.

-

The script can be given an executable mode, or permission, using the -chmod command.

-
$ chmod +x myscript.py
-
-
-

On Windows systems, there is no notion of an “executable mode”. The Python -installer automatically associates .py files with python.exe so that -a double-click on a Python file will run it as a script. The extension can -also be .pyw, in that case, the console window that normally appears is -suppressed.

-
-
-

16.1.3. The Interactive Startup File

-

When you use Python interactively, it is frequently handy to have some standard -commands executed every time the interpreter is started. You can do this by -setting an environment variable named PYTHONSTARTUP to the name of a -file containing your start-up commands. This is similar to the .profile -feature of the Unix shells.

-

This file is only read in interactive sessions, not when Python reads commands -from a script, and not when /dev/tty is given as the explicit source of -commands (which otherwise behaves like an interactive session). It is executed -in the same namespace where interactive commands are executed, so that objects -that it defines or imports can be used without qualification in the interactive -session. You can also change the prompts sys.ps1 and sys.ps2 in this -file.

-

If you want to read an additional start-up file from the current directory, you -can program this in the global start-up file using code like if -os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()). -If you want to use the startup file in a script, you must do this explicitly -in the script:

-
import os
+            
+ +

+ 16. Appendix +

+
+ +

+ 16.1. Interactive Mode +

+
+ +

+ 16.1.1. Error Handling +

+

+ When an error occurs, the interpreter prints an error + message and a stack trace. In interactive mode, it then + returns to the primary prompt; when input came from a file, + it exits with a nonzero exit status after printing the stack + trace. (Exceptions handled by an + except + clause in a + try + statement are not errors in this context.) Some errors are + unconditionally fatal and cause an exit with a nonzero exit; + this applies to internal inconsistencies and some cases of + running out of memory. All error messages are written to the + standard error stream; normal output from executed commands + is written to standard output. +

+

+ Typing the interrupt character (usually + Control-C + or + Delete) + to the primary or secondary prompt cancels the input and + returns to the primary prompt. + 1 + Typing an interrupt while a command is executing raises the + KeyboardInterrupt + exception, which may be handled by a + try + statement. +

+
+
+ +

+ 16.1.2. Executable + Python Scripts +

+

+ On BSD’ish Unix systems, Python scripts can be made directly + executable, like shell scripts, by putting the line +

+
+
+
#!/usr/bin/env python3.5
+
+
+
+

+ (assuming that the interpreter is on the user’s + PATH) at the beginning of the script and giving the file an + executable mode. The + #! + must be the first two characters of the file. On some + platforms, this first line must end with a Unix-style line + ending ('\n'), not a Windows ('\r\n') line ending. Note that the hash, or pound, character, + '#', is used to start a comment in Python. +

+

+ The script can be given an executable mode, or permission, + using the chmod command. +

+
+
+
$ chmod +x myscript.py
+
+
+
+

+ On Windows systems, there is no notion of an “executable + mode”. The Python installer automatically associates + .py + files with + python.exe + so that a double-click on a Python file will run it as a + script. The extension can also be + .pyw, in that case, the console window that normally appears is + suppressed. +

+
+
+ +

+ 16.1.3. The Interactive + Startup File +

+

+ When you use Python interactively, it is frequently handy to + have some standard commands executed every time the + interpreter is started. You can do this by setting an + environment variable named + PYTHONSTARTUP + to the name of a file containing your start-up commands. + This is similar to the + .profile + feature of the Unix shells. +

+

+ This file is only read in interactive sessions, not when + Python reads commands from a script, and not when + /dev/tty + is given as the explicit source of commands (which otherwise + behaves like an interactive session). It is executed in the + same namespace where interactive commands are executed, so + that objects that it defines or imports can be used without + qualification in the interactive session. You can also + change the prompts + sys.ps1 + and + sys.ps2 + in this file. +

+

+ If you want to read an additional start-up file from the + current directory, you can program this in the global + start-up file using code like + if + os.path.isfile('.pythonrc.py'): + exec(open('.pythonrc.py').read()). If you want to use the startup file in a script, you must + do this explicitly in the script: +

+
+
+
import os
 filename = os.environ.get('PYTHONSTARTUP')
 if filename and os.path.isfile(filename):
     with open(filename) as fobj:
         startup_file = fobj.read()
     exec(startup_file)
-
-
-
-
-

16.1.4. The Customization Modules

-

Python provides two hooks to let you customize it: sitecustomize and -usercustomize. To see how it works, you need first to find the location -of your user site-packages directory. Start Python and run this code:

-
>>> import site
+
+
+
+
+
+ +

+ 16.1.4. The + Customization Modules +

+

+ Python provides two hooks to let you customize it: + sitecustomize + and + usercustomize. To see how it works, you need first to find the location + of your user site-packages directory. Start Python and run + this code: +

+
+
+
>>> import site
 >>> site.getusersitepackages()
 '/home/user/.local/lib/python3.5/site-packages'
-
-
-

Now you can create a file named usercustomize.py in that directory and -put anything you want in it. It will affect every invocation of Python, unless -it is started with the -s option to disable the automatic import.

-

sitecustomize works in the same way, but is typically created by an -administrator of the computer in the global site-packages directory, and is -imported before usercustomize. See the documentation of the site -module for more details.

-

Footnotes

-
-
1
-

A problem with the GNU Readline package may prevent this.

-
-
-
-
-
- - +
+
+
+

+ Now you can create a file named + usercustomize.py + in that directory and put anything you want in it. It will + affect every invocation of Python, unless it is started with + the + -s + option to disable the automatic import. +

+

+ sitecustomize + works in the same way, but is typically created by an + administrator of the computer in the global site-packages + directory, and is imported before + usercustomize. See the documentation of the + site + module for more details. +

+

Footnotes

+
+
+ 1 +
+
+

+ A problem with the GNU Readline package may prevent + this. +

+
+
+
+
+
-
+ + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/appetite.html b/DOCS/tutorial/appetite.html index 20a2bc72..c30e8364 100644 --- a/DOCS/tutorial/appetite.html +++ b/DOCS/tutorial/appetite.html @@ -1,263 +1,395 @@ - - - - + + 1. Whetting Your Appetite — Python 3.9.5 documentation - - + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - + + + +
- -
-

1. Whetting Your Appetite

-

If you do much work on computers, eventually you find that there’s some task -you’d like to automate. For example, you may wish to perform a -search-and-replace over a large number of text files, or rename and rearrange a -bunch of photo files in a complicated way. Perhaps you’d like to write a small -custom database, or a specialized GUI application, or a simple game.

-

If you’re a professional software developer, you may have to work with several -C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is -too slow. Perhaps you’re writing a test suite for such a library and find -writing the testing code a tedious task. Or maybe you’ve written a program that -could use an extension language, and you don’t want to design and implement a -whole new language for your application.

-

Python is just the language for you.

-

You could write a Unix shell script or Windows batch files for some of these -tasks, but shell scripts are best at moving around files and changing text data, -not well-suited for GUI applications or games. You could write a C/C++/Java -program, but it can take a lot of development time to get even a first-draft -program. Python is simpler to use, available on Windows, Mac OS X, and Unix -operating systems, and will help you get the job done more quickly.

-

Python is simple to use, but it is a real programming language, offering much -more structure and support for large programs than shell scripts or batch files -can offer. On the other hand, Python also offers much more error checking than -C, and, being a very-high-level language, it has high-level data types built -in, such as flexible arrays and dictionaries. Because of its more general data -types Python is applicable to a much larger problem domain than Awk or even -Perl, yet many things are at least as easy in Python as in those languages.

-

Python allows you to split your program into modules that can be reused in other -Python programs. It comes with a large collection of standard modules that you -can use as the basis of your programs — or as examples to start learning to -program in Python. Some of these modules provide things like file I/O, system -calls, sockets, and even interfaces to graphical user interface toolkits like -Tk.

-

Python is an interpreted language, which can save you considerable time during -program development because no compilation and linking is necessary. The -interpreter can be used interactively, which makes it easy to experiment with -features of the language, to write throw-away programs, or to test functions -during bottom-up program development. It is also a handy desk calculator.

-

Python enables programs to be written compactly and readably. Programs written -in Python are typically much shorter than equivalent C, C++, or Java programs, -for several reasons:

-
    -
  • the high-level data types allow you to express complex operations in a single -statement;

  • -
  • statement grouping is done by indentation instead of beginning and ending -brackets;

  • -
  • no variable or argument declarations are necessary.

  • -
-

Python is extensible: if you know how to program in C it is easy to add a new -built-in function or module to the interpreter, either to perform critical -operations at maximum speed, or to link Python programs to libraries that may -only be available in binary form (such as a vendor-specific graphics library). -Once you are really hooked, you can link the Python interpreter into an -application written in C and use it as an extension or command language for that -application.

-

By the way, the language is named after the BBC show “Monty Python’s Flying -Circus” and has nothing to do with reptiles. Making references to Monty -Python skits in documentation is not only allowed, it is encouraged!

-

Now that you are all excited about Python, you’ll want to examine it in some -more detail. Since the best way to learn a language is to use it, the tutorial -invites you to play with the Python interpreter as you read.

-

In the next chapter, the mechanics of using the interpreter are explained. This -is rather mundane information, but essential for trying out the examples shown -later.

-

The rest of the tutorial introduces various features of the Python language and -system through examples, beginning with simple expressions, statements and data -types, through functions and modules, and finally touching upon advanced -concepts like exceptions and user-defined classes.

-
- - +
+ +

+ 1. Whetting Your Appetite +

+

+ If you do much work on computers, eventually you find that + there’s some task you’d like to automate. For example, you may + wish to perform a search-and-replace over a large number of text + files, or rename and rearrange a bunch of photo files in a + complicated way. Perhaps you’d like to write a small custom + database, or a specialized GUI application, or a simple game. +

+

+ If you’re a professional software developer, you may have to + work with several C/C++/Java libraries but find the usual + write/compile/test/re-compile cycle is too slow. Perhaps you’re + writing a test suite for such a library and find writing the + testing code a tedious task. Or maybe you’ve written a program + that could use an extension language, and you don’t want to + design and implement a whole new language for your application. +

+

Python is just the language for you.

+

+ You could write a Unix shell script or Windows batch files for + some of these tasks, but shell scripts are best at moving around + files and changing text data, not well-suited for GUI + applications or games. You could write a C/C++/Java program, but + it can take a lot of development time to get even a first-draft + program. Python is simpler to use, available on Windows, Mac OS + X, and Unix operating systems, and will help you get the job + done more quickly. +

+

+ Python is simple to use, but it is a real programming language, + offering much more structure and support for large programs than + shell scripts or batch files can offer. On the other hand, + Python also offers much more error checking than C, and, being a + very-high-level language, it has high-level data types + built in, such as flexible arrays and dictionaries. Because of + its more general data types Python is applicable to a much + larger problem domain than Awk or even Perl, yet many things are + at least as easy in Python as in those languages. +

+

+ Python allows you to split your program into modules that can be + reused in other Python programs. It comes with a large + collection of standard modules that you can use as the basis of + your programs — or as examples to start learning to program in + Python. Some of these modules provide things like file I/O, + system calls, sockets, and even interfaces to graphical user + interface toolkits like Tk. +

+

+ Python is an interpreted language, which can save you + considerable time during program development because no + compilation and linking is necessary. The interpreter can be + used interactively, which makes it easy to experiment with + features of the language, to write throw-away programs, or to + test functions during bottom-up program development. It is also + a handy desk calculator. +

+

+ Python enables programs to be written compactly and readably. + Programs written in Python are typically much shorter than + equivalent C, C++, or Java programs, for several reasons: +

+
    +
  • +

    + the high-level data types allow you to express complex + operations in a single statement; +

    +
  • +
  • +

    + statement grouping is done by indentation instead of + beginning and ending brackets; +

    +
  • +
  • +

    no variable or argument declarations are necessary.

    +
  • +
+

+ Python is extensible: if you know how to program in C + it is easy to add a new built-in function or module to the + interpreter, either to perform critical operations at maximum + speed, or to link Python programs to libraries that may only be + available in binary form (such as a vendor-specific graphics + library). Once you are really hooked, you can link the Python + interpreter into an application written in C and use it as an + extension or command language for that application. +

+

+ By the way, the language is named after the BBC show “Monty + Python’s Flying Circus” and has nothing to do with reptiles. + Making references to Monty Python skits in documentation is not + only allowed, it is encouraged! +

+

+ Now that you are all excited about Python, you’ll want to + examine it in some more detail. Since the best way to learn a + language is to use it, the tutorial invites you to play with the + Python interpreter as you read. +

+

+ In the next chapter, the mechanics of using the interpreter are + explained. This is rather mundane information, but essential for + trying out the examples shown later. +

+

+ The rest of the tutorial introduces various features of the + Python language and system through examples, beginning with + simple expressions, statements and data types, through functions + and modules, and finally touching upon advanced concepts like + exceptions and user-defined classes. +

+
-
+ + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/classes.html b/DOCS/tutorial/classes.html index f92afacb..a308905e 100644 --- a/DOCS/tutorial/classes.html +++ b/DOCS/tutorial/classes.html @@ -1,240 +1,568 @@ - - - - + + 9. Classes — Python 3.9.5 documentation - - + + - + - - - - - - - + + + + + + + - - - - - - - - - - - - + + + +
- -
-

9. Classes

-

Classes provide a means of bundling data and functionality together. Creating -a new class creates a new type of object, allowing new instances of that -type to be made. Each class instance can have attributes attached to it for -maintaining its state. Class instances can also have methods (defined by its -class) for modifying its state.

-

Compared with other programming languages, Python’s class mechanism adds classes -with a minimum of new syntax and semantics. It is a mixture of the class -mechanisms found in C++ and Modula-3. Python classes provide all the standard -features of Object Oriented Programming: the class inheritance mechanism allows -multiple base classes, a derived class can override any methods of its base -class or classes, and a method can call the method of a base class with the same -name. Objects can contain arbitrary amounts and kinds of data. As is true for -modules, classes partake of the dynamic nature of Python: they are created at -runtime, and can be modified further after creation.

-

In C++ terminology, normally class members (including the data members) are -public (except see below Private Variables), and all member functions are -virtual. As in Modula-3, there are no shorthands for referencing the object’s -members from its methods: the method function is declared with an explicit first -argument representing the object, which is provided implicitly by the call. As -in Smalltalk, classes themselves are objects. This provides semantics for -importing and renaming. Unlike C++ and Modula-3, built-in types can be used as -base classes for extension by the user. Also, like in C++, most built-in -operators with special syntax (arithmetic operators, subscripting etc.) can be -redefined for class instances.

-

(Lacking universally accepted terminology to talk about classes, I will make -occasional use of Smalltalk and C++ terms. I would use Modula-3 terms, since -its object-oriented semantics are closer to those of Python than C++, but I -expect that few readers have heard of it.)

-
-

9.1. A Word About Names and Objects

-

Objects have individuality, and multiple names (in multiple scopes) can be bound -to the same object. This is known as aliasing in other languages. This is -usually not appreciated on a first glance at Python, and can be safely ignored -when dealing with immutable basic types (numbers, strings, tuples). However, -aliasing has a possibly surprising effect on the semantics of Python code -involving mutable objects such as lists, dictionaries, and most other types. -This is usually used to the benefit of the program, since aliases behave like -pointers in some respects. For example, passing an object is cheap since only a -pointer is passed by the implementation; and if a function modifies an object -passed as an argument, the caller will see the change — this eliminates the -need for two different argument passing mechanisms as in Pascal.

-
-
-

9.2. Python Scopes and Namespaces

-

Before introducing classes, I first have to tell you something about Python’s -scope rules. Class definitions play some neat tricks with namespaces, and you -need to know how scopes and namespaces work to fully understand what’s going on. -Incidentally, knowledge about this subject is useful for any advanced Python -programmer.

-

Let’s begin with some definitions.

-

A namespace is a mapping from names to objects. Most namespaces are currently -implemented as Python dictionaries, but that’s normally not noticeable in any -way (except for performance), and it may change in the future. Examples of -namespaces are: the set of built-in names (containing functions such as abs(), and -built-in exception names); the global names in a module; and the local names in -a function invocation. In a sense the set of attributes of an object also form -a namespace. The important thing to know about namespaces is that there is -absolutely no relation between names in different namespaces; for instance, two -different modules may both define a function maximize without confusion — -users of the modules must prefix it with the module name.

-

By the way, I use the word attribute for any name following a dot — for -example, in the expression z.real, real is an attribute of the object -z. Strictly speaking, references to names in modules are attribute -references: in the expression modname.funcname, modname is a module -object and funcname is an attribute of it. In this case there happens to be -a straightforward mapping between the module’s attributes and the global names -defined in the module: they share the same namespace! 1

-

Attributes may be read-only or writable. In the latter case, assignment to -attributes is possible. Module attributes are writable: you can write -modname.the_answer = 42. Writable attributes may also be deleted with the -del statement. For example, del modname.the_answer will remove -the attribute the_answer from the object named by modname.

-

Namespaces are created at different moments and have different lifetimes. The -namespace containing the built-in names is created when the Python interpreter -starts up, and is never deleted. The global namespace for a module is created -when the module definition is read in; normally, module namespaces also last -until the interpreter quits. The statements executed by the top-level -invocation of the interpreter, either read from a script file or interactively, -are considered part of a module called __main__, so they have their own -global namespace. (The built-in names actually also live in a module; this is -called builtins.)

-

The local namespace for a function is created when the function is called, and -deleted when the function returns or raises an exception that is not handled -within the function. (Actually, forgetting would be a better way to describe -what actually happens.) Of course, recursive invocations each have their own -local namespace.

-

A scope is a textual region of a Python program where a namespace is directly -accessible. “Directly accessible” here means that an unqualified reference to a -name attempts to find the name in the namespace.

-

Although scopes are determined statically, they are used dynamically. At any -time during execution, there are 3 or 4 nested scopes whose namespaces are -directly accessible:

-
    -
  • the innermost scope, which is searched first, contains the local names

  • -
  • the scopes of any enclosing functions, which are searched starting with the -nearest enclosing scope, contains non-local, but also non-global names

  • -
  • the next-to-last scope contains the current module’s global names

  • -
  • the outermost scope (searched last) is the namespace containing built-in names

  • -
-

If a name is declared global, then all references and assignments go directly to -the middle scope containing the module’s global names. To rebind variables -found outside of the innermost scope, the nonlocal statement can be -used; if not declared nonlocal, those variables are read-only (an attempt to -write to such a variable will simply create a new local variable in the -innermost scope, leaving the identically named outer variable unchanged).

-

Usually, the local scope references the local names of the (textually) current -function. Outside functions, the local scope references the same namespace as -the global scope: the module’s namespace. Class definitions place yet another -namespace in the local scope.

-

It is important to realize that scopes are determined textually: the global -scope of a function defined in a module is that module’s namespace, no matter -from where or by what alias the function is called. On the other hand, the -actual search for names is done dynamically, at run time — however, the -language definition is evolving towards static name resolution, at “compile” -time, so don’t rely on dynamic name resolution! (In fact, local variables are -already determined statically.)

-

A special quirk of Python is that – if no global or nonlocal -statement is in effect – assignments to names always go into the innermost scope. -Assignments do not copy data — they just bind names to objects. The same is true -for deletions: the statement del x removes the binding of x from the -namespace referenced by the local scope. In fact, all operations that introduce -new names use the local scope: in particular, import statements and -function definitions bind the module or function name in the local scope.

-

The global statement can be used to indicate that particular -variables live in the global scope and should be rebound there; the -nonlocal statement indicates that particular variables live in -an enclosing scope and should be rebound there.

-
-

9.2.1. Scopes and Namespaces Example

-

This is an example demonstrating how to reference the different scopes and -namespaces, and how global and nonlocal affect variable -binding:

-
def scope_test():
+            
+ +

+ 9. Classes +

+

+ Classes provide a means of bundling data and functionality + together. Creating a new class creates a new type of + object, allowing new instances of that type to be made. + Each class instance can have attributes attached to it for + maintaining its state. Class instances can also have methods + (defined by its class) for modifying its state. +

+

+ Compared with other programming languages, Python’s class + mechanism adds classes with a minimum of new syntax and + semantics. It is a mixture of the class mechanisms found in C++ + and Modula-3. Python classes provide all the standard features + of Object Oriented Programming: the class inheritance mechanism + allows multiple base classes, a derived class can override any + methods of its base class or classes, and a method can call the + method of a base class with the same name. Objects can contain + arbitrary amounts and kinds of data. As is true for modules, + classes partake of the dynamic nature of Python: they are + created at runtime, and can be modified further after creation. +

+

+ In C++ terminology, normally class members (including the data + members) are public (except see below + Private Variables), and all member functions are virtual. As in + Modula-3, there are no shorthands for referencing the object’s + members from its methods: the method function is declared with + an explicit first argument representing the object, which is + provided implicitly by the call. As in Smalltalk, classes + themselves are objects. This provides semantics for importing + and renaming. Unlike C++ and Modula-3, built-in types can be + used as base classes for extension by the user. Also, like in + C++, most built-in operators with special syntax (arithmetic + operators, subscripting etc.) can be redefined for class + instances. +

+

+ (Lacking universally accepted terminology to talk about classes, + I will make occasional use of Smalltalk and C++ terms. I would + use Modula-3 terms, since its object-oriented semantics are + closer to those of Python than C++, but I expect that few + readers have heard of it.) +

+
+ +

+ 9.1. A Word About Names + and Objects +

+

+ Objects have individuality, and multiple names (in multiple + scopes) can be bound to the same object. This is known as + aliasing in other languages. This is usually not appreciated + on a first glance at Python, and can be safely ignored when + dealing with immutable basic types (numbers, strings, tuples). + However, aliasing has a possibly surprising effect on the + semantics of Python code involving mutable objects such as + lists, dictionaries, and most other types. This is usually + used to the benefit of the program, since aliases behave like + pointers in some respects. For example, passing an object is + cheap since only a pointer is passed by the implementation; + and if a function modifies an object passed as an argument, + the caller will see the change — this eliminates the need for + two different argument passing mechanisms as in Pascal. +

+
+
+ +

+ 9.2. Python Scopes and + Namespaces +

+

+ Before introducing classes, I first have to tell you something + about Python’s scope rules. Class definitions play some neat + tricks with namespaces, and you need to know how scopes and + namespaces work to fully understand what’s going on. + Incidentally, knowledge about this subject is useful for any + advanced Python programmer. +

+

Let’s begin with some definitions.

+

+ A namespace is a mapping from names to objects. Most + namespaces are currently implemented as Python dictionaries, + but that’s normally not noticeable in any way (except for + performance), and it may change in the future. Examples of + namespaces are: the set of built-in names (containing + functions such as + abs(), and built-in exception names); the global names in a + module; and the local names in a function invocation. In a + sense the set of attributes of an object also form a + namespace. The important thing to know about namespaces is + that there is absolutely no relation between names in + different namespaces; for instance, two different modules may + both define a function + maximize + without confusion — users of the modules must prefix it with + the module name. +

+

+ By the way, I use the word attribute for any name + following a dot — for example, in the expression + z.real, + real + is an attribute of the object + z. Strictly speaking, references to names in modules are + attribute references: in the expression + modname.funcname, + modname + is a module object and + funcname + is an attribute of it. In this case there happens to be a + straightforward mapping between the module’s attributes and + the global names defined in the module: they share the same + namespace! + 1 +

+

+ Attributes may be read-only or writable. In the latter case, + assignment to attributes is possible. Module attributes are + writable: you can write + modname.the_answer + = 42. Writable attributes may also be deleted with the + del + statement. For example, + del + modname.the_answer + will remove the attribute + the_answer + from the object named by + modname. +

+

+ Namespaces are created at different moments and have different + lifetimes. The namespace containing the built-in names is + created when the Python interpreter starts up, and is never + deleted. The global namespace for a module is created when the + module definition is read in; normally, module namespaces also + last until the interpreter quits. The statements executed by + the top-level invocation of the interpreter, either read from + a script file or interactively, are considered part of a + module called + __main__, so they have their own global namespace. (The built-in + names actually also live in a module; this is called + builtins.) +

+

+ The local namespace for a function is created when the + function is called, and deleted when the function returns or + raises an exception that is not handled within the function. + (Actually, forgetting would be a better way to describe what + actually happens.) Of course, recursive invocations each have + their own local namespace. +

+

+ A scope is a textual region of a Python program where + a namespace is directly accessible. “Directly accessible” here + means that an unqualified reference to a name attempts to find + the name in the namespace. +

+

+ Although scopes are determined statically, they are used + dynamically. At any time during execution, there are 3 or 4 + nested scopes whose namespaces are directly accessible: +

+
    +
  • +

    + the innermost scope, which is searched first, contains the + local names +

    +
  • +
  • +

    + the scopes of any enclosing functions, which are searched + starting with the nearest enclosing scope, contains + non-local, but also non-global names +

    +
  • +
  • +

    + the next-to-last scope contains the current module’s + global names +

    +
  • +
  • +

    + the outermost scope (searched last) is the namespace + containing built-in names +

    +
  • +
+

+ If a name is declared global, then all references and + assignments go directly to the middle scope containing the + module’s global names. To rebind variables found outside of + the innermost scope, the + nonlocal + statement can be used; if not declared nonlocal, those + variables are read-only (an attempt to write to such a + variable will simply create a new local variable in + the innermost scope, leaving the identically named outer + variable unchanged). +

+

+ Usually, the local scope references the local names of the + (textually) current function. Outside functions, the local + scope references the same namespace as the global scope: the + module’s namespace. Class definitions place yet another + namespace in the local scope. +

+

+ It is important to realize that scopes are determined + textually: the global scope of a function defined in a module + is that module’s namespace, no matter from where or by what + alias the function is called. On the other hand, the actual + search for names is done dynamically, at run time — however, + the language definition is evolving towards static name + resolution, at “compile” time, so don’t rely on dynamic name + resolution! (In fact, local variables are already determined + statically.) +

+

+ A special quirk of Python is that – if no + global + or + nonlocal + statement is in effect – assignments to names always go into + the innermost scope. Assignments do not copy data — they just + bind names to objects. The same is true for deletions: the + statement + del + x + removes the binding of + x + from the namespace referenced by the local scope. In fact, all + operations that introduce new names use the local scope: in + particular, + import + statements and function definitions bind the module or + function name in the local scope. +

+

+ The + global + statement can be used to indicate that particular variables + live in the global scope and should be rebound there; the + nonlocal + statement indicates that particular variables live in an + enclosing scope and should be rebound there. +

+
+ +

+ 9.2.1. Scopes and + Namespaces Example +

+

+ This is an example demonstrating how to reference the + different scopes and namespaces, and how + global + and + nonlocal + affect variable binding: +

+
+
+
def scope_test():
     def do_local():
         spam = "local spam"
 
@@ -256,105 +584,338 @@ 

Navigation

scope_test() print("In global scope:", spam) -
-
-

The output of the example code is:

-
After local assignment: test spam
+
+
+
+

The output of the example code is:

+
+
+
After local assignment: test spam
 After nonlocal assignment: nonlocal spam
 After global assignment: nonlocal spam
 In global scope: global spam
-
-
-

Note how the local assignment (which is default) didn’t change scope_test’s -binding of spam. The nonlocal assignment changed scope_test’s -binding of spam, and the global assignment changed the module-level -binding.

-

You can also see that there was no previous binding for spam before the -global assignment.

-
-
-
-

9.3. A First Look at Classes

-

Classes introduce a little bit of new syntax, three new object types, and some -new semantics.

-
-

9.3.1. Class Definition Syntax

-

The simplest form of class definition looks like this:

-
class ClassName:
+
+
+
+

+ Note how the local assignment (which is default) + didn’t change scope_test’s binding of + spam. The + nonlocal + assignment changed scope_test’s binding of + spam, and the + global + assignment changed the module-level binding. +

+

+ You can also see that there was no previous binding for + spam before the + global + assignment. +

+
+
+
+ +

+ 9.3. A First Look at + Classes +

+

+ Classes introduce a little bit of new syntax, three new object + types, and some new semantics. +

+
+ +

+ 9.3.1. Class Definition + Syntax +

+

The simplest form of class definition looks like this:

+
+
+
class ClassName:
     <statement-1>
     .
     .
     .
     <statement-N>
-
-
-

Class definitions, like function definitions (def statements) must be -executed before they have any effect. (You could conceivably place a class -definition in a branch of an if statement, or inside a function.)

-

In practice, the statements inside a class definition will usually be function -definitions, but other statements are allowed, and sometimes useful — we’ll -come back to this later. The function definitions inside a class normally have -a peculiar form of argument list, dictated by the calling conventions for -methods — again, this is explained later.

-

When a class definition is entered, a new namespace is created, and used as the -local scope — thus, all assignments to local variables go into this new -namespace. In particular, function definitions bind the name of the new -function here.

-

When a class definition is left normally (via the end), a class object is -created. This is basically a wrapper around the contents of the namespace -created by the class definition; we’ll learn more about class objects in the -next section. The original local scope (the one in effect just before the class -definition was entered) is reinstated, and the class object is bound here to the -class name given in the class definition header (ClassName in the -example).

-
-
-

9.3.2. Class Objects

-

Class objects support two kinds of operations: attribute references and -instantiation.

-

Attribute references use the standard syntax used for all attribute references -in Python: obj.name. Valid attribute names are all the names that were in -the class’s namespace when the class object was created. So, if the class -definition looked like this:

-
class MyClass:
+
+
+
+

+ Class definitions, like function definitions (def + statements) must be executed before they have any effect. + (You could conceivably place a class definition in a branch + of an + if + statement, or inside a function.) +

+

+ In practice, the statements inside a class definition will + usually be function definitions, but other statements are + allowed, and sometimes useful — we’ll come back to this + later. The function definitions inside a class normally have + a peculiar form of argument list, dictated by the calling + conventions for methods — again, this is explained later. +

+

+ When a class definition is entered, a new namespace is + created, and used as the local scope — thus, all assignments + to local variables go into this new namespace. In + particular, function definitions bind the name of the new + function here. +

+

+ When a class definition is left normally (via the end), a + class object is created. This is basically a + wrapper around the contents of the namespace created by the + class definition; we’ll learn more about class objects in + the next section. The original local scope (the one in + effect just before the class definition was entered) is + reinstated, and the class object is bound here to the class + name given in the class definition header (ClassName + in the example). +

+
+
+ +

+ 9.3.2. Class Objects +

+

+ Class objects support two kinds of operations: attribute + references and instantiation. +

+

+ Attribute references use the standard syntax used + for all attribute references in Python: + obj.name. Valid attribute names are all the names that were in the + class’s namespace when the class object was created. So, if + the class definition looked like this: +

+
+
+
class MyClass:
     """A simple example class"""
     i = 12345
 
     def f(self):
         return 'hello world'
-
-
-

then MyClass.i and MyClass.f are valid attribute references, returning -an integer and a function object, respectively. Class attributes can also be -assigned to, so you can change the value of MyClass.i by assignment. -__doc__ is also a valid attribute, returning the docstring belonging to -the class: "A simple example class".

-

Class instantiation uses function notation. Just pretend that the class -object is a parameterless function that returns a new instance of the class. -For example (assuming the above class):

-
x = MyClass()
-
-
-

creates a new instance of the class and assigns this object to the local -variable x.

-

The instantiation operation (“calling” a class object) creates an empty object. -Many classes like to create objects with instances customized to a specific -initial state. Therefore a class may define a special method named -__init__(), like this:

-
def __init__(self):
+
+
+
+

+ then + MyClass.i + and + MyClass.f + are valid attribute references, returning an integer and a + function object, respectively. Class attributes can also be + assigned to, so you can change the value of + MyClass.i + by assignment. + __doc__ + is also a valid attribute, returning the docstring belonging + to the class: + "A + simple + example + class". +

+

+ Class instantiation uses function notation. Just + pretend that the class object is a parameterless function + that returns a new instance of the class. For example + (assuming the above class): +

+
+
+
x = MyClass()
+
+
+
+

+ creates a new instance of the class and assigns + this object to the local variable + x. +

+

+ The instantiation operation (“calling” a class object) + creates an empty object. Many classes like to create objects + with instances customized to a specific initial state. + Therefore a class may define a special method named + __init__(), like this: +

+
+
+
def __init__(self):
     self.data = []
-
-
-

When a class defines an __init__() method, class instantiation -automatically invokes __init__() for the newly-created class instance. So -in this example, a new, initialized instance can be obtained by:

-
x = MyClass()
-
-
-

Of course, the __init__() method may have arguments for greater -flexibility. In that case, arguments given to the class instantiation operator -are passed on to __init__(). For example,

-
>>> class Complex:
+
+
+
+

+ When a class defines an + __init__() + method, class instantiation automatically invokes + __init__() + for the newly-created class instance. So in this example, a + new, initialized instance can be obtained by: +

+
+
+
x = MyClass()
+
+
+
+

+ Of course, the + __init__() + method may have arguments for greater flexibility. In that + case, arguments given to the class instantiation operator + are passed on to + __init__(). For example, +

+
+
+
>>> class Complex:
 ...     def __init__(self, realpart, imagpart):
 ...         self.r = realpart
 ...         self.i = imagpart
@@ -362,81 +923,212 @@ 

Navigation

>>> x = Complex(3.0, -4.5) >>> x.r, x.i (3.0, -4.5) -
-
-
-
-

9.3.3. Instance Objects

-

Now what can we do with instance objects? The only operations understood by -instance objects are attribute references. There are two kinds of valid -attribute names: data attributes and methods.

-

data attributes correspond to “instance variables” in Smalltalk, and to “data -members” in C++. Data attributes need not be declared; like local variables, -they spring into existence when they are first assigned to. For example, if -x is the instance of MyClass created above, the following piece of -code will print the value 16, without leaving a trace:

-
x.counter = 1
+
+
+
+
+
+ +

+ 9.3.3. Instance + Objects +

+

+ Now what can we do with instance objects? The only + operations understood by instance objects are attribute + references. There are two kinds of valid attribute names: + data attributes and methods. +

+

+ data attributes correspond to “instance variables” + in Smalltalk, and to “data members” in C++. Data attributes + need not be declared; like local variables, they spring into + existence when they are first assigned to. For example, if + x + is the instance of + MyClass + created above, the following piece of code will print the + value + 16, without leaving a trace: +

+
+
+
x.counter = 1
 while x.counter < 10:
     x.counter = x.counter * 2
 print(x.counter)
 del x.counter
-
-
-

The other kind of instance attribute reference is a method. A method is a -function that “belongs to” an object. (In Python, the term method is not unique -to class instances: other object types can have methods as well. For example, -list objects have methods called append, insert, remove, sort, and so on. -However, in the following discussion, we’ll use the term method exclusively to -mean methods of class instance objects, unless explicitly stated otherwise.)

-

Valid method names of an instance object depend on its class. By definition, -all attributes of a class that are function objects define corresponding -methods of its instances. So in our example, x.f is a valid method -reference, since MyClass.f is a function, but x.i is not, since -MyClass.i is not. But x.f is not the same thing as MyClass.f — it -is a method object, not a function object.

-
-
-

9.3.4. Method Objects

-

Usually, a method is called right after it is bound:

-
x.f()
-
-
-

In the MyClass example, this will return the string 'hello world'. -However, it is not necessary to call a method right away: x.f is a method -object, and can be stored away and called at a later time. For example:

-
xf = x.f
+
+
+
+

+ The other kind of instance attribute reference is a + method. A method is a function that “belongs to” an + object. (In Python, the term method is not unique to class + instances: other object types can have methods as well. For + example, list objects have methods called append, insert, + remove, sort, and so on. However, in the following + discussion, we’ll use the term method exclusively to mean + methods of class instance objects, unless explicitly stated + otherwise.) +

+

+ Valid method names of an instance object depend on its + class. By definition, all attributes of a class that are + function objects define corresponding methods of its + instances. So in our example, + x.f + is a valid method reference, since + MyClass.f + is a function, but + x.i + is not, since + MyClass.i + is not. But + x.f + is not the same thing as + MyClass.f + — it is a method object, not a function object. +

+
+
+ +

+ 9.3.4. Method Objects +

+

Usually, a method is called right after it is bound:

+
+
+
x.f()
+
+
+
+

+ In the + MyClass + example, this will return the string + 'hello + world'. However, it is not necessary to call a method right away: + x.f + is a method object, and can be stored away and called at a + later time. For example: +

+
+
+
xf = x.f
 while True:
     print(xf())
-
-
-

will continue to print hello world until the end of time.

-

What exactly happens when a method is called? You may have noticed that -x.f() was called without an argument above, even though the function -definition for f() specified an argument. What happened to the argument? -Surely Python raises an exception when a function that requires an argument is -called without any — even if the argument isn’t actually used…

-

Actually, you may have guessed the answer: the special thing about methods is -that the instance object is passed as the first argument of the function. In our -example, the call x.f() is exactly equivalent to MyClass.f(x). In -general, calling a method with a list of n arguments is equivalent to calling -the corresponding function with an argument list that is created by inserting -the method’s instance object before the first argument.

-

If you still don’t understand how methods work, a look at the implementation can -perhaps clarify matters. When a non-data attribute of an instance is -referenced, the instance’s class is searched. If the name denotes a valid class -attribute that is a function object, a method object is created by packing -(pointers to) the instance object and the function object just found together in -an abstract object: this is the method object. When the method object is called -with an argument list, a new argument list is constructed from the instance -object and the argument list, and the function object is called with this new -argument list.

-
-
-

9.3.5. Class and Instance Variables

-

Generally speaking, instance variables are for data unique to each instance -and class variables are for attributes and methods shared by all instances -of the class:

-
class Dog:
+
+
+
+

+ will continue to print + hello + world + until the end of time. +

+

+ What exactly happens when a method is called? You may have + noticed that + x.f() + was called without an argument above, even though the + function definition for + f() + specified an argument. What happened to the argument? Surely + Python raises an exception when a function that requires an + argument is called without any — even if the argument isn’t + actually used… +

+

+ Actually, you may have guessed the answer: the special thing + about methods is that the instance object is passed as the + first argument of the function. In our example, the call + x.f() + is exactly equivalent to + MyClass.f(x). In general, calling a method with a list of + n arguments is equivalent to calling the + corresponding function with an argument list that is created + by inserting the method’s instance object before the first + argument. +

+

+ If you still don’t understand how methods work, a look at + the implementation can perhaps clarify matters. When a + non-data attribute of an instance is referenced, the + instance’s class is searched. If the name denotes a valid + class attribute that is a function object, a method object + is created by packing (pointers to) the instance object and + the function object just found together in an abstract + object: this is the method object. When the method object is + called with an argument list, a new argument list is + constructed from the instance object and the argument list, + and the function object is called with this new argument + list. +

+
+
+ +

+ 9.3.5. Class and + Instance Variables +

+

+ Generally speaking, instance variables are for data unique + to each instance and class variables are for attributes and + methods shared by all instances of the class: +

+
+
+
class Dog:
 
     kind = 'canine'         # class variable shared by all instances
 
@@ -453,14 +1145,30 @@ 

Navigation

'Fido' >>> e.name # unique to e 'Buddy' -
-
-

As discussed in A Word About Names and Objects, shared data can have possibly surprising -effects with involving mutable objects such as lists and dictionaries. -For example, the tricks list in the following code should not be used as a -class variable because just a single list would be shared by all Dog -instances:

-
class Dog:
+
+
+
+

+ As discussed in + A Word About Names and Objects, shared data can have possibly surprising effects with + involving + mutable + objects such as lists and dictionaries. For example, the + tricks list in the following code should not be + used as a class variable because just a single list would be + shared by all Dog instances: +

+
+
+
class Dog:
 
     tricks = []             # mistaken use of a class variable
 
@@ -476,10 +1184,16 @@ 

Navigation

>>> e.add_trick('play dead') >>> d.tricks # unexpectedly shared by all dogs ['roll over', 'play dead'] -
-
-

Correct design of the class should use an instance variable instead:

-
class Dog:
+
+
+
+

+ Correct design of the class should use an instance variable + instead: +

+
+
+
class Dog:
 
     def __init__(self, name):
         self.name = name
@@ -496,15 +1210,28 @@ 

Navigation

['roll over'] >>> e.tricks ['play dead'] -
-
-
-
-
-

9.4. Random Remarks

-

If the same attribute name occurs in both an instance and in a class, -then attribute lookup prioritizes the instance:

-
>>> class Warehouse:
+
+
+
+
+
+
+ +

+ 9.4. Random Remarks +

+

+ If the same attribute name occurs in both an instance and in a + class, then attribute lookup prioritizes the instance: +

+
+
+
>>> class Warehouse:
         purpose = 'storage'
         region = 'west'
 
@@ -515,34 +1242,60 @@ 

Navigation

>>> w2.region = 'east' >>> print(w2.purpose, w2.region) storage east -
-
-

Data attributes may be referenced by methods as well as by ordinary users -(“clients”) of an object. In other words, classes are not usable to implement -pure abstract data types. In fact, nothing in Python makes it possible to -enforce data hiding — it is all based upon convention. (On the other hand, -the Python implementation, written in C, can completely hide implementation -details and control access to an object if necessary; this can be used by -extensions to Python written in C.)

-

Clients should use data attributes with care — clients may mess up invariants -maintained by the methods by stamping on their data attributes. Note that -clients may add data attributes of their own to an instance object without -affecting the validity of the methods, as long as name conflicts are avoided — -again, a naming convention can save a lot of headaches here.

-

There is no shorthand for referencing data attributes (or other methods!) from -within methods. I find that this actually increases the readability of methods: -there is no chance of confusing local variables and instance variables when -glancing through a method.

-

Often, the first argument of a method is called self. This is nothing more -than a convention: the name self has absolutely no special meaning to -Python. Note, however, that by not following the convention your code may be -less readable to other Python programmers, and it is also conceivable that a -class browser program might be written that relies upon such a convention.

-

Any function object that is a class attribute defines a method for instances of -that class. It is not necessary that the function definition is textually -enclosed in the class definition: assigning a function object to a local -variable in the class is also ok. For example:

-
# Function defined outside the class
+
+
+
+

+ Data attributes may be referenced by methods as well as by + ordinary users (“clients”) of an object. In other words, + classes are not usable to implement pure abstract data types. + In fact, nothing in Python makes it possible to enforce data + hiding — it is all based upon convention. (On the other hand, + the Python implementation, written in C, can completely hide + implementation details and control access to an object if + necessary; this can be used by extensions to Python written in + C.) +

+

+ Clients should use data attributes with care — clients may + mess up invariants maintained by the methods by stamping on + their data attributes. Note that clients may add data + attributes of their own to an instance object without + affecting the validity of the methods, as long as name + conflicts are avoided — again, a naming convention can save a + lot of headaches here. +

+

+ There is no shorthand for referencing data attributes (or + other methods!) from within methods. I find that this actually + increases the readability of methods: there is no chance of + confusing local variables and instance variables when glancing + through a method. +

+

+ Often, the first argument of a method is called + self. This is nothing more than a convention: the name + self + has absolutely no special meaning to Python. Note, however, + that by not following the convention your code may be less + readable to other Python programmers, and it is also + conceivable that a class browser program might be + written that relies upon such a convention. +

+

+ Any function object that is a class attribute defines a method + for instances of that class. It is not necessary that the + function definition is textually enclosed in the class + definition: assigning a function object to a local variable in + the class is also ok. For example: +

+
+
+
# Function defined outside the class
 def f1(self, x, y):
     return min(x, x+y)
 
@@ -553,15 +1306,51 @@ 

Navigation

return 'hello world' h = g -
-
-

Now f, g and h are all attributes of class C that refer to -function objects, and consequently they are all methods of instances of -Ch being exactly equivalent to g. Note that this practice -usually only serves to confuse the reader of a program.

-

Methods may call other methods by using method attributes of the self -argument:

-
class Bag:
+
+
+
+

+ Now + f, + g + and + h + are all attributes of class + C + that refer to function objects, and consequently they are all + methods of instances of + C + — + h + being exactly equivalent to + g. Note that this practice usually only serves to confuse the + reader of a program. +

+

+ Methods may call other methods by using method attributes of + the + self + argument: +

+
+
+
class Bag:
     def __init__(self):
         self.data = []
 
@@ -571,127 +1360,396 @@ 

Navigation

def addtwice(self, x): self.add(x) self.add(x) -
-
-

Methods may reference global names in the same way as ordinary functions. The -global scope associated with a method is the module containing its -definition. (A class is never used as a global scope.) While one -rarely encounters a good reason for using global data in a method, there are -many legitimate uses of the global scope: for one thing, functions and modules -imported into the global scope can be used by methods, as well as functions and -classes defined in it. Usually, the class containing the method is itself -defined in this global scope, and in the next section we’ll find some good -reasons why a method would want to reference its own class.

-

Each value is an object, and therefore has a class (also called its type). -It is stored as object.__class__.

-
-
-

9.5. Inheritance

-

Of course, a language feature would not be worthy of the name “class” without -supporting inheritance. The syntax for a derived class definition looks like -this:

-
class DerivedClassName(BaseClassName):
+
+
+
+

+ Methods may reference global names in the same way as ordinary + functions. The global scope associated with a method is the + module containing its definition. (A class is never used as a + global scope.) While one rarely encounters a good reason for + using global data in a method, there are many legitimate uses + of the global scope: for one thing, functions and modules + imported into the global scope can be used by methods, as well + as functions and classes defined in it. Usually, the class + containing the method is itself defined in this global scope, + and in the next section we’ll find some good reasons why a + method would want to reference its own class. +

+

+ Each value is an object, and therefore has a + class (also called its type). It is stored + as + object.__class__. +

+
+
+ +

+ 9.5. Inheritance +

+

+ Of course, a language feature would not be worthy of the name + “class” without supporting inheritance. The syntax for a + derived class definition looks like this: +

+
+
+
class DerivedClassName(BaseClassName):
     <statement-1>
     .
     .
     .
     <statement-N>
-
-
-

The name BaseClassName must be defined in a scope containing the -derived class definition. In place of a base class name, other arbitrary -expressions are also allowed. This can be useful, for example, when the base -class is defined in another module:

-
class DerivedClassName(modname.BaseClassName):
-
-
-

Execution of a derived class definition proceeds the same as for a base class. -When the class object is constructed, the base class is remembered. This is -used for resolving attribute references: if a requested attribute is not found -in the class, the search proceeds to look in the base class. This rule is -applied recursively if the base class itself is derived from some other class.

-

There’s nothing special about instantiation of derived classes: -DerivedClassName() creates a new instance of the class. Method references -are resolved as follows: the corresponding class attribute is searched, -descending down the chain of base classes if necessary, and the method reference -is valid if this yields a function object.

-

Derived classes may override methods of their base classes. Because methods -have no special privileges when calling other methods of the same object, a -method of a base class that calls another method defined in the same base class -may end up calling a method of a derived class that overrides it. (For C++ -programmers: all methods in Python are effectively virtual.)

-

An overriding method in a derived class may in fact want to extend rather than -simply replace the base class method of the same name. There is a simple way to -call the base class method directly: just call BaseClassName.methodname(self, -arguments). This is occasionally useful to clients as well. (Note that this -only works if the base class is accessible as BaseClassName in the global -scope.)

-

Python has two built-in functions that work with inheritance:

-
    -
  • Use isinstance() to check an instance’s type: isinstance(obj, int) -will be True only if obj.__class__ is int or some class -derived from int.

  • -
  • Use issubclass() to check class inheritance: issubclass(bool, int) -is True since bool is a subclass of int. However, -issubclass(float, int) is False since float is not a -subclass of int.

  • -
-
-

9.5.1. Multiple Inheritance

-

Python supports a form of multiple inheritance as well. A class definition with -multiple base classes looks like this:

-
class DerivedClassName(Base1, Base2, Base3):
+
+
+
+

+ The name + BaseClassName + must be defined in a scope containing the derived class + definition. In place of a base class name, other arbitrary + expressions are also allowed. This can be useful, for example, + when the base class is defined in another module: +

+
+
+
class DerivedClassName(modname.BaseClassName):
+
+
+
+

+ Execution of a derived class definition proceeds the same as + for a base class. When the class object is constructed, the + base class is remembered. This is used for resolving attribute + references: if a requested attribute is not found in the + class, the search proceeds to look in the base class. This + rule is applied recursively if the base class itself is + derived from some other class. +

+

+ There’s nothing special about instantiation of derived + classes: + DerivedClassName() + creates a new instance of the class. Method references are + resolved as follows: the corresponding class attribute is + searched, descending down the chain of base classes if + necessary, and the method reference is valid if this yields a + function object. +

+

+ Derived classes may override methods of their base classes. + Because methods have no special privileges when calling other + methods of the same object, a method of a base class that + calls another method defined in the same base class may end up + calling a method of a derived class that overrides it. (For + C++ programmers: all methods in Python are effectively + virtual.) +

+

+ An overriding method in a derived class may in fact want to + extend rather than simply replace the base class method of the + same name. There is a simple way to call the base class method + directly: just call + BaseClassName.methodname(self, + arguments). This is occasionally useful to clients as well. (Note that + this only works if the base class is accessible as + BaseClassName + in the global scope.) +

+

+ Python has two built-in functions that work with inheritance: +

+
    +
  • +

    + Use + isinstance() + to check an instance’s type: + isinstance(obj, + int) + will be + True + only if + obj.__class__ + is + int + or some class derived from + int. +

    +
  • +
  • +

    + Use + issubclass() + to check class inheritance: + issubclass(bool, + int) + is + True + since + bool + is a subclass of + int. However, + issubclass(float, + int) + is + False + since + float + is not a subclass of + int. +

    +
  • +
+
+ +

+ 9.5.1. Multiple + Inheritance +

+

+ Python supports a form of multiple inheritance as well. A + class definition with multiple base classes looks like this: +

+
+
+
class DerivedClassName(Base1, Base2, Base3):
     <statement-1>
     .
     .
     .
     <statement-N>
-
-
-

For most purposes, in the simplest cases, you can think of the search for -attributes inherited from a parent class as depth-first, left-to-right, not -searching twice in the same class where there is an overlap in the hierarchy. -Thus, if an attribute is not found in DerivedClassName, it is searched -for in Base1, then (recursively) in the base classes of Base1, -and if it was not found there, it was searched for in Base2, and so on.

-

In fact, it is slightly more complex than that; the method resolution order -changes dynamically to support cooperative calls to super(). This -approach is known in some other multiple-inheritance languages as -call-next-method and is more powerful than the super call found in -single-inheritance languages.

-

Dynamic ordering is necessary because all cases of multiple inheritance exhibit -one or more diamond relationships (where at least one of the parent classes -can be accessed through multiple paths from the bottommost class). For example, -all classes inherit from object, so any case of multiple inheritance -provides more than one path to reach object. To keep the base classes -from being accessed more than once, the dynamic algorithm linearizes the search -order in a way that preserves the left-to-right ordering specified in each -class, that calls each parent only once, and that is monotonic (meaning that a -class can be subclassed without affecting the precedence order of its parents). -Taken together, these properties make it possible to design reliable and -extensible classes with multiple inheritance. For more detail, see -https://www.python.org/download/releases/2.3/mro/.

-
-
-
-

9.6. Private Variables

-

“Private” instance variables that cannot be accessed except from inside an -object don’t exist in Python. However, there is a convention that is followed -by most Python code: a name prefixed with an underscore (e.g. _spam) should -be treated as a non-public part of the API (whether it is a function, a method -or a data member). It should be considered an implementation detail and subject -to change without notice.

-

Since there is a valid use-case for class-private members (namely to avoid name -clashes of names with names defined by subclasses), there is limited support for -such a mechanism, called name mangling. Any identifier of the form -__spam (at least two leading underscores, at most one trailing underscore) -is textually replaced with _classname__spam, where classname is the -current class name with leading underscore(s) stripped. This mangling is done -without regard to the syntactic position of the identifier, as long as it -occurs within the definition of a class.

-

Name mangling is helpful for letting subclasses override methods without -breaking intraclass method calls. For example:

-
class Mapping:
+
+
+
+

+ For most purposes, in the simplest cases, you can think of + the search for attributes inherited from a parent class as + depth-first, left-to-right, not searching twice in the same + class where there is an overlap in the hierarchy. Thus, if + an attribute is not found in + DerivedClassName, it is searched for in + Base1, then (recursively) in the base classes of + Base1, and if it was not found there, it was searched for in + Base2, and so on. +

+

+ In fact, it is slightly more complex than that; the method + resolution order changes dynamically to support cooperative + calls to + super(). This approach is known in some other multiple-inheritance + languages as call-next-method and is more powerful than the + super call found in single-inheritance languages. +

+

+ Dynamic ordering is necessary because all cases of multiple + inheritance exhibit one or more diamond relationships (where + at least one of the parent classes can be accessed through + multiple paths from the bottommost class). For example, all + classes inherit from + object, so any case of multiple inheritance provides more than + one path to reach + object. To keep the base classes from being accessed more than + once, the dynamic algorithm linearizes the search order in a + way that preserves the left-to-right ordering specified in + each class, that calls each parent only once, and that is + monotonic (meaning that a class can be subclassed without + affecting the precedence order of its parents). Taken + together, these properties make it possible to design + reliable and extensible classes with multiple inheritance. + For more detail, see + https://www.python.org/download/releases/2.3/mro/. +

+
+
+
+ +

+ 9.6. Private Variables +

+

+ “Private” instance variables that cannot be accessed except + from inside an object don’t exist in Python. However, there is + a convention that is followed by most Python code: a name + prefixed with an underscore (e.g. + _spam) should be treated as a non-public part of the API (whether + it is a function, a method or a data member). It should be + considered an implementation detail and subject to change + without notice. +

+

+ Since there is a valid use-case for class-private members + (namely to avoid name clashes of names with names defined by + subclasses), there is limited support for such a mechanism, + called name mangling. Any identifier of + the form + __spam + (at least two leading underscores, at most one trailing + underscore) is textually replaced with + _classname__spam, where + classname + is the current class name with leading underscore(s) stripped. + This mangling is done without regard to the syntactic position + of the identifier, as long as it occurs within the definition + of a class. +

+

+ Name mangling is helpful for letting subclasses override + methods without breaking intraclass method calls. For example: +

+
+
+
class Mapping:
     def __init__(self, iterable):
         self.items_list = []
         self.__update(iterable)
@@ -709,28 +1767,93 @@ 

Navigation

# but does not break __init__() for item in zip(keys, values): self.items_list.append(item) -
-
-

The above example would work even if MappingSubclass were to introduce a -__update identifier since it is replaced with _Mapping__update in the -Mapping class and _MappingSubclass__update in the MappingSubclass -class respectively.

-

Note that the mangling rules are designed mostly to avoid accidents; it still is -possible to access or modify a variable that is considered private. This can -even be useful in special circumstances, such as in the debugger.

-

Notice that code passed to exec() or eval() does not consider the -classname of the invoking class to be the current class; this is similar to the -effect of the global statement, the effect of which is likewise restricted -to code that is byte-compiled together. The same restriction applies to -getattr(), setattr() and delattr(), as well as when referencing -__dict__ directly.

-
-
-

9.7. Odds and Ends

-

Sometimes it is useful to have a data type similar to the Pascal “record” or C -“struct”, bundling together a few named data items. An empty class definition -will do nicely:

-
class Employee:
+
+
+
+

+ The above example would work even if + MappingSubclass + were to introduce a + __update + identifier since it is replaced with + _Mapping__update + in the + Mapping + class and + _MappingSubclass__update + in the + MappingSubclass + class respectively. +

+

+ Note that the mangling rules are designed mostly to avoid + accidents; it still is possible to access or modify a variable + that is considered private. This can even be useful in special + circumstances, such as in the debugger. +

+

+ Notice that code passed to + exec() + or + eval() + does not consider the classname of the invoking class to be + the current class; this is similar to the effect of the + global + statement, the effect of which is likewise restricted to code + that is byte-compiled together. The same restriction applies + to + getattr(), + setattr() + and + delattr(), as well as when referencing + __dict__ + directly. +

+
+
+ +

+ 9.7. Odds and Ends +

+

+ Sometimes it is useful to have a data type similar to the + Pascal “record” or C “struct”, bundling together a few named + data items. An empty class definition will do nicely: +

+
+
+
class Employee:
     pass
 
 john = Employee()  # Create an empty employee record
@@ -739,22 +1862,66 @@ 

Navigation

john.name = 'John Doe' john.dept = 'computer lab' john.salary = 1000 -
-
-

A piece of Python code that expects a particular abstract data type can often be -passed a class that emulates the methods of that data type instead. For -instance, if you have a function that formats some data from a file object, you -can define a class with methods read() and readline() that get the -data from a string buffer instead, and pass it as an argument.

-

Instance method objects have attributes, too: m.__self__ is the instance -object with the method m(), and m.__func__ is the function object -corresponding to the method.

-
-
-

9.8. Iterators

-

By now you have probably noticed that most container objects can be looped over -using a for statement:

-
for element in [1, 2, 3]:
+
+
+
+

+ A piece of Python code that expects a particular abstract data + type can often be passed a class that emulates the methods of + that data type instead. For instance, if you have a function + that formats some data from a file object, you can define a + class with methods + read() + and + readline() + that get the data from a string buffer instead, and pass it as + an argument. +

+

+ Instance method objects have attributes, too: + m.__self__ + is the instance object with the method + m(), and + m.__func__ + is the function object corresponding to the method. +

+
+
+ +

+ 9.8. Iterators +

+

+ By now you have probably noticed that most container objects + can be looped over using a + for + statement: +

+
+
+
for element in [1, 2, 3]:
     print(element)
 for element in (1, 2, 3):
     print(element)
@@ -764,17 +1931,87 @@ 

Navigation

print(char) for line in open("myfile.txt"): print(line, end='') -
-
-

This style of access is clear, concise, and convenient. The use of iterators -pervades and unifies Python. Behind the scenes, the for statement -calls iter() on the container object. The function returns an iterator -object that defines the method __next__() which accesses -elements in the container one at a time. When there are no more elements, -__next__() raises a StopIteration exception which tells the -for loop to terminate. You can call the __next__() method -using the next() built-in function; this example shows how it all works:

-
>>> s = 'abc'
+
+
+
+

+ This style of access is clear, concise, and convenient. The + use of iterators pervades and unifies Python. Behind the + scenes, the + for + statement calls + iter() + on the container object. The function returns an iterator + object that defines the method + __next__() + which accesses elements in the container one at a time. When + there are no more elements, + __next__() + raises a + StopIteration + exception which tells the + for + loop to terminate. You can call the + __next__() + method using the + next() + built-in function; this example shows how it all works: +

+
+
+
>>> s = 'abc'
 >>> it = iter(s)
 >>> it
 <iterator object at 0x00A1DB50>
@@ -789,13 +2026,49 @@ 

Navigation

File "<stdin>", line 1, in <module> next(it) StopIteration -
-
-

Having seen the mechanics behind the iterator protocol, it is easy to add -iterator behavior to your classes. Define an __iter__() method which -returns an object with a __next__() method. If the class -defines __next__(), then __iter__() can just return self:

-
class Reverse:
+
+
+
+

+ Having seen the mechanics behind the iterator protocol, it is + easy to add iterator behavior to your classes. Define an + __iter__() + method which returns an object with a + __next__() + method. If the class defines + __next__(), then + __iter__() + can just return + self: +

+
+
+
class Reverse:
     """Iterator for looping over a sequence backwards."""
     def __init__(self, data):
         self.data = data
@@ -809,9 +2082,12 @@ 

Navigation

raise StopIteration self.index = self.index - 1 return self.data[self.index] -
-
-
>>> rev = Reverse('spam')
+
+
+
+
+
+
>>> rev = Reverse('spam')
 >>> iter(rev)
 <__main__.Reverse object at 0x00A1DB50>
 >>> for char in rev:
@@ -821,54 +2097,145 @@ 

Navigation

a p s -
-
-
-
-

9.9. Generators

-

Generators are a simple and powerful tool for creating iterators. They -are written like regular functions but use the yield statement -whenever they want to return data. Each time next() is called on it, the -generator resumes where it left off (it remembers all the data values and which -statement was last executed). An example shows that generators can be trivially -easy to create:

-
def reverse(data):
+
+
+
+
+
+ +

+ 9.9. Generators +

+

+ Generators + are a simple and powerful tool for creating iterators. They + are written like regular functions but use the + yield + statement whenever they want to return data. Each time + next() + is called on it, the generator resumes where it left off (it + remembers all the data values and which statement was last + executed). An example shows that generators can be trivially + easy to create: +

+
+
+
def reverse(data):
     for index in range(len(data)-1, -1, -1):
         yield data[index]
-
-
-
>>> for char in reverse('golf'):
+
+
+
+
+
+
>>> for char in reverse('golf'):
 ...     print(char)
 ...
 f
 l
 o
 g
-
-
-

Anything that can be done with generators can also be done with class-based -iterators as described in the previous section. What makes generators so -compact is that the __iter__() and __next__() methods -are created automatically.

-

Another key feature is that the local variables and execution state are -automatically saved between calls. This made the function easier to write and -much more clear than an approach using instance variables like self.index -and self.data.

-

In addition to automatic method creation and saving program state, when -generators terminate, they automatically raise StopIteration. In -combination, these features make it easy to create iterators with no more effort -than writing a regular function.

-
-
-

9.10. Generator Expressions

-

Some simple generators can be coded succinctly as expressions using a syntax -similar to list comprehensions but with parentheses instead of square brackets. -These expressions are designed for situations where the generator is used right -away by an enclosing function. Generator expressions are more compact but less -versatile than full generator definitions and tend to be more memory friendly -than equivalent list comprehensions.

-

Examples:

-
>>> sum(i*i for i in range(10))                 # sum of squares
+
+
+
+

+ Anything that can be done with generators can also be done + with class-based iterators as described in the previous + section. What makes generators so compact is that the + __iter__() + and + __next__() + methods are created automatically. +

+

+ Another key feature is that the local variables and execution + state are automatically saved between calls. This made the + function easier to write and much more clear than an approach + using instance variables like + self.index + and + self.data. +

+

+ In addition to automatic method creation and saving program + state, when generators terminate, they automatically raise + StopIteration. In combination, these features make it easy to create + iterators with no more effort than writing a regular function. +

+
+
+ +

+ 9.10. Generator + Expressions +

+

+ Some simple generators can be coded succinctly as expressions + using a syntax similar to list comprehensions but with + parentheses instead of square brackets. These expressions are + designed for situations where the generator is used right away + by an enclosing function. Generator expressions are more + compact but less versatile than full generator definitions and + tend to be more memory friendly than equivalent list + comprehensions. +

+

Examples:

+
+
+
>>> sum(i*i for i in range(10))                 # sum of squares
 285
 
 >>> xvec = [10, 20, 30]
@@ -883,139 +2250,285 @@ 

Navigation

>>> data = 'golf' >>> list(data[i] for i in range(len(data)-1, -1, -1)) ['f', 'l', 'o', 'g'] -
-
-

Footnotes

-
-
1
-

Except for one thing. Module objects have a secret read-only attribute called -__dict__ which returns the dictionary used to implement the module’s -namespace; the name __dict__ is an attribute but not a global name. -Obviously, using this violates the abstraction of namespace implementation, and -should be restricted to things like post-mortem debuggers.

-
-
-
-
- - + +
+
+

Footnotes

+
+
+ 1 +
+
+

+ Except for one thing. Module objects have a secret + read-only attribute called + __dict__ + which returns the dictionary used to implement the + module’s namespace; the name + __dict__ + is an attribute but not a global name. Obviously, using + this violates the abstraction of namespace implementation, + and should be restricted to things like post-mortem + debuggers. +

+
+
+
+
-
+ + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/controlflow.html b/DOCS/tutorial/controlflow.html index 1d7e3422..76f03ee4 100644 --- a/DOCS/tutorial/controlflow.html +++ b/DOCS/tutorial/controlflow.html @@ -1,114 +1,202 @@ - - - - + + 4. More Control Flow Tools — Python 3.9.5 documentation - - + + - + - - - - - - + + + + + + - + - - - - - - - - - - - - + + + +
- -
-

4. More Control Flow Tools

-

Besides the while statement just introduced, Python uses the usual -flow control statements known from other languages, with some twists.

-
-

4.1. if Statements

-

Perhaps the most well-known statement type is the if statement. For -example:

-
>>> x = int(input("Please enter an integer: "))
+            
+ +

+ 4. More Control Flow Tools +

+

+ Besides the + while + statement just introduced, Python uses the usual flow control + statements known from other languages, with some twists. +

+
+ +

+ 4.1. if + Statements +

+

+ Perhaps the most well-known statement type is the + if + statement. For example: +

+
+
+
>>> x = int(input("Please enter an integer: "))
 Please enter an integer: 42
 >>> if x < 0:
 ...     x = 0
@@ -121,23 +209,99 @@ 

Navigation

... print('More') ... More -
-
-

There can be zero or more elif parts, and the else part is -optional. The keyword ‘elif’ is short for ‘else if’, and is useful -to avoid excessive indentation. An ifelif … -elif … sequence is a substitute for the switch or -case statements found in other languages.

-
-
-

4.2. for Statements

-

The for statement in Python differs a bit from what you may be used -to in C or Pascal. Rather than always iterating over an arithmetic progression -of numbers (like in Pascal), or giving the user the ability to define both the -iteration step and halting condition (as C), Python’s for statement -iterates over the items of any sequence (a list or a string), in the order that -they appear in the sequence. For example (no pun intended):

-
>>> # Measure some strings:
+
+
+
+

+ There can be zero or more + elif + parts, and the + else + part is optional. The keyword ‘elif’ is short for ‘else if’, and is useful to avoid excessive + indentation. An + if + … + elif + … + elif + … sequence is a substitute for the + switch + or + case + statements found in other languages. +

+
+
+ +

+ 4.2. for + Statements +

+

+ The + for + statement in Python differs a bit from what you may be used to + in C or Pascal. Rather than always iterating over an + arithmetic progression of numbers (like in Pascal), or giving + the user the ability to define both the iteration step and + halting condition (as C), Python’s + for + statement iterates over the items of any sequence (a list or a + string), in the order that they appear in the sequence. For + example (no pun intended): +

+
+
+
>>> # Measure some strings:
 ... words = ['cat', 'window', 'defenestrate']
 >>> for w in words:
 ...     print(w, len(w))
@@ -145,12 +309,18 @@ 

Navigation

cat 3 window 6 defenestrate 12 -
-
-

Code that modifies a collection while iterating over that same collection can -be tricky to get right. Instead, it is usually more straight-forward to loop -over a copy of the collection or to create a new collection:

-
# Strategy:  Iterate over a copy
+
+
+
+

+ Code that modifies a collection while iterating over that same + collection can be tricky to get right. Instead, it is usually + more straight-forward to loop over a copy of the collection or + to create a new collection: +

+
+
+
# Strategy:  Iterate over a copy
 for user, status in users.copy().items():
     if status == 'inactive':
         del users[user]
@@ -160,14 +330,45 @@ 

Navigation

for user, status in users.items(): if status == 'active': active_users[user] = status -
-
-
-
-

4.3. The range() Function

-

If you do need to iterate over a sequence of numbers, the built-in function -range() comes in handy. It generates arithmetic progressions:

-
>>> for i in range(5):
+
+
+
+
+
+ +

+ 4.3. The + range() + Function +

+

+ If you do need to iterate over a sequence of numbers, the + built-in function + range() + comes in handy. It generates arithmetic progressions: +

+
+
+
>>> for i in range(5):
 ...     print(i)
 ...
 0
@@ -175,13 +376,22 @@ 

Navigation

2 3 4 -
-
-

The given end point is never part of the generated sequence; range(10) generates -10 values, the legal indices for items of a sequence of length 10. It -is possible to let the range start at another number, or to specify a different -increment (even negative; sometimes this is called the ‘step’):

-
range(5, 10)
+
+
+
+

+ The given end point is never part of the generated sequence; + range(10) + generates 10 values, the legal indices for items of a sequence + of length 10. It is possible to let the range start at another + number, or to specify a different increment (even negative; + sometimes this is called the ‘step’): +

+
+
+
range(5, 10)
    5, 6, 7, 8, 9
 
 range(0, 10, 3)
@@ -189,11 +399,33 @@ 

Navigation

range(-10, -100, -30) -10, -40, -70 -
-
-

To iterate over the indices of a sequence, you can combine range() and -len() as follows:

-
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
+
+
+
+

+ To iterate over the indices of a sequence, you can combine + range() + and + len() + as follows: +

+
+
+
>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
 >>> for i in range(len(a)):
 ...     print(i, a[i])
 ...
@@ -202,48 +434,209 @@ 

Navigation

2 a 3 little 4 lamb -
-
-

In most such cases, however, it is convenient to use the enumerate() -function, see Looping Techniques.

-

A strange thing happens if you just print a range:

-
>>> print(range(10))
+
+
+
+

+ In most such cases, however, it is convenient to use the + enumerate() + function, see + Looping Techniques. +

+

A strange thing happens if you just print a range:

+
+
+
>>> print(range(10))
 range(0, 10)
-
-
-

In many ways the object returned by range() behaves as if it is a list, -but in fact it isn’t. It is an object which returns the successive items of -the desired sequence when you iterate over it, but it doesn’t really make -the list, thus saving space.

-

We say such an object is iterable, that is, suitable as a target for -functions and constructs that expect something from which they can -obtain successive items until the supply is exhausted. We have seen that -the for statement is such a construct, while an example of a function -that takes an iterable is sum():

-
>>> sum(range(4))  # 0 + 1 + 2 + 3
+
+
+
+

+ In many ways the object returned by + range() + behaves as if it is a list, but in fact it isn’t. It is an + object which returns the successive items of the desired + sequence when you iterate over it, but it doesn’t really make + the list, thus saving space. +

+

+ We say such an object is + iterable, that is, suitable as a target for functions and constructs + that expect something from which they can obtain successive + items until the supply is exhausted. We have seen that the + for + statement is such a construct, while an example of a function + that takes an iterable is + sum(): +

+
+
+
>>> sum(range(4))  # 0 + 1 + 2 + 3
 6
-
-
-

Later we will see more functions that return iterables and take iterables as -arguments. Lastly, maybe you are curious about how to get a list from a range. -Here is the solution:

-
>>> list(range(4))
+
+
+
+

+ Later we will see more functions that return iterables and + take iterables as arguments. Lastly, maybe you are curious + about how to get a list from a range. Here is the solution: +

+
+
+
>>> list(range(4))
 [0, 1, 2, 3]
-
-
-

In chapter Data Structures, we will discuss in more detail about -list().

-
-
-

4.4. break and continue Statements, and else Clauses on Loops

-

The break statement, like in C, breaks out of the innermost enclosing -for or while loop.

-

Loop statements may have an else clause; it is executed when the loop -terminates through exhaustion of the iterable (with for) or when the -condition becomes false (with while), but not when the loop is -terminated by a break statement. This is exemplified by the -following loop, which searches for prime numbers:

-
>>> for n in range(2, 10):
+
+
+
+

+ In chapter + Data Structures, we will discuss in more detail about + list(). +

+
+
+ +

+ 4.4. break + and + continue + Statements, and + else + Clauses on Loops +

+

+ The + break + statement, like in C, breaks out of the innermost enclosing + for + or + while + loop. +

+

+ Loop statements may have an + else + clause; it is executed when the loop terminates through + exhaustion of the iterable (with + for) or when the condition becomes false (with + while), but not when the loop is terminated by a + break + statement. This is exemplified by the following loop, which + searches for prime numbers: +

+
+
+
>>> for n in range(2, 10):
 ...     for x in range(2, n):
 ...         if n % x == 0:
 ...             print(n, 'equals', x, '*', n//x)
@@ -260,19 +653,108 @@ 

Navigation

7 is a prime number 8 equals 2 * 4 9 equals 3 * 3 -
-
-

(Yes, this is the correct code. Look closely: the else clause belongs to -the for loop, not the if statement.)

-

When used with a loop, the else clause has more in common with the -else clause of a try statement than it does with that of -if statements: a try statement’s else clause runs -when no exception occurs, and a loop’s else clause runs when no break -occurs. For more on the try statement and exceptions, see -Handling Exceptions.

-

The continue statement, also borrowed from C, continues with the next -iteration of the loop:

-
>>> for num in range(2, 10):
+
+
+
+

+ (Yes, this is the correct code. Look closely: the + else + clause belongs to the + for + loop, not the + if + statement.) +

+

+ When used with a loop, the + else + clause has more in common with the + else + clause of a + try + statement than it does with that of + if + statements: a + try + statement’s + else + clause runs when no exception occurs, and a loop’s + else + clause runs when no + break + occurs. For more on the + try + statement and exceptions, see + Handling Exceptions. +

+

+ The + continue + statement, also borrowed from C, continues with the next + iteration of the loop: +

+
+
+
>>> for num in range(2, 10):
 ...     if num % 2 == 0:
 ...         print("Found an even number", num)
 ...         continue
@@ -286,38 +768,101 @@ 

Navigation

Found an odd number 7 Found an even number 8 Found an odd number 9 -
-
-
-
-

4.5. pass Statements

-

The pass statement does nothing. It can be used when a statement is -required syntactically but the program requires no action. For example:

-
>>> while True:
+
+
+
+
+
+ +

+ 4.5. pass + Statements +

+

+ The + pass + statement does nothing. It can be used when a statement is + required syntactically but the program requires no action. For + example: +

+
+
+
>>> while True:
 ...     pass  # Busy-wait for keyboard interrupt (Ctrl+C)
 ...
-
-
-

This is commonly used for creating minimal classes:

-
>>> class MyEmptyClass:
+
+
+
+

This is commonly used for creating minimal classes:

+
+
+
>>> class MyEmptyClass:
 ...     pass
 ...
-
-
-

Another place pass can be used is as a place-holder for a function or -conditional body when you are working on new code, allowing you to keep thinking -at a more abstract level. The pass is silently ignored:

-
>>> def initlog(*args):
+
+
+
+

+ Another place + pass + can be used is as a place-holder for a function or conditional + body when you are working on new code, allowing you to keep + thinking at a more abstract level. The + pass + is silently ignored: +

+
+
+
>>> def initlog(*args):
 ...     pass   # Remember to implement this!
 ...
-
-
-
-
-

4.6. Defining Functions

-

We can create a function that writes the Fibonacci series to an arbitrary -boundary:

-
>>> def fib(n):    # write Fibonacci series up to n
+
+
+
+
+
+ +

+ 4.6. Defining Functions +

+

+ We can create a function that writes the Fibonacci series to + an arbitrary boundary: +

+
+
+
>>> def fib(n):    # write Fibonacci series up to n
 ...     """Print a Fibonacci series up to n."""
 ...     a, b = 0, 1
 ...     while a < n:
@@ -328,59 +873,148 @@ 

Navigation

>>> # Now call the function we just defined: ... fib(2000) 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 -
-
-

The keyword def introduces a function definition. It must be -followed by the function name and the parenthesized list of formal parameters. -The statements that form the body of the function start at the next line, and -must be indented.

-

The first statement of the function body can optionally be a string literal; -this string literal is the function’s documentation string, or docstring. -(More about docstrings can be found in the section Documentation Strings.) -There are tools which use docstrings to automatically produce online or printed -documentation, or to let the user interactively browse through code; it’s good -practice to include docstrings in code that you write, so make a habit of it.

-

The execution of a function introduces a new symbol table used for the local -variables of the function. More precisely, all variable assignments in a -function store the value in the local symbol table; whereas variable references -first look in the local symbol table, then in the local symbol tables of -enclosing functions, then in the global symbol table, and finally in the table -of built-in names. Thus, global variables and variables of enclosing functions -cannot be directly assigned a value within a function (unless, for global -variables, named in a global statement, or, for variables of enclosing -functions, named in a nonlocal statement), although they may be -referenced.

-

The actual parameters (arguments) to a function call are introduced in the local -symbol table of the called function when it is called; thus, arguments are -passed using call by value (where the value is always an object reference, -not the value of the object). 1 When a function calls another function, -or calls itself recursively, a new -local symbol table is created for that call.

-

A function definition associates the function name with the function object in -the current symbol table. The interpreter recognizes the object pointed to by -that name as a user-defined function. Other names can also point to that same -function object and can also be used to access the function:

-
>>> fib
+
+
+
+

+ The keyword + def + introduces a function definition. It must be followed + by the function name and the parenthesized list of formal + parameters. The statements that form the body of the function + start at the next line, and must be indented. +

+

+ The first statement of the function body can optionally be a + string literal; this string literal is the function’s + documentation string, or docstring. (More + about docstrings can be found in the section + Documentation Strings.) There are tools which use docstrings to automatically + produce online or printed documentation, or to let the user + interactively browse through code; it’s good practice to + include docstrings in code that you write, so make a habit of + it. +

+

+ The execution of a function introduces a new symbol + table used for the local variables of the function. More + precisely, all variable assignments in a function store the + value in the local symbol table; whereas variable references + first look in the local symbol table, then in the local symbol + tables of enclosing functions, then in the global symbol + table, and finally in the table of built-in names. Thus, + global variables and variables of enclosing functions cannot + be directly assigned a value within a function (unless, for + global variables, named in a + global + statement, or, for variables of enclosing functions, named in + a + nonlocal + statement), although they may be referenced. +

+

+ The actual parameters (arguments) to a function call are + introduced in the local symbol table of the called function + when it is called; thus, arguments are passed using + call by value (where the value is always an + object reference, not the value of the object). + 1 + When a function calls another function, or calls itself + recursively, a new local symbol table is created for that + call. +

+

+ A function definition associates the function name with the + function object in the current symbol table. The interpreter + recognizes the object pointed to by that name as a + user-defined function. Other names can also point to that same + function object and can also be used to access the function: +

+
+
+
>>> fib
 <function fib at 10042ed0>
 >>> f = fib
 >>> f(100)
 0 1 1 2 3 5 8 13 21 34 55 89
-
-
-

Coming from other languages, you might object that fib is not a function but -a procedure since it doesn’t return a value. In fact, even functions without a -return statement do return a value, albeit a rather boring one. This -value is called None (it’s a built-in name). Writing the value None is -normally suppressed by the interpreter if it would be the only value written. -You can see it if you really want to using print():

-
>>> fib(0)
+
+
+
+

+ Coming from other languages, you might object that + fib + is not a function but a procedure since it doesn’t return a + value. In fact, even functions without a + return + statement do return a value, albeit a rather boring one. This + value is called + None + (it’s a built-in name). Writing the value + None + is normally suppressed by the interpreter if it would be the + only value written. You can see it if you really want to using + print(): +

+
+
+
>>> fib(0)
 >>> print(fib(0))
 None
-
-
-

It is simple to write a function that returns a list of the numbers of the -Fibonacci series, instead of printing it:

-
>>> def fib2(n):  # return Fibonacci series up to n
+
+
+
+

+ It is simple to write a function that returns a list of the + numbers of the Fibonacci series, instead of printing it: +

+
+
+
>>> def fib2(n):  # return Fibonacci series up to n
 ...     """Return a list containing the Fibonacci series up to n."""
 ...     result = []
 ...     a, b = 0, 1
@@ -392,35 +1026,133 @@ 

Navigation

>>> f100 = fib2(100) # call it >>> f100 # write the result [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] -
-
-

This example, as usual, demonstrates some new Python features:

-
    -
  • The return statement returns with a value from a function. -return without an expression argument returns None. Falling off -the end of a function also returns None.

  • -
  • The statement result.append(a) calls a method of the list object -result. A method is a function that ‘belongs’ to an object and is named -obj.methodname, where obj is some object (this may be an expression), -and methodname is the name of a method that is defined by the object’s type. -Different types define different methods. Methods of different types may have -the same name without causing ambiguity. (It is possible to define your own -object types and methods, using classes, see Classes) -The method append() shown in the example is defined for list objects; it -adds a new element at the end of the list. In this example it is equivalent to -result = result + [a], but more efficient.

  • -
-
-
-

4.7. More on Defining Functions

-

It is also possible to define functions with a variable number of arguments. -There are three forms, which can be combined.

-
-

4.7.1. Default Argument Values

-

The most useful form is to specify a default value for one or more arguments. -This creates a function that can be called with fewer arguments than it is -defined to allow. For example:

-
def ask_ok(prompt, retries=4, reminder='Please try again!'):
+
+
+
+

+ This example, as usual, demonstrates some new Python features: +

+
    +
  • +

    + The + return + statement returns with a value from a function. + return + without an expression argument returns + None. Falling off the end of a function also returns + None. +

    +
  • +
  • +

    + The statement + result.append(a) + calls a method of the list object + result. A method is a function that ‘belongs’ to an object and + is named + obj.methodname, where + obj + is some object (this may be an expression), and + methodname + is the name of a method that is defined by the object’s + type. Different types define different methods. Methods of + different types may have the same name without causing + ambiguity. (It is possible to define your own object types + and methods, using classes, see + Classes) The method + append() + shown in the example is defined for list objects; it adds + a new element at the end of the list. In this example it + is equivalent to + result + = + result + + + [a], but more efficient. +

    +
  • +
+
+
+ +

+ 4.7. More on Defining + Functions +

+

+ It is also possible to define functions with a variable number + of arguments. There are three forms, which can be combined. +

+
+ +

+ 4.7.1. Default Argument + Values +

+

+ The most useful form is to specify a default value for one + or more arguments. This creates a function that can be + called with fewer arguments than it is defined to allow. For + example: +

+
+
+
def ask_ok(prompt, retries=4, reminder='Please try again!'):
     while True:
         ok = input(prompt)
         if ok in ('y', 'ye', 'yes'):
@@ -431,113 +1163,280 @@ 

Navigation

if retries < 0: raise ValueError('invalid user response') print(reminder) -
-
-

This function can be called in several ways:

-
    -
  • giving only the mandatory argument: -ask_ok('Do you really want to quit?')

  • -
  • giving one of the optional arguments: -ask_ok('OK to overwrite the file?', 2)

  • -
  • or even giving all arguments: -ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')

  • -
-

This example also introduces the in keyword. This tests whether or -not a sequence contains a certain value.

-

The default values are evaluated at the point of function definition in the -defining scope, so that

-
i = 5
+
+
+
+

This function can be called in several ways:

+
    +
  • +

    + giving only the mandatory argument: + ask_ok('Do + you + really + want + to + quit?') +

    +
  • +
  • +

    + giving one of the optional arguments: + ask_ok('OK + to + overwrite + the + file?', + 2) +

    +
  • +
  • +

    + or even giving all arguments: + ask_ok('OK + to + overwrite + the + file?', + 2, + 'Come + on, + only + yes + or + no!') +

    +
  • +
+

+ This example also introduces the + in + keyword. This tests whether or not a sequence contains a + certain value. +

+

+ The default values are evaluated at the point of function + definition in the defining scope, so that +

+
+
+
i = 5
 
 def f(arg=i):
     print(arg)
 
 i = 6
 f()
-
-
-

will print 5.

-

Important warning: The default value is evaluated only once. This makes a -difference when the default is a mutable object such as a list, dictionary, or -instances of most classes. For example, the following function accumulates the -arguments passed to it on subsequent calls:

-
def f(a, L=[]):
+
+
+
+

+ will print + 5. +

+

+ Important warning: The default value is + evaluated only once. This makes a difference when the + default is a mutable object such as a list, dictionary, or + instances of most classes. For example, the following + function accumulates the arguments passed to it on + subsequent calls: +

+
+
+
def f(a, L=[]):
     L.append(a)
     return L
 
 print(f(1))
 print(f(2))
 print(f(3))
-
-
-

This will print

-
[1]
+
+
+
+

This will print

+
+
+
[1]
 [1, 2]
 [1, 2, 3]
-
-
-

If you don’t want the default to be shared between subsequent calls, you can -write the function like this instead:

-
def f(a, L=None):
+
+
+
+

+ If you don’t want the default to be shared between + subsequent calls, you can write the function like this + instead: +

+
+
+
def f(a, L=None):
     if L is None:
         L = []
     L.append(a)
     return L
-
-
-
-
-

4.7.2. Keyword Arguments

-

Functions can also be called using keyword arguments -of the form kwarg=value. For instance, the following function:

-
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
+
+
+
+
+
+ +

+ 4.7.2. Keyword + Arguments +

+

+ Functions can also be called using + keyword arguments + of the form + kwarg=value. For instance, the following function: +

+
+
+
def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):
     print("-- This parrot wouldn't", action, end=' ')
     print("if you put", voltage, "volts through it.")
     print("-- Lovely plumage, the", type)
     print("-- It's", state, "!")
-
-
-

accepts one required argument (voltage) and three optional arguments -(state, action, and type). This function can be called in any -of the following ways:

-
parrot(1000)                                          # 1 positional argument
+
+
+
+

+ accepts one required argument (voltage) and three optional arguments (state, + action, and + type). This function can be called in any of the following + ways: +

+
+
+
parrot(1000)                                          # 1 positional argument
 parrot(voltage=1000)                                  # 1 keyword argument
 parrot(voltage=1000000, action='VOOOOOM')             # 2 keyword arguments
 parrot(action='VOOOOOM', voltage=1000000)             # 2 keyword arguments
 parrot('a million', 'bereft of life', 'jump')         # 3 positional arguments
 parrot('a thousand', state='pushing up the daisies')  # 1 positional, 1 keyword
-
-
-

but all the following calls would be invalid:

-
parrot()                     # required argument missing
+
+
+
+

but all the following calls would be invalid:

+
+
+
parrot()                     # required argument missing
 parrot(voltage=5.0, 'dead')  # non-keyword argument after a keyword argument
 parrot(110, voltage=220)     # duplicate value for the same argument
 parrot(actor='John Cleese')  # unknown keyword argument
-
-
-

In a function call, keyword arguments must follow positional arguments. -All the keyword arguments passed must match one of the arguments -accepted by the function (e.g. actor is not a valid argument for the -parrot function), and their order is not important. This also includes -non-optional arguments (e.g. parrot(voltage=1000) is valid too). -No argument may receive a value more than once. -Here’s an example that fails due to this restriction:

-
>>> def function(a):
+
+
+
+

+ In a function call, keyword arguments must follow positional + arguments. All the keyword arguments passed must match one + of the arguments accepted by the function (e.g. + actor + is not a valid argument for the + parrot + function), and their order is not important. This also + includes non-optional arguments (e.g. + parrot(voltage=1000) + is valid too). No argument may receive a value more than + once. Here’s an example that fails due to this restriction: +

+
+
+
>>> def function(a):
 ...     pass
 ...
 >>> function(0, a=0)
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: function() got multiple values for keyword argument 'a'
-
-
-

When a final formal parameter of the form **name is present, it receives a -dictionary (see Mapping Types — dict) containing all keyword arguments except for -those corresponding to a formal parameter. This may be combined with a formal -parameter of the form *name (described in the next subsection) which -receives a tuple containing the positional -arguments beyond the formal parameter list. (*name must occur -before **name.) For example, if we define a function like this:

-
def cheeseshop(kind, *arguments, **keywords):
+
+
+
+

+ When a final formal parameter of the form + **name + is present, it receives a dictionary (see + Mapping Types — dict) containing all keyword arguments except for those + corresponding to a formal parameter. This may be combined + with a formal parameter of the form + *name + (described in the next subsection) which receives a + tuple + containing the positional arguments beyond the formal + parameter list. (*name + must occur before + **name.) For example, if we define a function like this: +

+
+
+
def cheeseshop(kind, *arguments, **keywords):
     print("-- Do you have any", kind, "?")
     print("-- I'm sorry, we're all out of", kind)
     for arg in arguments:
@@ -545,18 +1444,24 @@ 

Navigation

print("-" * 40) for kw in keywords: print(kw, ":", keywords[kw]) -
-
-

It could be called like this:

-
cheeseshop("Limburger", "It's very runny, sir.",
+
+
+
+

It could be called like this:

+
+
+
cheeseshop("Limburger", "It's very runny, sir.",
            "It's really very, VERY runny, sir.",
            shopkeeper="Michael Palin",
            client="John Cleese",
            sketch="Cheese Shop Sketch")
-
-
-

and of course it would print:

-
-- Do you have any Limburger ?
+
+
+
+

and of course it would print:

+
+
+
-- Do you have any Limburger ?
 -- I'm sorry, we're all out of Limburger
 It's very runny, sir.
 It's really very, VERY runny, sir.
@@ -564,58 +1469,168 @@ 

Navigation

shopkeeper : Michael Palin client : John Cleese sketch : Cheese Shop Sketch -
-
-

Note that the order in which the keyword arguments are printed is guaranteed -to match the order in which they were provided in the function call.

-
-
-

4.7.3. Special parameters

-

By default, arguments may be passed to a Python function either by position -or explicitly by keyword. For readability and performance, it makes sense to -restrict the way arguments can be passed so that a developer need only look -at the function definition to determine if items are passed by position, by -position or keyword, or by keyword.

-

A function definition may look like:

-
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
+
+
+
+

+ Note that the order in which the keyword arguments are + printed is guaranteed to match the order in which they were + provided in the function call. +

+
+
+

+ 4.7.3. Special + parameters +

+

+ By default, arguments may be passed to a Python function + either by position or explicitly by keyword. For readability + and performance, it makes sense to restrict the way + arguments can be passed so that a developer need only look + at the function definition to determine if items are passed + by position, by position or keyword, or by keyword. +

+

A function definition may look like:

+
+
+
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
       -----------    ----------     ----------
         |             |                  |
         |        Positional or keyword   |
         |                                - Keyword only
          -- Positional only
-
-
-

where / and * are optional. If used, these symbols indicate the kind of -parameter by how the arguments may be passed to the function: -positional-only, positional-or-keyword, and keyword-only. Keyword parameters -are also referred to as named parameters.

-
-

4.7.3.1. Positional-or-Keyword Arguments

-

If / and * are not present in the function definition, arguments may -be passed to a function by position or by keyword.

-
-
-

4.7.3.2. Positional-Only Parameters

-

Looking at this in a bit more detail, it is possible to mark certain parameters -as positional-only. If positional-only, the parameters’ order matters, and -the parameters cannot be passed by keyword. Positional-only parameters are -placed before a / (forward-slash). The / is used to logically -separate the positional-only parameters from the rest of the parameters. -If there is no / in the function definition, there are no positional-only -parameters.

-

Parameters following the / may be positional-or-keyword or keyword-only.

-
-
-

4.7.3.3. Keyword-Only Arguments

-

To mark parameters as keyword-only, indicating the parameters must be passed -by keyword argument, place an * in the arguments list just before the first -keyword-only parameter.

-
-
-

4.7.3.4. Function Examples

-

Consider the following example function definitions paying close attention to the -markers / and *:

-
>>> def standard_arg(arg):
+
+
+
+

+ where + / + and + * + are optional. If used, these symbols indicate the kind of + parameter by how the arguments may be passed to the + function: positional-only, positional-or-keyword, and + keyword-only. Keyword parameters are also referred to as + named parameters. +

+
+

+ 4.7.3.1. Positional-or-Keyword Arguments +

+

+ If + / + and + * + are not present in the function definition, arguments may + be passed to a function by position or by keyword. +

+
+
+

+ 4.7.3.2. Positional-Only Parameters +

+

+ Looking at this in a bit more detail, it is possible to + mark certain parameters as positional-only. If + positional-only, the parameters’ order matters, + and the parameters cannot be passed by keyword. + Positional-only parameters are placed before a + / + (forward-slash). The + / + is used to logically separate the positional-only + parameters from the rest of the parameters. If there is no + / + in the function definition, there are no positional-only + parameters. +

+

+ Parameters following the + / + may be positional-or-keyword or + keyword-only. +

+
+
+

+ 4.7.3.3. Keyword-Only + Arguments +

+

+ To mark parameters as keyword-only, indicating + the parameters must be passed by keyword argument, place + an + * + in the arguments list just before the first + keyword-only parameter. +

+
+
+

+ 4.7.3.4. Function + Examples +

+

+ Consider the following example function definitions paying + close attention to the markers + / + and + *: +

+
+
+
>>> def standard_arg(arg):
 ...     print(arg)
 ...
 >>> def pos_only_arg(arg, /):
@@ -626,43 +1641,81 @@ 

4.7.3.4. Function Examples... >>> def combined_example(pos_only, /, standard, *, kwd_only): ... print(pos_only, standard, kwd_only) -

-
-

The first function definition, standard_arg, the most familiar form, -places no restrictions on the calling convention and arguments may be -passed by position or keyword:

-
>>> standard_arg(2)
+
+
+
+

+ The first function definition, + standard_arg, the most familiar form, places no restrictions on the + calling convention and arguments may be passed by position + or keyword: +

+
+
+
>>> standard_arg(2)
 2
 
 >>> standard_arg(arg=2)
 2
-
-
-

The second function pos_only_arg is restricted to only use positional -parameters as there is a / in the function definition:

-
>>> pos_only_arg(1)
+
+
+
+

+ The second function + pos_only_arg + is restricted to only use positional parameters as there + is a + / + in the function definition: +

+
+
+
>>> pos_only_arg(1)
 1
 
 >>> pos_only_arg(arg=1)
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: pos_only_arg() got an unexpected keyword argument 'arg'
-
-
-

The third function kwd_only_args only allows keyword arguments as indicated -by a * in the function definition:

-
>>> kwd_only_arg(3)
+
+
+
+

+ The third function + kwd_only_args + only allows keyword arguments as indicated by a + * + in the function definition: +

+
+
+
>>> kwd_only_arg(3)
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: kwd_only_arg() takes 0 positional arguments but 1 was given
 
 >>> kwd_only_arg(arg=3)
 3
-
-
-

And the last uses all three calling conventions in the same function -definition:

-
>>> combined_example(1, 2, 3)
+
+
+
+

+ And the last uses all three calling conventions in the + same function definition: +

+
-

Finally, consider this function definition which has a potential collision between the positional argument name and **kwds which has name as a key:

-
def foo(name, **kwds):
+
+
+
+

+ Finally, consider this function definition which has a + potential collision between the positional argument + name + and + **kwds + which has + name + as a key: +

+
+
+
def foo(name, **kwds):
     return 'name' in kwds
-
-
-

There is no possible call that will make it return True as the keyword 'name' -will always bind to the first parameter. For example:

-
>>> foo(1, **{'name': 2})
+
+
+
+

+ There is no possible call that will make it return + True + as the keyword + 'name' + will always bind to the first parameter. For example: +

+
+
+
>>> foo(1, **{'name': 2})
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 TypeError: foo() got multiple values for argument 'name'
 >>>
-
-
-

But using / (positional only arguments), it is possible since it allows name as a positional argument and 'name' as a key in the keyword arguments:

-
def foo(name, /, **kwds):
+
+
+
+

+ But using + / + (positional only arguments), it is possible since it + allows + name + as a positional argument and + 'name' + as a key in the keyword arguments: +

+
+
+
def foo(name, /, **kwds):
     return 'name' in kwds
 >>> foo(1, **{'name': 2})
 True
-
-
-

In other words, the names of positional-only parameters can be used in -**kwds without ambiguity.

-
-
-

4.7.3.5. Recap

-

The use case will determine which parameters to use in the function definition:

-
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
-
-
-

As guidance:

-
    -
  • Use positional-only if you want the name of the parameters to not be -available to the user. This is useful when parameter names have no real -meaning, if you want to enforce the order of the arguments when the function -is called or if you need to take some positional parameters and arbitrary -keywords.

  • -
  • Use keyword-only when names have meaning and the function definition is -more understandable by being explicit with names or you want to prevent -users relying on the position of the argument being passed.

  • -
  • For an API, use positional-only to prevent breaking API changes -if the parameter’s name is modified in the future.

  • -
-
-
-
-

4.7.4. Arbitrary Argument Lists

-

Finally, the least frequently used option is to specify that a function can be -called with an arbitrary number of arguments. These arguments will be wrapped -up in a tuple (see Tuples and Sequences). Before the variable number of arguments, -zero or more normal arguments may occur.

-
def write_multiple_items(file, separator, *args):
+
+
+
+

+ In other words, the names of positional-only parameters + can be used in + **kwds + without ambiguity. +

+
+
+

+ 4.7.3.5. Recap +

+

+ The use case will determine which parameters to use in the + function definition: +

+
+
+
def f(pos1, pos2, /, pos_or_kwd, *, kwd1, kwd2):
+
+
+
+

As guidance:

+
    +
  • +

    + Use positional-only if you want the name of the + parameters to not be available to the user. This is + useful when parameter names have no real meaning, if + you want to enforce the order of the arguments when + the function is called or if you need to take some + positional parameters and arbitrary keywords. +

    +
  • +
  • +

    + Use keyword-only when names have meaning and the + function definition is more understandable by being + explicit with names or you want to prevent users + relying on the position of the argument being passed. +

    +
  • +
  • +

    + For an API, use positional-only to prevent breaking + API changes if the parameter’s name is modified in the + future. +

    +
  • +
+
+
+
+ +

+ 4.7.4. Arbitrary + Argument Lists +

+

+ Finally, the least frequently used option is to specify that + a function can be called with an arbitrary number of + arguments. These arguments will be wrapped up in a tuple + (see + Tuples and Sequences). Before the variable number of arguments, zero or more + normal arguments may occur. +

+
+
+
def write_multiple_items(file, separator, *args):
     file.write(separator.join(args))
-
-
-

Normally, these variadic arguments will be last in the list of formal -parameters, because they scoop up all remaining input arguments that are -passed to the function. Any formal parameters which occur after the *args -parameter are ‘keyword-only’ arguments, meaning that they can only be used as -keywords rather than positional arguments.

-
>>> def concat(*args, sep="/"):
+
+
+
+

+ Normally, these + variadic + arguments will be last in the list of formal parameters, + because they scoop up all remaining input arguments that are + passed to the function. Any formal parameters which occur + after the + *args + parameter are ‘keyword-only’ arguments, meaning that they + can only be used as keywords rather than positional + arguments. +

+
+
+
>>> def concat(*args, sep="/"):
 ...     return sep.join(args)
 ...
 >>> concat("earth", "mars", "venus")
 'earth/mars/venus'
 >>> concat("earth", "mars", "venus", sep=".")
 'earth.mars.venus'
-
-
-
-
-

4.7.5. Unpacking Argument Lists

-

The reverse situation occurs when the arguments are already in a list or tuple -but need to be unpacked for a function call requiring separate positional -arguments. For instance, the built-in range() function expects separate -start and stop arguments. If they are not available separately, write the -function call with the *-operator to unpack the arguments out of a list -or tuple:

-
>>> list(range(3, 6))            # normal call with separate arguments
+
+
+
+
+
+ +

+ 4.7.5. Unpacking + Argument Lists +

+

+ The reverse situation occurs when the arguments are already + in a list or tuple but need to be unpacked for a function + call requiring separate positional arguments. For instance, + the built-in + range() + function expects separate start and + stop arguments. If they are not available + separately, write the function call with the + *-operator to unpack the arguments out of a list or tuple: +

+
+
+
>>> list(range(3, 6))            # normal call with separate arguments
 [3, 4, 5]
 >>> args = [3, 6]
 >>> list(range(*args))            # call with arguments unpacked from a list
 [3, 4, 5]
-
-
-

In the same fashion, dictionaries can deliver keyword arguments with the -**-operator:

-
>>> def parrot(voltage, state='a stiff', action='voom'):
+
+
+
+

+ In the same fashion, dictionaries can deliver keyword + arguments with the + **-operator: +

+
+
+
>>> def parrot(voltage, state='a stiff', action='voom'):
 ...     print("-- This parrot wouldn't", action, end=' ')
 ...     print("if you put", voltage, "volts through it.", end=' ')
 ...     print("E's", state, "!")
@@ -774,19 +1978,52 @@ 

4.7.3.5. Recap>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"} >>> parrot(**d) -- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised ! -

-
-
-
-

4.7.6. Lambda Expressions

-

Small anonymous functions can be created with the lambda keyword. -This function returns the sum of its two arguments: lambda a, b: a+b. -Lambda functions can be used wherever function objects are required. They are -syntactically restricted to a single expression. Semantically, they are just -syntactic sugar for a normal function definition. Like nested function -definitions, lambda functions can reference variables from the containing -scope:

-
>>> def make_incrementor(n):
+
+
+
+
+
+ +

+ 4.7.6. Lambda + Expressions +

+

+ Small anonymous functions can be created with the + lambda + keyword. This function returns the sum of its two arguments: + lambda + a, b: + a+b. Lambda functions can be used wherever function objects + are required. They are syntactically restricted to a single + expression. Semantically, they are just syntactic sugar for + a normal function definition. Like nested function + definitions, lambda functions can reference variables from + the containing scope: +

+
+
+
>>> def make_incrementor(n):
 ...     return lambda x: x + n
 ...
 >>> f = make_incrementor(42)
@@ -794,43 +2031,75 @@ 

4.7.3.5. Recap42 >>> f(1) 43 -

-
-

The above example uses a lambda expression to return a function. Another use -is to pass a small function as an argument:

-
>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
+
+
+
+

+ The above example uses a lambda expression to return a + function. Another use is to pass a small function as an + argument: +

+
+
+
>>> pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
 >>> pairs.sort(key=lambda pair: pair[1])
 >>> pairs
 [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
-
-
-
-
-

4.7.7. Documentation Strings

-

Here are some conventions about the content and formatting of documentation -strings.

-

The first line should always be a short, concise summary of the object’s -purpose. For brevity, it should not explicitly state the object’s name or type, -since these are available by other means (except if the name happens to be a -verb describing a function’s operation). This line should begin with a capital -letter and end with a period.

-

If there are more lines in the documentation string, the second line should be -blank, visually separating the summary from the rest of the description. The -following lines should be one or more paragraphs describing the object’s calling -conventions, its side effects, etc.

-

The Python parser does not strip indentation from multi-line string literals in -Python, so tools that process documentation have to strip indentation if -desired. This is done using the following convention. The first non-blank line -after the first line of the string determines the amount of indentation for -the entire documentation string. (We can’t use the first line since it is -generally adjacent to the string’s opening quotes so its indentation is not -apparent in the string literal.) Whitespace “equivalent” to this indentation is -then stripped from the start of all lines of the string. Lines that are -indented less should not occur, but if they occur all their leading whitespace -should be stripped. Equivalence of whitespace should be tested after expansion -of tabs (to 8 spaces, normally).

-

Here is an example of a multi-line docstring:

-
>>> def my_function():
+
+
+
+
+
+ +

+ 4.7.7. Documentation + Strings +

+

+ Here are some conventions about the content and formatting + of documentation strings. +

+

+ The first line should always be a short, concise summary of + the object’s purpose. For brevity, it should not explicitly + state the object’s name or type, since these are available + by other means (except if the name happens to be a verb + describing a function’s operation). This line should begin + with a capital letter and end with a period. +

+

+ If there are more lines in the documentation string, the + second line should be blank, visually separating the summary + from the rest of the description. The following lines should + be one or more paragraphs describing the object’s calling + conventions, its side effects, etc. +

+

+ The Python parser does not strip indentation from multi-line + string literals in Python, so tools that process + documentation have to strip indentation if desired. This is + done using the following convention. The first non-blank + line after the first line of the string determines + the amount of indentation for the entire documentation + string. (We can’t use the first line since it is generally + adjacent to the string’s opening quotes so its indentation + is not apparent in the string literal.) Whitespace + “equivalent” to this indentation is then stripped from the + start of all lines of the string. Lines that are indented + less should not occur, but if they occur all their leading + whitespace should be stripped. Equivalence of whitespace + should be tested after expansion of tabs (to 8 spaces, + normally). +

+

Here is an example of a multi-line docstring:

+
+
+
>>> def my_function():
 ...     """Do nothing, but document it.
 ...
 ...     No, really, it doesn't do anything.
@@ -841,23 +2110,82 @@ 

4.7.3.5. RecapDo nothing, but document it. No, really, it doesn't do anything. -

-
-
-
-

4.7.8. Function Annotations

-

Function annotations are completely optional metadata -information about the types used by user-defined functions (see PEP 3107 and -PEP 484 for more information).

-

Annotations are stored in the __annotations__ -attribute of the function as a dictionary and have no effect on any other part of the -function. Parameter annotations are defined by a colon after the parameter name, followed -by an expression evaluating to the value of the annotation. Return annotations are -defined by a literal ->, followed by an expression, between the parameter -list and the colon denoting the end of the def statement. The -following example has a required argument, an optional argument, and the return -value annotated:

-
>>> def f(ham: str, eggs: str = 'eggs') -> str:
+
+
+
+
+
+ +

+ 4.7.8. Function + Annotations +

+

+ Function annotations + are completely optional metadata information about the types + used by user-defined functions (see + PEP 3107 + and PEP 484 + for more information). +

+

+ Annotations + are stored in the + __annotations__ + attribute of the function as a dictionary and have no effect + on any other part of the function. Parameter annotations are + defined by a colon after the parameter name, followed by an + expression evaluating to the value of the annotation. Return + annotations are defined by a literal + ->, followed by an expression, between the parameter list and + the colon denoting the end of the + def + statement. The following example has a required argument, an + optional argument, and the return value annotated: +

+
+
+
>>> def f(ham: str, eggs: str = 'eggs') -> str:
 ...     print("Annotations:", f.__annotations__)
 ...     print("Arguments:", ham, eggs)
 ...     return ham + ' and ' + eggs
@@ -866,179 +2194,447 @@ 

4.7.3.5. RecapAnnotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>} Arguments: spam eggs 'spam and eggs' -

-
-
-
-
-

4.8. Intermezzo: Coding Style

-

Now that you are about to write longer, more complex pieces of Python, it is a -good time to talk about coding style. Most languages can be written (or more -concise, formatted) in different styles; some are more readable than others. -Making it easy for others to read your code is always a good idea, and adopting -a nice coding style helps tremendously for that.

-

For Python, PEP 8 has emerged as the style guide that most projects adhere to; -it promotes a very readable and eye-pleasing coding style. Every Python -developer should read it at some point; here are the most important points -extracted for you:

-
    -
  • Use 4-space indentation, and no tabs.

    -

    4 spaces are a good compromise between small indentation (allows greater -nesting depth) and large indentation (easier to read). Tabs introduce -confusion, and are best left out.

    -
  • -
  • Wrap lines so that they don’t exceed 79 characters.

    -

    This helps users with small displays and makes it possible to have several -code files side-by-side on larger displays.

    -
  • -
  • Use blank lines to separate functions and classes, and larger blocks of -code inside functions.

  • -
  • When possible, put comments on a line of their own.

  • -
  • Use docstrings.

  • -
  • Use spaces around operators and after commas, but not directly inside -bracketing constructs: a = f(1, 2) + g(3, 4).

  • -
  • Name your classes and functions consistently; the convention is to use -UpperCamelCase for classes and lowercase_with_underscores for functions -and methods. Always use self as the name for the first method argument -(see A First Look at Classes for more on classes and methods).

  • -
  • Don’t use fancy encodings if your code is meant to be used in international -environments. Python’s default, UTF-8, or even plain ASCII work best in any -case.

  • -
  • Likewise, don’t use non-ASCII characters in identifiers if there is only the -slightest chance people speaking a different language will read or maintain -the code.

  • -
-

Footnotes

-
-
1
-

Actually, call by object reference would be a better description, -since if a mutable object is passed, the caller will see any changes the -callee makes to it (items inserted into a list).

-
-
-
-
- - +
+
+
+
+
+
+ +

+ 4.8. Intermezzo: Coding + Style +

+

+ Now that you are about to write longer, more complex pieces of + Python, it is a good time to talk about coding style. + Most languages can be written (or more concise, + formatted) in different styles; some are more + readable than others. Making it easy for others to read your + code is always a good idea, and adopting a nice coding style + helps tremendously for that. +

+

+ For Python, PEP 8 + has emerged as the style guide that most projects adhere to; + it promotes a very readable and eye-pleasing coding style. + Every Python developer should read it at some point; here are + the most important points extracted for you: +

+
    +
  • +

    Use 4-space indentation, and no tabs.

    +

    + 4 spaces are a good compromise between small indentation + (allows greater nesting depth) and large indentation + (easier to read). Tabs introduce confusion, and are best + left out. +

    +
  • +
  • +

    Wrap lines so that they don’t exceed 79 characters.

    +

    + This helps users with small displays and makes it possible + to have several code files side-by-side on larger + displays. +

    +
  • +
  • +

    + Use blank lines to separate functions and classes, and + larger blocks of code inside functions. +

    +
  • +
  • +

    When possible, put comments on a line of their own.

    +
  • +
  • Use docstrings.

  • +
  • +

    + Use spaces around operators and after commas, but not + directly inside bracketing constructs: + a = + f(1, + 2) + + g(3, + 4). +

    +
  • +
  • +

    + Name your classes and functions consistently; the + convention is to use + UpperCamelCase + for classes and + lowercase_with_underscores + for functions and methods. Always use + self + as the name for the first method argument (see + A First Look at Classes + for more on classes and methods). +

    +
  • +
  • +

    + Don’t use fancy encodings if your code is meant to be used + in international environments. Python’s default, UTF-8, or + even plain ASCII work best in any case. +

    +
  • +
  • +

    + Likewise, don’t use non-ASCII characters in identifiers if + there is only the slightest chance people speaking a + different language will read or maintain the code. +

    +
  • +
+

Footnotes

+
+
+ 1 +
+
+

+ Actually, call by object reference would be a + better description, since if a mutable object is passed, + the caller will see any changes the callee makes to it + (items inserted into a list). +

+
+
+
+
- + + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/datastructures.html b/DOCS/tutorial/datastructures.html index b04b2ee0..93627312 100644 --- a/DOCS/tutorial/datastructures.html +++ b/DOCS/tutorial/datastructures.html @@ -1,195 +1,421 @@ - - - - + + 5. Data Structures — Python 3.9.5 documentation - - + + - + - - - - - - + + + + + + - + - - - - - - - - - - - - + + + +
- -
-

5. Data Structures

-

This chapter describes some things you’ve learned about already in more detail, -and adds some new things as well.

-
-

5.1. More on Lists

-

The list data type has some more methods. Here are all of the methods of list -objects:

-
-
-list.append(x)
-

Add an item to the end of the list. Equivalent to a[len(a):] = [x].

-
- -
-
-list.extend(iterable)
-

Extend the list by appending all the items from the iterable. Equivalent to -a[len(a):] = iterable.

-
- -
-
-list.insert(i, x)
-

Insert an item at a given position. The first argument is the index of the -element before which to insert, so a.insert(0, x) inserts at the front of -the list, and a.insert(len(a), x) is equivalent to a.append(x).

-
- -
-
-list.remove(x)
-

Remove the first item from the list whose value is equal to x. It raises a -ValueError if there is no such item.

-
- -
-
-list.pop([i])
-

Remove the item at the given position in the list, and return it. If no index -is specified, a.pop() removes and returns the last item in the list. (The -square brackets around the i in the method signature denote that the parameter -is optional, not that you should type square brackets at that position. You -will see this notation frequently in the Python Library Reference.)

-
- -
-
-list.clear()
-

Remove all items from the list. Equivalent to del a[:].

-
- -
-
-list.index(x[, start[, end]])
-

Return zero-based index in the list of the first item whose value is equal to x. -Raises a ValueError if there is no such item.

-

The optional arguments start and end are interpreted as in the slice -notation and are used to limit the search to a particular subsequence of -the list. The returned index is computed relative to the beginning of the full -sequence rather than the start argument.

-
- -
-
-list.count(x)
-

Return the number of times x appears in the list.

-
- -
-
-list.sort(*, key=None, reverse=False)
-

Sort the items of the list in place (the arguments can be used for sort -customization, see sorted() for their explanation).

-
- -
-
-list.reverse()
-

Reverse the elements of the list in place.

-
- -
-
-list.copy()
-

Return a shallow copy of the list. Equivalent to a[:].

-
- -

An example that uses most of the list methods:

-
>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
+            
+ +

+ 5. Data Structures +

+

+ This chapter describes some things you’ve learned about already + in more detail, and adds some new things as well. +

+
+ +

+ 5.1. More on Lists +

+

+ The list data type has some more methods. Here are all of the + methods of list objects: +

+
+
+ list.append(x) +
+
+

+ Add an item to the end of the list. Equivalent to + a[len(a):] + = + [x]. +

+
+
+ +
+
+ list.extend(iterable) +
+
+

+ Extend the list by appending all the items from the + iterable. Equivalent to + a[len(a):] + = + iterable. +

+
+
+ +
+
+ list.insert(i, x) +
+
+

+ Insert an item at a given position. The first argument is + the index of the element before which to insert, so + a.insert(0, + x) + inserts at the front of the list, and + a.insert(len(a), + x) + is equivalent to + a.append(x). +

+
+
+ +
+
+ list.remove(x) +
+
+

+ Remove the first item from the list whose value is equal + to x. It raises a + ValueError + if there is no such item. +

+
+
+ +
+
+ list.pop([i]) +
+
+

+ Remove the item at the given position in the list, and + return it. If no index is specified, + a.pop() + removes and returns the last item in the list. (The square + brackets around the i in the method signature + denote that the parameter is optional, not that you should + type square brackets at that position. You will see this + notation frequently in the Python Library Reference.) +

+
+
+ +
+
+ list.clear() +
+
+

+ Remove all items from the list. Equivalent to + del + a[:]. +

+
+
+ +
+
+ list.index(x[, + start[, + end]]) +
+
+

+ Return zero-based index in the list of the first item + whose value is equal to x. Raises a + ValueError + if there is no such item. +

+

+ The optional arguments start and end are + interpreted as in the slice notation and are used to limit + the search to a particular subsequence of the list. The + returned index is computed relative to the beginning of + the full sequence rather than the start argument. +

+
+
+ +
+
+ list.count(x) +
+
+

+ Return the number of times x appears in the list. +

+
+
+ +
+
+ list.sort(*, + key=None, + reverse=False) +
+
+

+ Sort the items of the list in place (the arguments can be + used for sort customization, see + sorted() + for their explanation). +

+
+
+ +
+
+ list.reverse() +
+

Reverse the elements of the list in place.

+
+ +
+
+ list.copy() +
+
+

+ Return a shallow copy of the list. Equivalent to + a[:]. +

+
+
+ +

An example that uses most of the list methods:

+
+
+
>>> fruits = ['orange', 'apple', 'pear', 'banana', 'kiwi', 'apple', 'banana']
 >>> fruits.count('apple')
 2
 >>> fruits.count('tangerine')
@@ -209,25 +435,78 @@ 

Navigation

['apple', 'apple', 'banana', 'banana', 'grape', 'kiwi', 'orange', 'pear'] >>> fruits.pop() 'pear' -
-
-

You might have noticed that methods like insert, remove or sort that -only modify the list have no return value printed – they return the default -None. 1 This is a design principle for all mutable data structures in -Python.

-

Another thing you might notice is that not all data can be sorted or -compared. For instance, [None, 'hello', 10] doesn’t sort because -integers can’t be compared to strings and None can’t be compared to -other types. Also, there are some types that don’t have a defined -ordering relation. For example, 3+4j < 5+7j isn’t a valid -comparison.

-
-

5.1.1. Using Lists as Stacks

-

The list methods make it very easy to use a list as a stack, where the last -element added is the first element retrieved (“last-in, first-out”). To add an -item to the top of the stack, use append(). To retrieve an item from the -top of the stack, use pop() without an explicit index. For example:

-
>>> stack = [3, 4, 5]
+
+
+
+

+ You might have noticed that methods like + insert, + remove + or + sort + that only modify the list have no return value printed – they + return the default + None. + 1 + This is a design principle for all mutable data structures in + Python. +

+

+ Another thing you might notice is that not all data can be + sorted or compared. For instance, + [None, + 'hello', + 10] + doesn’t sort because integers can’t be compared to strings and + None can’t be compared to other types. Also, there + are some types that don’t have a defined ordering relation. + For example, + 3+4j + < + 5+7j + isn’t a valid comparison. +

+
+ +

+ 5.1.1. Using Lists as + Stacks +

+

+ The list methods make it very easy to use a list as a stack, + where the last element added is the first element retrieved + (“last-in, first-out”). To add an item to the top of the + stack, use + append(). To retrieve an item from the top of the stack, use + pop() + without an explicit index. For example: +

+
+
+
>>> stack = [3, 4, 5]
 >>> stack.append(6)
 >>> stack.append(7)
 >>> stack
@@ -242,19 +521,47 @@ 

Navigation

5 >>> stack [3, 4] -
-
-
-
-

5.1.2. Using Lists as Queues

-

It is also possible to use a list as a queue, where the first element added is -the first element retrieved (“first-in, first-out”); however, lists are not -efficient for this purpose. While appends and pops from the end of list are -fast, doing inserts or pops from the beginning of a list is slow (because all -of the other elements have to be shifted by one).

-

To implement a queue, use collections.deque which was designed to -have fast appends and pops from both ends. For example:

-
>>> from collections import deque
+
+
+
+
+
+ +

+ 5.1.2. Using Lists as + Queues +

+

+ It is also possible to use a list as a queue, where the + first element added is the first element retrieved + (“first-in, first-out”); however, lists are not efficient + for this purpose. While appends and pops from the end of + list are fast, doing inserts or pops from the beginning of a + list is slow (because all of the other elements have to be + shifted by one). +

+

+ To implement a queue, use + collections.deque + which was designed to have fast appends and pops from both + ends. For example: +

+
+
+
>>> from collections import deque
 >>> queue = deque(["Eric", "John", "Michael"])
 >>> queue.append("Terry")           # Terry arrives
 >>> queue.append("Graham")          # Graham arrives
@@ -264,47 +571,107 @@ 

Navigation

'John' >>> queue # Remaining queue in order of arrival deque(['Michael', 'Terry', 'Graham']) -
-
-
-
-

5.1.3. List Comprehensions

-

List comprehensions provide a concise way to create lists. -Common applications are to make new lists where each element is the result of -some operations applied to each member of another sequence or iterable, or to -create a subsequence of those elements that satisfy a certain condition.

-

For example, assume we want to create a list of squares, like:

-
>>> squares = []
+
+
+
+
+
+ +

+ 5.1.3. List + Comprehensions +

+

+ List comprehensions provide a concise way to create lists. + Common applications are to make new lists where each element + is the result of some operations applied to each member of + another sequence or iterable, or to create a subsequence of + those elements that satisfy a certain condition. +

+

+ For example, assume we want to create a list of squares, + like: +

+
+
+
>>> squares = []
 >>> for x in range(10):
 ...     squares.append(x**2)
 ...
 >>> squares
 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-
-
-

Note that this creates (or overwrites) a variable named x that still exists -after the loop completes. We can calculate the list of squares without any -side effects using:

-
squares = list(map(lambda x: x**2, range(10)))
-
-
-

or, equivalently:

-
squares = [x**2 for x in range(10)]
-
-
-

which is more concise and readable.

-

A list comprehension consists of brackets containing an expression followed -by a for clause, then zero or more for or if -clauses. The result will be a new list resulting from evaluating the expression -in the context of the for and if clauses which follow it. -For example, this listcomp combines the elements of two lists if they are not -equal:

-
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
+
+
+
+

+ Note that this creates (or overwrites) a variable named + x + that still exists after the loop completes. We can calculate + the list of squares without any side effects using: +

+
+
+
squares = list(map(lambda x: x**2, range(10)))
+
+
+
+

or, equivalently:

+
+
+
squares = [x**2 for x in range(10)]
+
+
+
+

which is more concise and readable.

+

+ A list comprehension consists of brackets containing an + expression followed by a + for + clause, then zero or more + for + or + if + clauses. The result will be a new list resulting from + evaluating the expression in the context of the + for + and + if + clauses which follow it. For example, this listcomp combines + the elements of two lists if they are not equal: +

+
+
+
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
 [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
-
-
-

and it’s equivalent to:

-
>>> combs = []
+
+
+
+

and it’s equivalent to:

+
+
+
>>> combs = []
 >>> for x in [1,2,3]:
 ...     for y in [3,1,4]:
 ...         if x != y:
@@ -312,13 +679,53 @@ 

Navigation

... >>> combs [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] -
-
-

Note how the order of the for and if statements is the -same in both these snippets.

-

If the expression is a tuple (e.g. the (x, y) in the previous example), -it must be parenthesized.

-
>>> vec = [-4, -2, 0, 2, 4]
+
+
+
+

+ Note how the order of the + for + and + if + statements is the same in both these snippets. +

+

+ If the expression is a tuple (e.g. the + (x, + y) + in the previous example), it must be parenthesized. +

+
+
+
>>> vec = [-4, -2, 0, 2, 4]
 >>> # create a new list with the values doubled
 >>> [x*2 for x in vec]
 [-8, -4, 0, 4, 8]
@@ -345,46 +752,95 @@ 

Navigation

>>> vec = [[1,2,3], [4,5,6], [7,8,9]] >>> [num for elem in vec for num in elem] [1, 2, 3, 4, 5, 6, 7, 8, 9] -
-
-

List comprehensions can contain complex expressions and nested functions:

-
>>> from math import pi
+
+
+
+

+ List comprehensions can contain complex expressions and + nested functions: +

+
+
+
>>> from math import pi
 >>> [str(round(pi, i)) for i in range(1, 6)]
 ['3.1', '3.14', '3.142', '3.1416', '3.14159']
-
-
-
-
-

5.1.4. Nested List Comprehensions

-

The initial expression in a list comprehension can be any arbitrary expression, -including another list comprehension.

-

Consider the following example of a 3x4 matrix implemented as a list of -3 lists of length 4:

-
>>> matrix = [
+
+
+
+
+
+

+ 5.1.4. Nested List + Comprehensions +

+

+ The initial expression in a list comprehension can be any + arbitrary expression, including another list comprehension. +

+

+ Consider the following example of a 3x4 matrix implemented + as a list of 3 lists of length 4: +

+
+
+
>>> matrix = [
 ...     [1, 2, 3, 4],
 ...     [5, 6, 7, 8],
 ...     [9, 10, 11, 12],
 ... ]
-
-
-

The following list comprehension will transpose rows and columns:

-
>>> [[row[i] for row in matrix] for i in range(4)]
+
+
+
+

+ The following list comprehension will transpose rows and + columns: +

+
+
+
>>> [[row[i] for row in matrix] for i in range(4)]
 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
-
-
-

As we saw in the previous section, the nested listcomp is evaluated in -the context of the for that follows it, so this example is -equivalent to:

-
>>> transposed = []
+
+
+
+

+ As we saw in the previous section, the nested listcomp is + evaluated in the context of the + for + that follows it, so this example is equivalent to: +

+
+
+
>>> transposed = []
 >>> for i in range(4):
 ...     transposed.append([row[i] for row in matrix])
 ...
 >>> transposed
 [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]
-
-
-

which, in turn, is the same as:

-
>>> transposed = []
+
+
+
+

which, in turn, is the same as:

+
+
+
>>> transposed = []
 >>> for i in range(4):
 ...     # the following 3 lines implement the nested listcomp
 ...     transposed_row = []
@@ -394,25 +850,85 @@ 

5.1.4. Nested List Comprehensions... >>> transposed [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]] -

-
-

In the real world, you should prefer built-in functions to complex flow statements. -The zip() function would do a great job for this use case:

-
>>> list(zip(*matrix))
+
+
+
+

+ In the real world, you should prefer built-in functions to + complex flow statements. The + zip() + function would do a great job for this use case: +

+
+
+
>>> list(zip(*matrix))
 [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
-
-
-

See Unpacking Argument Lists for details on the asterisk in this line.

-
-
-
-

5.2. The del statement

-

There is a way to remove an item from a list given its index instead of its -value: the del statement. This differs from the pop() method -which returns a value. The del statement can also be used to remove -slices from a list or clear the entire list (which we did earlier by assignment -of an empty list to the slice). For example:

-
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
+
+
+
+

+ See + Unpacking Argument Lists + for details on the asterisk in this line. +

+
+
+
+ +

+ 5.2. The + del + statement +

+

+ There is a way to remove an item from a list given its index + instead of its value: the + del + statement. This differs from the + pop() + method which returns a value. The + del + statement can also be used to remove slices from a list or + clear the entire list (which we did earlier by assignment of + an empty list to the slice). For example: +

+
+
+
>>> a = [-1, 1, 66.25, 333, 333, 1234.5]
 >>> del a[0]
 >>> a
 [1, 66.25, 333, 333, 1234.5]
@@ -422,24 +938,76 @@ 

5.1.4. Nested List Comprehensions>>> del a[:] >>> a [] -

-
-

del can also be used to delete entire variables:

-
>>> del a
-
-
-

Referencing the name a hereafter is an error (at least until another value -is assigned to it). We’ll find other uses for del later.

-
-
-

5.3. Tuples and Sequences

-

We saw that lists and strings have many common properties, such as indexing and -slicing operations. They are two examples of sequence data types (see -Sequence Types — list, tuple, range). Since Python is an evolving language, other sequence data -types may be added. There is also another standard sequence data type: the -tuple.

-

A tuple consists of a number of values separated by commas, for instance:

-
>>> t = 12345, 54321, 'hello!'
+
+
+
+

+ del + can also be used to delete entire variables: +

+
+
+
>>> del a
+
+
+
+

+ Referencing the name + a + hereafter is an error (at least until another value is + assigned to it). We’ll find other uses for + del + later. +

+
+
+ +

+ 5.3. Tuples and + Sequences +

+

+ We saw that lists and strings have many common properties, + such as indexing and slicing operations. They are two examples + of sequence data types (see + Sequence Types — list, tuple, range). Since Python is an evolving language, other sequence data + types may be added. There is also another standard sequence + data type: the tuple. +

+

+ A tuple consists of a number of values separated by commas, + for instance: +

+
+
+
>>> t = 12345, 54321, 'hello!'
 >>> t[0]
 12345
 >>> t
@@ -457,27 +1025,54 @@ 

5.1.4. Nested List Comprehensions... v = ([1, 2, 3], [3, 2, 1]) >>> v ([1, 2, 3], [3, 2, 1]) -

-
-

As you see, on output tuples are always enclosed in parentheses, so that nested -tuples are interpreted correctly; they may be input with or without surrounding -parentheses, although often parentheses are necessary anyway (if the tuple is -part of a larger expression). It is not possible to assign to the individual -items of a tuple, however it is possible to create tuples which contain mutable -objects, such as lists.

-

Though tuples may seem similar to lists, they are often used in different -situations and for different purposes. -Tuples are immutable, and usually contain a heterogeneous sequence of -elements that are accessed via unpacking (see later in this section) or indexing -(or even by attribute in the case of namedtuples). -Lists are mutable, and their elements are usually homogeneous and are -accessed by iterating over the list.

-

A special problem is the construction of tuples containing 0 or 1 items: the -syntax has some extra quirks to accommodate these. Empty tuples are constructed -by an empty pair of parentheses; a tuple with one item is constructed by -following a value with a comma (it is not sufficient to enclose a single value -in parentheses). Ugly, but effective. For example:

-
>>> empty = ()
+
+
+
+

+ As you see, on output tuples are always enclosed in + parentheses, so that nested tuples are interpreted correctly; + they may be input with or without surrounding parentheses, + although often parentheses are necessary anyway (if the tuple + is part of a larger expression). It is not possible to assign + to the individual items of a tuple, however it is possible to + create tuples which contain mutable objects, such as lists. +

+

+ Though tuples may seem similar to lists, they are often used + in different situations and for different purposes. Tuples are + immutable, and usually contain a heterogeneous sequence of elements + that are accessed via unpacking (see later in this section) or + indexing (or even by attribute in the case of + namedtuples). Lists are + mutable, and their elements are usually homogeneous and are accessed + by iterating over the list. +

+

+ A special problem is the construction of tuples containing 0 + or 1 items: the syntax has some extra quirks to accommodate + these. Empty tuples are constructed by an empty pair of + parentheses; a tuple with one item is constructed by following + a value with a comma (it is not sufficient to enclose a single + value in parentheses). Ugly, but effective. For example: +

+
+
+
>>> empty = ()
 >>> singleton = 'hello',    # <-- note trailing comma
 >>> len(empty)
 0
@@ -485,31 +1080,88 @@ 

5.1.4. Nested List Comprehensions1 >>> singleton ('hello',) -

-
-

The statement t = 12345, 54321, 'hello!' is an example of tuple packing: -the values 12345, 54321 and 'hello!' are packed together in a tuple. -The reverse operation is also possible:

-
>>> x, y, z = t
-
-
-

This is called, appropriately enough, sequence unpacking and works for any -sequence on the right-hand side. Sequence unpacking requires that there are as -many variables on the left side of the equals sign as there are elements in the -sequence. Note that multiple assignment is really just a combination of tuple -packing and sequence unpacking.

-
-
-

5.4. Sets

-

Python also includes a data type for sets. A set is an unordered collection -with no duplicate elements. Basic uses include membership testing and -eliminating duplicate entries. Set objects also support mathematical operations -like union, intersection, difference, and symmetric difference.

-

Curly braces or the set() function can be used to create sets. Note: to -create an empty set you have to use set(), not {}; the latter creates an -empty dictionary, a data structure that we discuss in the next section.

-

Here is a brief demonstration:

-
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
+
+
+
+

+ The statement + t = + 12345, + 54321, + 'hello!' + is an example of tuple packing: the values + 12345, + 54321 + and + 'hello!' + are packed together in a tuple. The reverse operation is also + possible: +

+
+
+
>>> x, y, z = t
+
+
+
+

+ This is called, appropriately enough, + sequence unpacking and works for any sequence on the + right-hand side. Sequence unpacking requires that there are as + many variables on the left side of the equals sign as there + are elements in the sequence. Note that multiple assignment is + really just a combination of tuple packing and sequence + unpacking. +

+
+
+ +

+ 5.4. Sets +

+

+ Python also includes a data type for sets. A set is + an unordered collection with no duplicate elements. Basic uses + include membership testing and eliminating duplicate entries. + Set objects also support mathematical operations like union, + intersection, difference, and symmetric difference. +

+

+ Curly braces or the + set() + function can be used to create sets. Note: to create an empty + set you have to use + set(), not + {}; the latter creates an empty dictionary, a data structure + that we discuss in the next section. +

+

Here is a brief demonstration:

+
+
+
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
 >>> print(basket)                      # show that duplicates have been removed
 {'orange', 'banana', 'pear', 'apple'}
 >>> 'orange' in basket                 # fast membership testing
@@ -531,44 +1183,107 @@ 

5.1.4. Nested List Comprehensions{'a', 'c'} >>> a ^ b # letters in a or b but not both {'r', 'd', 'b', 'm', 'z', 'l'} -

-
-

Similarly to list comprehensions, set comprehensions -are also supported:

-
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
+
+
+
+

+ Similarly to + list comprehensions, set comprehensions are also supported: +

+
+
+
>>> a = {x for x in 'abracadabra' if x not in 'abc'}
 >>> a
 {'r', 'd'}
-
-
-
-
-

5.5. Dictionaries

-

Another useful data type built into Python is the dictionary (see -Mapping Types — dict). Dictionaries are sometimes found in other languages as -“associative memories” or “associative arrays”. Unlike sequences, which are -indexed by a range of numbers, dictionaries are indexed by keys, which can be -any immutable type; strings and numbers can always be keys. Tuples can be used -as keys if they contain only strings, numbers, or tuples; if a tuple contains -any mutable object either directly or indirectly, it cannot be used as a key. -You can’t use lists as keys, since lists can be modified in place using index -assignments, slice assignments, or methods like append() and -extend().

-

It is best to think of a dictionary as a set of key: value pairs, -with the requirement that the keys are unique (within one dictionary). A pair of -braces creates an empty dictionary: {}. Placing a comma-separated list of -key:value pairs within the braces adds initial key:value pairs to the -dictionary; this is also the way dictionaries are written on output.

-

The main operations on a dictionary are storing a value with some key and -extracting the value given the key. It is also possible to delete a key:value -pair with del. If you store using a key that is already in use, the old -value associated with that key is forgotten. It is an error to extract a value -using a non-existent key.

-

Performing list(d) on a dictionary returns a list of all the keys -used in the dictionary, in insertion order (if you want it sorted, just use -sorted(d) instead). To check whether a single key is in the -dictionary, use the in keyword.

-

Here is a small example using a dictionary:

-
>>> tel = {'jack': 4098, 'sape': 4139}
+
+
+
+
+
+ +

+ 5.5. Dictionaries +

+

+ Another useful data type built into Python is the + dictionary (see + Mapping Types — dict). Dictionaries are sometimes found in other languages as + “associative memories” or “associative arrays”. Unlike + sequences, which are indexed by a range of numbers, + dictionaries are indexed by keys, which can be any + immutable type; strings and numbers can always be keys. Tuples + can be used as keys if they contain only strings, numbers, or + tuples; if a tuple contains any mutable object either directly + or indirectly, it cannot be used as a key. You can’t use lists + as keys, since lists can be modified in place using index + assignments, slice assignments, or methods like + append() + and + extend(). +

+

+ It is best to think of a dictionary as a set of + key: value pairs, with the requirement that the keys + are unique (within one dictionary). A pair of braces creates + an empty dictionary: + {}. Placing a comma-separated list of key:value pairs within + the braces adds initial key:value pairs to the dictionary; + this is also the way dictionaries are written on output. +

+

+ The main operations on a dictionary are storing a value with + some key and extracting the value given the key. It is also + possible to delete a key:value pair with + del. If you store using a key that is already in use, the old + value associated with that key is forgotten. It is an error to + extract a value using a non-existent key. +

+

+ Performing + list(d) + on a dictionary returns a list of all the keys used in the + dictionary, in insertion order (if you want it sorted, just + use + sorted(d) + instead). To check whether a single key is in the dictionary, + use the + in + keyword. +

+

Here is a small example using a dictionary:

+
+
+
>>> tel = {'jack': 4098, 'sape': 4139}
 >>> tel['guido'] = 4127
 >>> tel
 {'jack': 4098, 'sape': 4139, 'guido': 4127}
@@ -586,52 +1301,122 @@ 

5.1.4. Nested List ComprehensionsTrue >>> 'jack' not in tel False -

-
-

The dict() constructor builds dictionaries directly from sequences of -key-value pairs:

-
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
+
+
+
+

+ The + dict() + constructor builds dictionaries directly from sequences of + key-value pairs: +

+
+
+
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
 {'sape': 4139, 'guido': 4127, 'jack': 4098}
-
-
-

In addition, dict comprehensions can be used to create dictionaries from -arbitrary key and value expressions:

-
>>> {x: x**2 for x in (2, 4, 6)}
+
+
+
+

+ In addition, dict comprehensions can be used to create + dictionaries from arbitrary key and value expressions: +

+
+
+
>>> {x: x**2 for x in (2, 4, 6)}
 {2: 4, 4: 16, 6: 36}
-
-
-

When the keys are simple strings, it is sometimes easier to specify pairs using -keyword arguments:

-
>>> dict(sape=4139, guido=4127, jack=4098)
+
+
+
+

+ When the keys are simple strings, it is sometimes easier to + specify pairs using keyword arguments: +

+
+
+
>>> dict(sape=4139, guido=4127, jack=4098)
 {'sape': 4139, 'guido': 4127, 'jack': 4098}
-
-
-
-
-

5.6. Looping Techniques

-

When looping through dictionaries, the key and corresponding value can be -retrieved at the same time using the items() method.

-
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
+
+
+
+
+
+ +

+ 5.6. Looping Techniques +

+

+ When looping through dictionaries, the key and corresponding + value can be retrieved at the same time using the + items() + method. +

+
+
+
>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}
 >>> for k, v in knights.items():
 ...     print(k, v)
 ...
 gallahad the pure
 robin the brave
-
-
-

When looping through a sequence, the position index and corresponding value can -be retrieved at the same time using the enumerate() function.

-
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
+
+
+
+

+ When looping through a sequence, the position index and + corresponding value can be retrieved at the same time using + the + enumerate() + function. +

+
+
+
>>> for i, v in enumerate(['tic', 'tac', 'toe']):
 ...     print(i, v)
 ...
 0 tic
 1 tac
 2 toe
-
-
-

To loop over two or more sequences at the same time, the entries can be paired -with the zip() function.

-
>>> questions = ['name', 'quest', 'favorite color']
+
+
+
+

+ To loop over two or more sequences at the same time, the + entries can be paired with the + zip() + function. +

+
+
+
>>> questions = ['name', 'quest', 'favorite color']
 >>> answers = ['lancelot', 'the holy grail', 'blue']
 >>> for q, a in zip(questions, answers):
 ...     print('What is your {0}?  It is {1}.'.format(q, a))
@@ -639,11 +1424,25 @@ 

5.1.4. Nested List ComprehensionsWhat is your name? It is lancelot. What is your quest? It is the holy grail. What is your favorite color? It is blue. -

-
-

To loop over a sequence in reverse, first specify the sequence in a forward -direction and then call the reversed() function.

-
>>> for i in reversed(range(1, 10, 2)):
+
+
+
+

+ To loop over a sequence in reverse, first specify the sequence + in a forward direction and then call the + reversed() + function. +

+
+
+
>>> for i in reversed(range(1, 10, 2)):
 ...     print(i)
 ...
 9
@@ -651,11 +1450,25 @@ 

5.1.4. Nested List Comprehensions5 3 1 -

-
-

To loop over a sequence in sorted order, use the sorted() function which -returns a new sorted list while leaving the source unaltered.

-
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
+
+
+
+

+ To loop over a sequence in sorted order, use the + sorted() + function which returns a new sorted list while leaving the + source unaltered. +

+
+
+
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
 >>> for i in sorted(basket):
 ...     print(i)
 ...
@@ -665,12 +1478,43 @@ 

5.1.4. Nested List Comprehensionsorange orange pear -

-
-

Using set() on a sequence eliminates duplicate elements. The use of -sorted() in combination with set() over a sequence is an idiomatic -way to loop over unique elements of the sequence in sorted order.

-
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
+
+
+
+

+ Using + set() + on a sequence eliminates duplicate elements. The use of + sorted() + in combination with + set() + over a sequence is an idiomatic way to loop over unique + elements of the sequence in sorted order. +

+
+
+
>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']
 >>> for f in sorted(set(basket)):
 ...     print(f)
 ...
@@ -678,11 +1522,17 @@ 

5.1.4. Nested List Comprehensionsbanana orange pear -

-
-

It is sometimes tempting to change a list while you are looping over it; -however, it is often simpler and safer to create a new list instead.

-
>>> import math
+
+
+
+

+ It is sometimes tempting to change a list while you are + looping over it; however, it is often simpler and safer to + create a new list instead. +

+
-
-
-

5.7. More on Conditions

-

The conditions used in while and if statements can contain any -operators, not just comparisons.

-

The comparison operators in and not in check whether a value occurs -(does not occur) in a sequence. The operators is and is not compare -whether two objects are really the same object. All comparison operators have -the same priority, which is lower than that of all numerical operators.

-

Comparisons can be chained. For example, a < b == c tests whether a is -less than b and moreover b equals c.

-

Comparisons may be combined using the Boolean operators and and or, and -the outcome of a comparison (or of any other Boolean expression) may be negated -with not. These have lower priorities than comparison operators; between -them, not has the highest priority and or the lowest, so that A and -not B or C is equivalent to (A and (not B)) or C. As always, parentheses -can be used to express the desired composition.

-

The Boolean operators and and or are so-called short-circuit -operators: their arguments are evaluated from left to right, and evaluation -stops as soon as the outcome is determined. For example, if A and C are -true but B is false, A and B and C does not evaluate the expression -C. When used as a general value and not as a Boolean, the return value of a -short-circuit operator is the last evaluated argument.

-

It is possible to assign the result of a comparison or other Boolean expression -to a variable. For example,

-
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
+
+
+
+
+
+ +

+ 5.7. More on Conditions +

+

+ The conditions used in + while + and + if + statements can contain any operators, not just comparisons. +

+

+ The comparison operators + in + and + not + in + check whether a value occurs (does not occur) in a sequence. + The operators + is + and + is + not + compare whether two objects are really the same object. All + comparison operators have the same priority, which is lower + than that of all numerical operators. +

+

+ Comparisons can be chained. For example, + a < + b == + c + tests whether + a + is less than + b + and moreover + b + equals + c. +

+

+ Comparisons may be combined using the Boolean operators + and + and + or, and the outcome of a comparison (or of any other Boolean + expression) may be negated with + not. These have lower priorities than comparison operators; + between them, + not + has the highest priority and + or + the lowest, so that + A and + not B + or C + is equivalent to + (A and + (not B)) + or C. As always, parentheses can be used to express the desired + composition. +

+

+ The Boolean operators + and + and + or + are so-called short-circuit operators: their + arguments are evaluated from left to right, and evaluation + stops as soon as the outcome is determined. For example, if + A + and + C + are true but + B + is false, + A and + B and + C + does not evaluate the expression + C. When used as a general value and not as a Boolean, the + return value of a short-circuit operator is the last evaluated + argument. +

+

+ It is possible to assign the result of a comparison or other + Boolean expression to a variable. For example, +

+
+
+
>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance'
 >>> non_null = string1 or string2 or string3
 >>> non_null
 'Trondheim'
-
-
-

Note that in Python, unlike C, assignment inside expressions must be done -explicitly with the -walrus operator :=. -This avoids a common class of problems encountered in C programs: typing = -in an expression when == was intended.

-
-
-

5.8. Comparing Sequences and Other Types

-

Sequence objects typically may be compared to other objects with the same sequence -type. The comparison uses lexicographical ordering: first the first two -items are compared, and if they differ this determines the outcome of the -comparison; if they are equal, the next two items are compared, and so on, until -either sequence is exhausted. If two items to be compared are themselves -sequences of the same type, the lexicographical comparison is carried out -recursively. If all items of two sequences compare equal, the sequences are -considered equal. If one sequence is an initial sub-sequence of the other, the -shorter sequence is the smaller (lesser) one. Lexicographical ordering for -strings uses the Unicode code point number to order individual characters. -Some examples of comparisons between sequences of the same type:

-
(1, 2, 3)              < (1, 2, 4)
+
+
+
+

+ Note that in Python, unlike C, assignment inside expressions + must be done explicitly with the + walrus operator + :=. This avoids a common class of problems encountered in C + programs: typing + = + in an expression when + == + was intended. +

+
+
+ +

+ 5.8. Comparing Sequences + and Other Types +

+

+ Sequence objects typically may be compared to other objects + with the same sequence type. The comparison uses + lexicographical ordering: first the first two items + are compared, and if they differ this determines the outcome + of the comparison; if they are equal, the next two items are + compared, and so on, until either sequence is exhausted. If + two items to be compared are themselves sequences of the same + type, the lexicographical comparison is carried out + recursively. If all items of two sequences compare equal, the + sequences are considered equal. If one sequence is an initial + sub-sequence of the other, the shorter sequence is the smaller + (lesser) one. Lexicographical ordering for strings uses the + Unicode code point number to order individual characters. Some + examples of comparisons between sequences of the same type: +

+
+
+
(1, 2, 3)              < (1, 2, 4)
 [1, 2, 3]              < [1, 2, 4]
 'ABC' < 'C' < 'Pascal' < 'Python'
 (1, 2, 3, 4)           < (1, 2, 4)
 (1, 2)                 < (1, 2, -1)
 (1, 2, 3)             == (1.0, 2.0, 3.0)
 (1, 2, ('aa', 'ab'))   < (1, 2, ('abc', 'a'), 4)
-
-
-

Note that comparing objects of different types with < or > is legal -provided that the objects have appropriate comparison methods. For example, -mixed numeric types are compared according to their numeric value, so 0 equals -0.0, etc. Otherwise, rather than providing an arbitrary ordering, the -interpreter will raise a TypeError exception.

-

Footnotes

-
-
1
-

Other languages may return the mutated object, which allows method -chaining, such as d->insert("a")->remove("b")->sort();.

-
-
-
-
- - +
+
+
+

+ Note that comparing objects of different types with + < + or + > + is legal provided that the objects have appropriate comparison + methods. For example, mixed numeric types are compared + according to their numeric value, so 0 equals 0.0, etc. + Otherwise, rather than providing an arbitrary ordering, the + interpreter will raise a + TypeError + exception. +

+

Footnotes

+
+
+ 1 +
+
+

+ Other languages may return the mutated object, which + allows method chaining, such as + d->insert("a")->remove("b")->sort();. +

+
+
+
+
-
+ + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/errors.html b/DOCS/tutorial/errors.html index 7bcb8ed3..b0a737fa 100644 --- a/DOCS/tutorial/errors.html +++ b/DOCS/tutorial/errors.html @@ -1,136 +1,222 @@ - - - - + + 8. Errors and Exceptions — Python 3.9.5 documentation - - + + - + - - - - - - + + + + + + - - - - - - - - - - - - + + + +
- -
-

8. Errors and Exceptions

-

Until now error messages haven’t been more than mentioned, but if you have tried -out the examples you have probably seen some. There are (at least) two -distinguishable kinds of errors: syntax errors and exceptions.

-
-

8.1. Syntax Errors

-

Syntax errors, also known as parsing errors, are perhaps the most common kind of -complaint you get while you are still learning Python:

-
>>> while True print('Hello world')
+            
+ +

+ 8. Errors and Exceptions +

+

+ Until now error messages haven’t been more than mentioned, but + if you have tried out the examples you have probably seen some. + There are (at least) two distinguishable kinds of errors: + syntax errors and exceptions. +

+
+ +

+ 8.1. Syntax Errors +

+

+ Syntax errors, also known as parsing errors, are perhaps the + most common kind of complaint you get while you are still + learning Python: +

+
+
+
>>> while True print('Hello world')
   File "<stdin>", line 1
     while True print('Hello world')
                    ^
 SyntaxError: invalid syntax
-
-
-

The parser repeats the offending line and displays a little ‘arrow’ pointing at -the earliest point in the line where the error was detected. The error is -caused by (or at least detected at) the token preceding the arrow: in the -example, the error is detected at the function print(), since a colon -(':') is missing before it. File name and line number are printed so you -know where to look in case the input came from a script.

-
-
-

8.2. Exceptions

-

Even if a statement or expression is syntactically correct, it may cause an -error when an attempt is made to execute it. Errors detected during execution -are called exceptions and are not unconditionally fatal: you will soon learn -how to handle them in Python programs. Most exceptions are not handled by -programs, however, and result in error messages as shown here:

-
>>> 10 * (1/0)
+
+
+
+

+ The parser repeats the offending line and displays a little + ‘arrow’ pointing at the earliest point in the line where the + error was detected. The error is caused by (or at least + detected at) the token preceding the arrow: in the + example, the error is detected at the function + print(), since a colon (':') is missing before it. File name and line number are printed + so you know where to look in case the input came from a + script. +

+
+
+ +

+ 8.2. Exceptions +

+

+ Even if a statement or expression is syntactically correct, it + may cause an error when an attempt is made to execute it. + Errors detected during execution are called + exceptions and are not unconditionally fatal: you + will soon learn how to handle them in Python programs. Most + exceptions are not handled by programs, however, and result in + error messages as shown here: +

+
+
+
>>> 10 * (1/0)
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ZeroDivisionError: division by zero
@@ -142,68 +228,283 @@ 

Navigation

Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: Can't convert 'int' object to str implicitly -
-
-

The last line of the error message indicates what happened. Exceptions come in -different types, and the type is printed as part of the message: the types in -the example are ZeroDivisionError, NameError and TypeError. -The string printed as the exception type is the name of the built-in exception -that occurred. This is true for all built-in exceptions, but need not be true -for user-defined exceptions (although it is a useful convention). Standard -exception names are built-in identifiers (not reserved keywords).

-

The rest of the line provides detail based on the type of exception and what -caused it.

-

The preceding part of the error message shows the context where the exception -occurred, in the form of a stack traceback. In general it contains a stack -traceback listing source lines; however, it will not display lines read from -standard input.

-

Built-in Exceptions lists the built-in exceptions and their meanings.

-
-
-

8.3. Handling Exceptions

-

It is possible to write programs that handle selected exceptions. Look at the -following example, which asks the user for input until a valid integer has been -entered, but allows the user to interrupt the program (using Control-C or -whatever the operating system supports); note that a user-generated interruption -is signalled by raising the KeyboardInterrupt exception.

-
>>> while True:
+
+
+
+

+ The last line of the error message indicates what happened. + Exceptions come in different types, and the type is printed as + part of the message: the types in the example are + ZeroDivisionError, + NameError + and + TypeError. The string printed as the exception type is the name of the + built-in exception that occurred. This is true for all + built-in exceptions, but need not be true for user-defined + exceptions (although it is a useful convention). Standard + exception names are built-in identifiers (not reserved + keywords). +

+

+ The rest of the line provides detail based on the type of + exception and what caused it. +

+

+ The preceding part of the error message shows the context + where the exception occurred, in the form of a stack + traceback. In general it contains a stack traceback listing + source lines; however, it will not display lines read from + standard input. +

+

+ Built-in Exceptions + lists the built-in exceptions and their meanings. +

+
+
+ +

+ 8.3. Handling Exceptions +

+

+ It is possible to write programs that handle selected + exceptions. Look at the following example, which asks the user + for input until a valid integer has been entered, but allows + the user to interrupt the program (using + Control-C + or whatever the operating system supports); note that a + user-generated interruption is signalled by raising the + KeyboardInterrupt + exception. +

+
+
+
>>> while True:
 ...     try:
 ...         x = int(input("Please enter a number: "))
 ...         break
 ...     except ValueError:
 ...         print("Oops!  That was no valid number.  Try again...")
 ...
-
-
-

The try statement works as follows.

-
    -
  • First, the try clause (the statement(s) between the try and -except keywords) is executed.

  • -
  • If no exception occurs, the except clause is skipped and execution of the -try statement is finished.

  • -
  • If an exception occurs during execution of the try clause, the rest of the -clause is skipped. Then if its type matches the exception named after the -except keyword, the except clause is executed, and then execution -continues after the try statement.

  • -
  • If an exception occurs which does not match the exception named in the except -clause, it is passed on to outer try statements; if no handler is -found, it is an unhandled exception and execution stops with a message as -shown above.

  • -
-

A try statement may have more than one except clause, to specify -handlers for different exceptions. At most one handler will be executed. -Handlers only handle exceptions that occur in the corresponding try clause, not -in other handlers of the same try statement. An except clause may -name multiple exceptions as a parenthesized tuple, for example:

-
... except (RuntimeError, TypeError, NameError):
+
+
+
+

+ The + try + statement works as follows. +

+
    +
  • +

    + First, the try clause (the statement(s) between + the + try + and + except + keywords) is executed. +

    +
  • +
  • +

    + If no exception occurs, the except clause is + skipped and execution of the + try + statement is finished. +

    +
  • +
  • +

    + If an exception occurs during execution of the try clause, + the rest of the clause is skipped. Then if its type + matches the exception named after the + except + keyword, the except clause is executed, and then execution + continues after the + try + statement. +

    +
  • +
  • +

    + If an exception occurs which does not match the exception + named in the except clause, it is passed on to outer + try + statements; if no handler is found, it is an + unhandled exception and execution stops with a + message as shown above. +

    +
  • +
+

+ A + try + statement may have more than one except clause, to specify + handlers for different exceptions. At most one handler will be + executed. Handlers only handle exceptions that occur in the + corresponding try clause, not in other handlers of the same + try + statement. An except clause may name multiple exceptions as a + parenthesized tuple, for example: +

+
+
+
... except (RuntimeError, TypeError, NameError):
 ...     pass
-
-
-

A class in an except clause is compatible with an exception if it is -the same class or a base class thereof (but not the other way around — an -except clause listing a derived class is not compatible with a base class). For -example, the following code will print B, C, D in that order:

-
class B(Exception):
+
+
+
+

+ A class in an + except + clause is compatible with an exception if it is the same class + or a base class thereof (but not the other way around — an + except clause listing a derived class is not compatible with a + base class). For example, the following code will print B, C, + D in that order: +

+
+
+
class B(Exception):
     pass
 
 class C(B):
@@ -221,15 +522,28 @@ 

Navigation

print("C") except B: print("B") -
-
-

Note that if the except clauses were reversed (with except B first), it -would have printed B, B, B — the first matching except clause is triggered.

-

The last except clause may omit the exception name(s), to serve as a wildcard. -Use this with extreme caution, since it is easy to mask a real programming error -in this way! It can also be used to print an error message and then re-raise -the exception (allowing a caller to handle the exception as well):

-
import sys
+
+
+
+

+ Note that if the except clauses were reversed (with + except + B + first), it would have printed B, B, B — the first matching + except clause is triggered. +

+

+ The last except clause may omit the exception name(s), to + serve as a wildcard. Use this with extreme caution, since it + is easy to mask a real programming error in this way! It can + also be used to print an error message and then re-raise the + exception (allowing a caller to handle the exception as well): +

+
+
+
import sys
 
 try:
     f = open('myfile.txt')
@@ -242,13 +556,36 @@ 

Navigation

except: print("Unexpected error:", sys.exc_info()[0]) raise -
-
-

The tryexcept statement has an optional else -clause, which, when present, must follow all except clauses. It is useful for -code that must be executed if the try clause does not raise an exception. For -example:

-
for arg in sys.argv[1:]:
+
+
+
+

+ The + try + … + except + statement has an optional else clause, which, when + present, must follow all except clauses. It is useful for code + that must be executed if the try clause does not raise an + exception. For example: +

+
+
+
for arg in sys.argv[1:]:
     try:
         f = open(arg, 'r')
     except OSError:
@@ -256,22 +593,67 @@ 

Navigation

else: print(arg, 'has', len(f.readlines()), 'lines') f.close() -
-
-

The use of the else clause is better than adding additional code to -the try clause because it avoids accidentally catching an exception -that wasn’t raised by the code being protected by the try … -except statement.

-

When an exception occurs, it may have an associated value, also known as the -exception’s argument. The presence and type of the argument depend on the -exception type.

-

The except clause may specify a variable after the exception name. The -variable is bound to an exception instance with the arguments stored in -instance.args. For convenience, the exception instance defines -__str__() so the arguments can be printed directly without having to -reference .args. One may also instantiate an exception first before -raising it and add any attributes to it as desired.

-
>>> try:
+
+
+
+

+ The use of the + else + clause is better than adding additional code to the + try + clause because it avoids accidentally catching an exception + that wasn’t raised by the code being protected by the + try + … + except + statement. +

+

+ When an exception occurs, it may have an associated value, + also known as the exception’s argument. The presence + and type of the argument depend on the exception type. +

+

+ The except clause may specify a variable after the exception + name. The variable is bound to an exception instance with the + arguments stored in + instance.args. For convenience, the exception instance defines + __str__() + so the arguments can be printed directly without having to + reference + .args. One may also instantiate an exception first before raising + it and add any attributes to it as desired. +

+
+
+
>>> try:
 ...     raise Exception('spam', 'eggs')
 ... except Exception as inst:
 ...     print(type(inst))    # the exception instance
@@ -287,14 +669,22 @@ 

Navigation

('spam', 'eggs') x = spam y = eggs -
-
-

If an exception has arguments, they are printed as the last part (‘detail’) of -the message for unhandled exceptions.

-

Exception handlers don’t just handle exceptions if they occur immediately in the -try clause, but also if they occur inside functions that are called (even -indirectly) in the try clause. For example:

-
>>> def this_fails():
+
+
+
+

+ If an exception has arguments, they are printed as the last + part (‘detail’) of the message for unhandled exceptions. +

+

+ Exception handlers don’t just handle exceptions if they occur + immediately in the try clause, but also if they occur inside + functions that are called (even indirectly) in the try clause. + For example: +

+
+
+
>>> def this_fails():
 ...     x = 1/0
 ...
 >>> try:
@@ -303,30 +693,87 @@ 

Navigation

... print('Handling run-time error:', err) ... Handling run-time error: division by zero -
-
-
-
-

8.4. Raising Exceptions

-

The raise statement allows the programmer to force a specified -exception to occur. For example:

-
>>> raise NameError('HiThere')
+
+
+
+
+
+ +

+ 8.4. Raising Exceptions +

+

+ The + raise + statement allows the programmer to force a specified exception + to occur. For example: +

+
+
+
>>> raise NameError('HiThere')
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 NameError: HiThere
-
-
-

The sole argument to raise indicates the exception to be raised. -This must be either an exception instance or an exception class (a class that -derives from Exception). If an exception class is passed, it will -be implicitly instantiated by calling its constructor with no arguments:

-
raise ValueError  # shorthand for 'raise ValueError()'
-
-
-

If you need to determine whether an exception was raised but don’t intend to -handle it, a simpler form of the raise statement allows you to -re-raise the exception:

-
>>> try:
+
+
+
+

+ The sole argument to + raise + indicates the exception to be raised. This must be either an + exception instance or an exception class (a class that derives + from + Exception). If an exception class is passed, it will be implicitly + instantiated by calling its constructor with no arguments: +

+
+
+
raise ValueError  # shorthand for 'raise ValueError()'
+
+
+
+

+ If you need to determine whether an exception was raised but + don’t intend to handle it, a simpler form of the + raise + statement allows you to re-raise the exception: +

+
+
+
>>> try:
 ...     raise NameError('HiThere')
 ... except NameError:
 ...     print('An exception flew by!')
@@ -336,19 +783,55 @@ 

Navigation

Traceback (most recent call last): File "<stdin>", line 2, in <module> NameError: HiThere -
-
-
-
-

8.5. Exception Chaining

-

The raise statement allows an optional from which enables -chaining exceptions. For example:

-
# exc must be exception instance or None.
+
+
+
+
+
+ +

+ 8.5. Exception Chaining +

+

+ The + raise + statement allows an optional + from + which enables chaining exceptions. For example: +

+
+
+
# exc must be exception instance or None.
 raise RuntimeError from exc
-
-
-

This can be useful when you are transforming exceptions. For example:

-
>>> def func():
+
+
+
+

+ This can be useful when you are transforming exceptions. For + example: +

+
+
+
>>> def func():
 ...     raise IOError
 ...
 >>> try:
@@ -366,12 +849,39 @@ 

Navigation

Traceback (most recent call last): File "<stdin>", line 4, in <module> RuntimeError: Failed to open database -
-
-

Exception chaining happens automatically when an exception is raised inside an -except or finally section. Exception chaining can be -disabled by using from None idiom:

-
>>> try:
+
+
+
+

+ Exception chaining happens automatically when an exception is + raised inside an + except + or + finally + section. Exception chaining can be disabled by using + from + None + idiom: +

+
+
+
>>> try:
 ...     open('database.sqlite')
 ... except OSError:
 ...     raise RuntimeError from None
@@ -379,22 +889,60 @@ 

Navigation

Traceback (most recent call last): File "<stdin>", line 4, in <module> RuntimeError -
-
-

For more information about chaining mechanics, see Built-in Exceptions.

-
-
-

8.6. User-defined Exceptions

-

Programs may name their own exceptions by creating a new exception class (see -Classes for more about Python classes). Exceptions should typically -be derived from the Exception class, either directly or indirectly.

-

Exception classes can be defined which do anything any other class can do, but -are usually kept simple, often only offering a number of attributes that allow -information about the error to be extracted by handlers for the exception. When -creating a module that can raise several distinct errors, a common practice is -to create a base class for exceptions defined by that module, and subclass that -to create specific exception classes for different error conditions:

-
class Error(Exception):
+
+
+
+

+ For more information about chaining mechanics, see + Built-in Exceptions. +

+
+
+ +

+ 8.6. User-defined + Exceptions +

+

+ Programs may name their own exceptions by creating a new + exception class (see + Classes + for more about Python classes). Exceptions should typically be + derived from the + Exception + class, either directly or indirectly. +

+

+ Exception classes can be defined which do anything any other + class can do, but are usually kept simple, often only offering + a number of attributes that allow information about the error + to be extracted by handlers for the exception. When creating a + module that can raise several distinct errors, a common + practice is to create a base class for exceptions defined by + that module, and subclass that to create specific exception + classes for different error conditions: +

+
+
+
class Error(Exception):
     """Base class for exceptions in this module."""
     pass
 
@@ -424,20 +972,50 @@ 

Navigation

self.previous = previous self.next = next self.message = message -
-
-

Most exceptions are defined with names that end in “Error”, similar to the -naming of the standard exceptions.

-

Many standard modules define their own exceptions to report errors that may -occur in functions they define. More information on classes is presented in -chapter Classes.

-
-
-

8.7. Defining Clean-up Actions

-

The try statement has another optional clause which is intended to -define clean-up actions that must be executed under all circumstances. For -example:

-
>>> try:
+
+
+
+

+ Most exceptions are defined with names that end in “Error”, + similar to the naming of the standard exceptions. +

+

+ Many standard modules define their own exceptions to report + errors that may occur in functions they define. More + information on classes is presented in chapter + Classes. +

+
+
+ +

+ 8.7. Defining Clean-up + Actions +

+

+ The + try + statement has another optional clause which is intended to + define clean-up actions that must be executed under all + circumstances. For example: +

+
+
+
>>> try:
 ...     raise KeyboardInterrupt
 ... finally:
 ...     print('Goodbye, world!')
@@ -446,38 +1024,377 @@ 

Navigation

KeyboardInterrupt Traceback (most recent call last): File "<stdin>", line 2, in <module> -
-
-

If a finally clause is present, the finally -clause will execute as the last task before the try -statement completes. The finally clause runs whether or -not the try statement produces an exception. The following -points discuss more complex cases when an exception occurs:

-
    -
  • If an exception occurs during execution of the try -clause, the exception may be handled by an except -clause. If the exception is not handled by an except -clause, the exception is re-raised after the finally -clause has been executed.

  • -
  • An exception could occur during execution of an except -or else clause. Again, the exception is re-raised after -the finally clause has been executed.

  • -
  • If the finally clause executes a break, -continue or return statement, exceptions are not -re-raised.

  • -
  • If the try statement reaches a break, -continue or return statement, the -finally clause will execute just prior to the -break, continue or return -statement’s execution.

  • -
  • If a finally clause includes a return -statement, the returned value will be the one from the -finally clause’s return statement, not the -value from the try clause’s return -statement.

  • -
-

For example:

-
>>> def bool_return():
+
+
+
+

+ If a + finally + clause is present, the + finally + clause will execute as the last task before the + try + statement completes. The + finally + clause runs whether or not the + try + statement produces an exception. The following points discuss + more complex cases when an exception occurs: +

+
    +
  • +

    + If an exception occurs during execution of the + try + clause, the exception may be handled by an + except + clause. If the exception is not handled by an + except + clause, the exception is re-raised after the + finally + clause has been executed. +

    +
  • +
  • +

    + An exception could occur during execution of an + except + or + else + clause. Again, the exception is re-raised after the + finally + clause has been executed. +

    +
  • +
  • +

    + If the + finally + clause executes a + break, + continue + or + return + statement, exceptions are not re-raised. +

    +
  • +
  • +

    + If the + try + statement reaches a + break, + continue + or + return + statement, the + finally + clause will execute just prior to the + break, + continue + or + return + statement’s execution. +

    +
  • +
  • +

    + If a + finally + clause includes a + return + statement, the returned value will be the one from the + finally + clause’s + return + statement, not the value from the + try + clause’s + return + statement. +

    +
  • +
+

For example:

+
+
+
>>> def bool_return():
 ...     try:
 ...         return True
 ...     finally:
@@ -485,10 +1402,13 @@ 

Navigation

... >>> bool_return() False -
-
-

A more complicated example:

-
>>> def divide(x, y):
+
+
+
+

A more complicated example:

+
+
+
>>> def divide(x, y):
 ...     try:
 ...         result = x / y
 ...     except ZeroDivisionError:
@@ -510,145 +1430,293 @@ 

Navigation

File "<stdin>", line 1, in <module> File "<stdin>", line 3, in divide TypeError: unsupported operand type(s) for /: 'str' and 'str' -
-
-

As you can see, the finally clause is executed in any event. The -TypeError raised by dividing two strings is not handled by the -except clause and therefore re-raised after the finally -clause has been executed.

-

In real world applications, the finally clause is useful for -releasing external resources (such as files or network connections), regardless -of whether the use of the resource was successful.

-
-
-

8.8. Predefined Clean-up Actions

-

Some objects define standard clean-up actions to be undertaken when the object -is no longer needed, regardless of whether or not the operation using the object -succeeded or failed. Look at the following example, which tries to open a file -and print its contents to the screen.

-
for line in open("myfile.txt"):
+
+
+
+

+ As you can see, the + finally + clause is executed in any event. The + TypeError + raised by dividing two strings is not handled by the + except + clause and therefore re-raised after the + finally + clause has been executed. +

+

+ In real world applications, the + finally + clause is useful for releasing external resources (such as + files or network connections), regardless of whether the use + of the resource was successful. +

+
+
+ +

+ 8.8. Predefined Clean-up + Actions +

+

+ Some objects define standard clean-up actions to be undertaken + when the object is no longer needed, regardless of whether or + not the operation using the object succeeded or failed. Look + at the following example, which tries to open a file and print + its contents to the screen. +

+
+
+
for line in open("myfile.txt"):
     print(line, end="")
-
-
-

The problem with this code is that it leaves the file open for an indeterminate -amount of time after this part of the code has finished executing. -This is not an issue in simple scripts, but can be a problem for larger -applications. The with statement allows objects like files to be -used in a way that ensures they are always cleaned up promptly and correctly.

-
with open("myfile.txt") as f:
+
+
+
+

+ The problem with this code is that it leaves the file open for + an indeterminate amount of time after this part of the code + has finished executing. This is not an issue in simple + scripts, but can be a problem for larger applications. The + with + statement allows objects like files to be used in a way that + ensures they are always cleaned up promptly and correctly. +

+
+
+
with open("myfile.txt") as f:
     for line in f:
         print(line, end="")
-
-
-

After the statement is executed, the file f is always closed, even if a -problem was encountered while processing the lines. Objects which, like files, -provide predefined clean-up actions will indicate this in their documentation.

-
-
- - +
+
+
+

+ After the statement is executed, the file f is always + closed, even if a problem was encountered while processing the + lines. Objects which, like files, provide predefined clean-up + actions will indicate this in their documentation. +

+
+
-
+ + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/floatingpoint.html b/DOCS/tutorial/floatingpoint.html index 3580df22..312b45f8 100644 --- a/DOCS/tutorial/floatingpoint.html +++ b/DOCS/tutorial/floatingpoint.html @@ -1,186 +1,347 @@ - - - - + + - 15. Floating Point Arithmetic: Issues and Limitations — Python 3.9.5 documentation + + 15. Floating Point Arithmetic: Issues and Limitations — Python 3.9.5 + documentation + - - + + - + - - - - - - + + + + + + - + - - - - - - - - - - - - + + + +
- -
-

15. Floating Point Arithmetic: Issues and Limitations

-

Floating-point numbers are represented in computer hardware as base 2 (binary) -fractions. For example, the decimal fraction

-
0.125
-
-
-

has value 1/10 + 2/100 + 5/1000, and in the same way the binary fraction

-
0.001
-
-
-

has value 0/2 + 0/4 + 1/8. These two fractions have identical values, the only -real difference being that the first is written in base 10 fractional notation, -and the second in base 2.

-

Unfortunately, most decimal fractions cannot be represented exactly as binary -fractions. A consequence is that, in general, the decimal floating-point -numbers you enter are only approximated by the binary floating-point numbers -actually stored in the machine.

-

The problem is easier to understand at first in base 10. Consider the fraction -1/3. You can approximate that as a base 10 fraction:

-
0.3
-
-
-

or, better,

-
0.33
-
-
-

or, better,

-
0.333
-
-
-

and so on. No matter how many digits you’re willing to write down, the result -will never be exactly 1/3, but will be an increasingly better approximation of -1/3.

-

In the same way, no matter how many base 2 digits you’re willing to use, the -decimal value 0.1 cannot be represented exactly as a base 2 fraction. In base -2, 1/10 is the infinitely repeating fraction

-
0.0001100110011001100110011001100110011001100110011...
-
-
-

Stop at any finite number of bits, and you get an approximation. On most -machines today, floats are approximated using a binary fraction with -the numerator using the first 53 bits starting with the most significant bit and -with the denominator as a power of two. In the case of 1/10, the binary fraction -is 3602879701896397 / 2 ** 55 which is close to but not exactly -equal to the true value of 1/10.

-

Many users are not aware of the approximation because of the way values are -displayed. Python only prints a decimal approximation to the true decimal -value of the binary approximation stored by the machine. On most machines, if -Python were to print the true decimal value of the binary approximation stored -for 0.1, it would have to display

-
>>> 0.1
+            
+ +

+ 15. Floating Point + Arithmetic: Issues and Limitations +

+

+ Floating-point numbers are represented in computer hardware as + base 2 (binary) fractions. For example, the decimal fraction +

+
+
+
0.125
+
+
+
+

+ has value 1/10 + 2/100 + 5/1000, and in the same way the binary + fraction +

+
+
+
0.001
+
+
+
+

+ has value 0/2 + 0/4 + 1/8. These two fractions have identical + values, the only real difference being that the first is written + in base 10 fractional notation, and the second in base 2. +

+

+ Unfortunately, most decimal fractions cannot be represented + exactly as binary fractions. A consequence is that, in general, + the decimal floating-point numbers you enter are only + approximated by the binary floating-point numbers actually + stored in the machine. +

+

+ The problem is easier to understand at first in base 10. + Consider the fraction 1/3. You can approximate that as a base 10 + fraction: +

+
+
+
0.3
+
+
+
+

or, better,

+
+
+
0.33
+
+
+
+

or, better,

+
+
+
0.333
+
+
+
+

+ and so on. No matter how many digits you’re willing to write + down, the result will never be exactly 1/3, but will be an + increasingly better approximation of 1/3. +

+

+ In the same way, no matter how many base 2 digits you’re willing + to use, the decimal value 0.1 cannot be represented exactly as a + base 2 fraction. In base 2, 1/10 is the infinitely repeating + fraction +

+
+
+
0.0001100110011001100110011001100110011001100110011...
+
+
+
+

+ Stop at any finite number of bits, and you get an approximation. + On most machines today, floats are approximated using a binary + fraction with the numerator using the first 53 bits starting + with the most significant bit and with the denominator as a + power of two. In the case of 1/10, the binary fraction is + 3602879701896397 + / 2 + ** 55 + which is close to but not exactly equal to the true value of + 1/10. +

+

+ Many users are not aware of the approximation because of the way + values are displayed. Python only prints a decimal approximation + to the true decimal value of the binary approximation stored by + the machine. On most machines, if Python were to print the true + decimal value of the binary approximation stored for 0.1, it + would have to display +

+
+
+
>>> 0.1
 0.1000000000000000055511151231257827021181583404541015625
-
-
-

That is more digits than most people find useful, so Python keeps the number -of digits manageable by displaying a rounded value instead

-
>>> 1 / 10
+
+
+
+

+ That is more digits than most people find useful, so Python + keeps the number of digits manageable by displaying a rounded + value instead +

+
+
+
>>> 1 / 10
 0.1
-
-
-

Just remember, even though the printed result looks like the exact value -of 1/10, the actual stored value is the nearest representable binary fraction.

-

Interestingly, there are many different decimal numbers that share the same -nearest approximate binary fraction. For example, the numbers 0.1 and -0.10000000000000001 and -0.1000000000000000055511151231257827021181583404541015625 are all -approximated by 3602879701896397 / 2 ** 55. Since all of these decimal -values share the same approximation, any one of them could be displayed -while still preserving the invariant eval(repr(x)) == x.

-

Historically, the Python prompt and built-in repr() function would choose -the one with 17 significant digits, 0.10000000000000001. Starting with -Python 3.1, Python (on most systems) is now able to choose the shortest of -these and simply display 0.1.

-

Note that this is in the very nature of binary floating-point: this is not a bug -in Python, and it is not a bug in your code either. You’ll see the same kind of -thing in all languages that support your hardware’s floating-point arithmetic -(although some languages may not display the difference by default, or in all -output modes).

-

For more pleasant output, you may wish to use string formatting to produce a limited number of significant digits:

-
>>> format(math.pi, '.12g')  # give 12 significant digits
+
+
+
+

+ Just remember, even though the printed result looks like the + exact value of 1/10, the actual stored value is the nearest + representable binary fraction. +

+

+ Interestingly, there are many different decimal numbers that + share the same nearest approximate binary fraction. For example, + the numbers + 0.1 + and + 0.10000000000000001 + and + 0.1000000000000000055511151231257827021181583404541015625 + are all approximated by + 3602879701896397 + / 2 + ** 55. Since all of these decimal values share the same + approximation, any one of them could be displayed while still + preserving the invariant + eval(repr(x)) + == x. +

+

+ Historically, the Python prompt and built-in + repr() + function would choose the one with 17 significant digits, + 0.10000000000000001. Starting with Python 3.1, Python (on most systems) is now + able to choose the shortest of these and simply display + 0.1. +

+

+ Note that this is in the very nature of binary floating-point: + this is not a bug in Python, and it is not a bug in your code + either. You’ll see the same kind of thing in all languages that + support your hardware’s floating-point arithmetic (although some + languages may not display the difference by default, or + in all output modes). +

+

+ For more pleasant output, you may wish to use string formatting + to produce a limited number of significant digits: +

+
+
+
>>> format(math.pi, '.12g')  # give 12 significant digits
 '3.14159265359'
 
 >>> format(math.pi, '.2f')   # give 2 digits after the point
@@ -188,170 +349,428 @@ 

Navigation

>>> repr(math.pi) '3.141592653589793' -
-
-

It’s important to realize that this is, in a real sense, an illusion: you’re -simply rounding the display of the true machine value.

-

One illusion may beget another. For example, since 0.1 is not exactly 1/10, -summing three values of 0.1 may not yield exactly 0.3, either:

-
>>> .1 + .1 + .1 == .3
+
+
+
+

+ It’s important to realize that this is, in a real sense, an + illusion: you’re simply rounding the display of the + true machine value. +

+

+ One illusion may beget another. For example, since 0.1 is not + exactly 1/10, summing three values of 0.1 may not yield exactly + 0.3, either: +

+
+
+
>>> .1 + .1 + .1 == .3
 False
-
-
-

Also, since the 0.1 cannot get any closer to the exact value of 1/10 and -0.3 cannot get any closer to the exact value of 3/10, then pre-rounding with -round() function cannot help:

-
>>> round(.1, 1) + round(.1, 1) + round(.1, 1) == round(.3, 1)
+
+
+
+

+ Also, since the 0.1 cannot get any closer to the exact value of + 1/10 and 0.3 cannot get any closer to the exact value of 3/10, + then pre-rounding with + round() + function cannot help: +

+
+
+
>>> round(.1, 1) + round(.1, 1) + round(.1, 1) == round(.3, 1)
 False
-
-
-

Though the numbers cannot be made closer to their intended exact values, -the round() function can be useful for post-rounding so that results -with inexact values become comparable to one another:

-
>>> round(.1 + .1 + .1, 10) == round(.3, 10)
+
+
+
+

+ Though the numbers cannot be made closer to their intended exact + values, the + round() + function can be useful for post-rounding so that results with + inexact values become comparable to one another: +

+
+
+
>>> round(.1 + .1 + .1, 10) == round(.3, 10)
 True
-
-
-

Binary floating-point arithmetic holds many surprises like this. The problem -with “0.1” is explained in precise detail below, in the “Representation Error” -section. See The Perils of Floating Point -for a more complete account of other common surprises.

-

As that says near the end, “there are no easy answers.” Still, don’t be unduly -wary of floating-point! The errors in Python float operations are inherited -from the floating-point hardware, and on most machines are on the order of no -more than 1 part in 2**53 per operation. That’s more than adequate for most -tasks, but you do need to keep in mind that it’s not decimal arithmetic and -that every float operation can suffer a new rounding error.

-

While pathological cases do exist, for most casual use of floating-point -arithmetic you’ll see the result you expect in the end if you simply round the -display of your final results to the number of decimal digits you expect. -str() usually suffices, and for finer control see the str.format() -method’s format specifiers in Format String Syntax.

-

For use cases which require exact decimal representation, try using the -decimal module which implements decimal arithmetic suitable for -accounting applications and high-precision applications.

-

Another form of exact arithmetic is supported by the fractions module -which implements arithmetic based on rational numbers (so the numbers like -1/3 can be represented exactly).

-

If you are a heavy user of floating point operations you should take a look -at the Numerical Python package and many other packages for mathematical and -statistical operations supplied by the SciPy project. See <https://scipy.org>.

-

Python provides tools that may help on those rare occasions when you really -do want to know the exact value of a float. The -float.as_integer_ratio() method expresses the value of a float as a -fraction:

-
>>> x = 3.14159
+
+
+
+

+ Binary floating-point arithmetic holds many surprises like this. + The problem with “0.1” is explained in precise detail below, in + the “Representation Error” section. See + The Perils of Floating Point + for a more complete account of other common surprises. +

+

+ As that says near the end, “there are no easy answers.” Still, + don’t be unduly wary of floating-point! The errors in Python + float operations are inherited from the floating-point hardware, + and on most machines are on the order of no more than 1 part in + 2**53 per operation. That’s more than adequate for most tasks, + but you do need to keep in mind that it’s not decimal arithmetic + and that every float operation can suffer a new rounding error. +

+

+ While pathological cases do exist, for most casual use of + floating-point arithmetic you’ll see the result you expect in + the end if you simply round the display of your final results to + the number of decimal digits you expect. + str() + usually suffices, and for finer control see the + str.format() + method’s format specifiers in + Format String Syntax. +

+

+ For use cases which require exact decimal representation, try + using the + decimal + module which implements decimal arithmetic suitable for + accounting applications and high-precision applications. +

+

+ Another form of exact arithmetic is supported by the + fractions + module which implements arithmetic based on rational numbers (so + the numbers like 1/3 can be represented exactly). +

+

+ If you are a heavy user of floating point operations you should + take a look at the Numerical Python package and many other + packages for mathematical and statistical operations supplied by + the SciPy project. See <https://scipy.org>. +

+

+ Python provides tools that may help on those rare occasions when + you really do want to know the exact value of a float. + The + float.as_integer_ratio() + method expresses the value of a float as a fraction: +

+
+
+
>>> x = 3.14159
 >>> x.as_integer_ratio()
 (3537115888337719, 1125899906842624)
-
-
-

Since the ratio is exact, it can be used to losslessly recreate the -original value:

-
>>> x == 3537115888337719 / 1125899906842624
+
+
+
+

+ Since the ratio is exact, it can be used to losslessly recreate + the original value: +

+
+
+
>>> x == 3537115888337719 / 1125899906842624
 True
-
-
-

The float.hex() method expresses a float in hexadecimal (base -16), again giving the exact value stored by your computer:

-
>>> x.hex()
+
+
+
+

+ The + float.hex() + method expresses a float in hexadecimal (base 16), again giving + the exact value stored by your computer: +

+
+
+
>>> x.hex()
 '0x1.921f9f01b866ep+1'
-
-
-

This precise hexadecimal representation can be used to reconstruct -the float value exactly:

-
>>> x == float.fromhex('0x1.921f9f01b866ep+1')
+
+
+
+

+ This precise hexadecimal representation can be used to + reconstruct the float value exactly: +

+
+
+
>>> x == float.fromhex('0x1.921f9f01b866ep+1')
 True
-
-
-

Since the representation is exact, it is useful for reliably porting values -across different versions of Python (platform independence) and exchanging -data with other languages that support the same format (such as Java and C99).

-

Another helpful tool is the math.fsum() function which helps mitigate -loss-of-precision during summation. It tracks “lost digits” as values are -added onto a running total. That can make a difference in overall accuracy -so that the errors do not accumulate to the point where they affect the -final total:

-
>>> sum([0.1] * 10) == 1.0
+
+
+
+

+ Since the representation is exact, it is useful for reliably + porting values across different versions of Python (platform + independence) and exchanging data with other languages that + support the same format (such as Java and C99). +

+

+ Another helpful tool is the + math.fsum() + function which helps mitigate loss-of-precision during + summation. It tracks “lost digits” as values are added onto a + running total. That can make a difference in overall accuracy so + that the errors do not accumulate to the point where they affect + the final total: +

+
+
+
>>> sum([0.1] * 10) == 1.0
 False
 >>> math.fsum([0.1] * 10) == 1.0
 True
-
-
-
-

15.1. Representation Error

-

This section explains the “0.1” example in detail, and shows how you can perform -an exact analysis of cases like this yourself. Basic familiarity with binary -floating-point representation is assumed.

-

Representation error refers to the fact that some (most, actually) -decimal fractions cannot be represented exactly as binary (base 2) fractions. -This is the chief reason why Python (or Perl, C, C++, Java, Fortran, and many -others) often won’t display the exact decimal number you expect.

-

Why is that? 1/10 is not exactly representable as a binary fraction. Almost all -machines today (November 2000) use IEEE-754 floating point arithmetic, and -almost all platforms map Python floats to IEEE-754 “double precision”. 754 -doubles contain 53 bits of precision, so on input the computer strives to -convert 0.1 to the closest fraction it can of the form J/2**N where J is -an integer containing exactly 53 bits. Rewriting

-
1 / 10 ~= J / (2**N)
-
-
-

as

-
J ~= 2**N / 10
-
-
-

and recalling that J has exactly 53 bits (is >= 2**52 but < 2**53), -the best value for N is 56:

-
>>> 2**52 <=  2**56 // 10  < 2**53
+
+
+
+
+ +

+ 15.1. Representation + Error +

+

+ This section explains the “0.1” example in detail, and shows + how you can perform an exact analysis of cases like this + yourself. Basic familiarity with binary floating-point + representation is assumed. +

+

+ Representation error refers to the fact + that some (most, actually) decimal fractions cannot be + represented exactly as binary (base 2) fractions. This is the + chief reason why Python (or Perl, C, C++, Java, Fortran, and + many others) often won’t display the exact decimal number you + expect. +

+

+ Why is that? 1/10 is not exactly representable as a binary + fraction. Almost all machines today (November 2000) use + IEEE-754 floating point arithmetic, and almost all platforms + map Python floats to IEEE-754 “double precision”. 754 doubles + contain 53 bits of precision, so on input the computer strives + to convert 0.1 to the closest fraction it can of the form + J/2**N where J is an integer + containing exactly 53 bits. Rewriting +

+
+
+
1 / 10 ~= J / (2**N)
+
+
+
+

as

+
+
+
J ~= 2**N / 10
+
+
+
+

+ and recalling that J has exactly 53 bits (is + >= + 2**52 + but + < + 2**53), the best value for N is 56: +

+
+
+
>>> 2**52 <=  2**56 // 10  < 2**53
 True
-
-
-

That is, 56 is the only value for N that leaves J with exactly 53 bits. The -best possible value for J is then that quotient rounded:

-
>>> q, r = divmod(2**56, 10)
+
+
+
+

+ That is, 56 is the only value for N that leaves + J with exactly 53 bits. The best possible value for + J is then that quotient rounded: +

+
+
+
>>> q, r = divmod(2**56, 10)
 >>> r
 6
-
-
-

Since the remainder is more than half of 10, the best approximation is obtained -by rounding up:

-
>>> q+1
+
+
+
+

+ Since the remainder is more than half of 10, the best + approximation is obtained by rounding up: +

+
+
+
>>> q+1
 7205759403792794
-
-
-

Therefore the best possible approximation to 1/10 in 754 double precision is:

-
7205759403792794 / 2 ** 56
-
-
-

Dividing both the numerator and denominator by two reduces the fraction to:

-
3602879701896397 / 2 ** 55
-
-
-

Note that since we rounded up, this is actually a little bit larger than 1/10; -if we had not rounded up, the quotient would have been a little bit smaller than -1/10. But in no case can it be exactly 1/10!

-

So the computer never “sees” 1/10: what it sees is the exact fraction given -above, the best 754 double approximation it can get:

-
>>> 0.1 * 2 ** 55
+
+
+
+

+ Therefore the best possible approximation to 1/10 in 754 + double precision is: +

+
+
+
7205759403792794 / 2 ** 56
+
+
+
+

+ Dividing both the numerator and denominator by two reduces the + fraction to: +

+
+
+
3602879701896397 / 2 ** 55
+
+
+
+

+ Note that since we rounded up, this is actually a little bit + larger than 1/10; if we had not rounded up, the quotient would + have been a little bit smaller than 1/10. But in no case can + it be exactly 1/10! +

+

+ So the computer never “sees” 1/10: what it sees is the exact + fraction given above, the best 754 double approximation it can + get: +

+
+
+
>>> 0.1 * 2 ** 55
 3602879701896397.0
-
-
-

If we multiply that fraction by 10**55, we can see the value out to -55 decimal digits:

-
>>> 3602879701896397 * 10 ** 55 // 2 ** 55
+
+
+
+

+ If we multiply that fraction by 10**55, we can see the value + out to 55 decimal digits: +

+
+
+
>>> 3602879701896397 * 10 ** 55 // 2 ** 55
 1000000000000000055511151231257827021181583404541015625
-
-
-

meaning that the exact number stored in the computer is equal to -the decimal value 0.1000000000000000055511151231257827021181583404541015625. -Instead of displaying the full decimal value, many languages (including -older versions of Python), round the result to 17 significant digits:

-
>>> format(0.1, '.17f')
+
+
+
+

+ meaning that the exact number stored in the computer is equal + to the decimal value + 0.1000000000000000055511151231257827021181583404541015625. + Instead of displaying the full decimal value, many languages + (including older versions of Python), round the result to 17 + significant digits: +

+
+
+
>>> format(0.1, '.17f')
 '0.10000000000000001'
-
-
-

The fractions and decimal modules make these calculations -easy:

-
>>> from decimal import Decimal
+
+
+
+

+ The + fractions + and + decimal + modules make these calculations easy: +

+
+
+
>>> from decimal import Decimal
 >>> from fractions import Fraction
 
 >>> Fraction.from_float(0.1)
@@ -365,107 +784,155 @@ 

Navigation

>>> format(Decimal.from_float(0.1), '.17') '0.10000000000000001' -
-
-
-
- - +
+
+
+
+
- + + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/index.html b/DOCS/tutorial/index.html index f2c15951..37b958ca 100644 --- a/DOCS/tutorial/index.html +++ b/DOCS/tutorial/index.html @@ -1,419 +1,1438 @@ - - - - + + The Python Tutorial — Python 3.9.5 documentation - - + + - + - - - - - - + + + + + + - + - - - - - - - - - - - - + + + +
- -
-

The Python Tutorial

-

Python is an easy to learn, powerful programming language. It has efficient -high-level data structures and a simple but effective approach to -object-oriented programming. Python’s elegant syntax and dynamic typing, -together with its interpreted nature, make it an ideal language for scripting -and rapid application development in many areas on most platforms.

-

The Python interpreter and the extensive standard library are freely available -in source or binary form for all major platforms from the Python Web site, -https://www.python.org/, and may be freely distributed. The same site also -contains distributions of and pointers to many free third party Python modules, -programs and tools, and additional documentation.

-

The Python interpreter is easily extended with new functions and data types -implemented in C or C++ (or other languages callable from C). Python is also -suitable as an extension language for customizable applications.

-

This tutorial introduces the reader informally to the basic concepts and -features of the Python language and system. It helps to have a Python -interpreter handy for hands-on experience, but all examples are self-contained, -so the tutorial can be read off-line as well.

-

For a description of standard objects and modules, see The Python Standard Library. -The Python Language Reference gives a more formal definition of the language. To write -extensions in C or C++, read Extending and Embedding the Python Interpreter and -Python/C API Reference Manual. There are also several books covering Python in depth.

-

This tutorial does not attempt to be comprehensive and cover every single -feature, or even every commonly used feature. Instead, it introduces many of -Python’s most noteworthy features, and will give you a good idea of the -language’s flavor and style. After reading it, you will be able to read and -write Python modules and programs, and you will be ready to learn more about the -various Python library modules described in The Python Standard Library.

-

The Glossary is also worth going through.

-
- -
-
- - +
+ +

+ The Python Tutorial +

+

+ Python is an easy to learn, powerful programming language. It + has efficient high-level data structures and a simple but + effective approach to object-oriented programming. Python’s + elegant syntax and dynamic typing, together with its interpreted + nature, make it an ideal language for scripting and rapid + application development in many areas on most platforms. +

+

+ The Python interpreter and the extensive standard library are + freely available in source or binary form for all major + platforms from the Python Web site, + https://www.python.org/, and may be freely distributed. The same site also contains + distributions of and pointers to many free third party Python + modules, programs and tools, and additional documentation. +

+

+ The Python interpreter is easily extended with new functions and + data types implemented in C or C++ (or other languages callable + from C). Python is also suitable as an extension language for + customizable applications. +

+

+ This tutorial introduces the reader informally to the basic + concepts and features of the Python language and system. It + helps to have a Python interpreter handy for hands-on + experience, but all examples are self-contained, so the tutorial + can be read off-line as well. +

+

+ For a description of standard objects and modules, see + The Python Standard Library. + The Python Language Reference + gives a more formal definition of the language. To write + extensions in C or C++, read + Extending and Embedding the Python Interpreter + and + Python/C API Reference Manual. There are also several books covering Python in depth. +

+

+ This tutorial does not attempt to be comprehensive and cover + every single feature, or even every commonly used feature. + Instead, it introduces many of Python’s most noteworthy + features, and will give you a good idea of the language’s flavor + and style. After reading it, you will be able to read and write + Python modules and programs, and you will be ready to learn more + about the various Python library modules described in + The Python Standard Library. +

+

+ The + Glossary + is also worth going through. +

+
+ +
+
-
+ + - + diff --git a/DOCS/tutorial/inputoutput.html b/DOCS/tutorial/inputoutput.html index b967cd85..12a035d5 100644 --- a/DOCS/tutorial/inputoutput.html +++ b/DOCS/tutorial/inputoutput.html @@ -1,160 +1,356 @@ - - - - + + 7. Input and Output — Python 3.9.5 documentation - - + + - + - - - - - - + + + + + + - - - - - - - - - - - - + + + +
- -
-

7. Input and Output

-

There are several ways to present the output of a program; data can be printed -in a human-readable form, or written to a file for future use. This chapter will -discuss some of the possibilities.

-
-

7.1. Fancier Output Formatting

-

So far we’ve encountered two ways of writing values: expression statements and -the print() function. (A third way is using the write() method -of file objects; the standard output file can be referenced as sys.stdout. -See the Library Reference for more information on this.)

-

Often you’ll want more control over the formatting of your output than simply -printing space-separated values. There are several ways to format output.

-
    -
  • To use formatted string literals, begin a string -with f or F before the opening quotation mark or triple quotation mark. -Inside this string, you can write a Python expression between { and } -characters that can refer to variables or literal values.

    -
    >>> year = 2016
    +            
    + +

    + 7. Input and Output +

    +

    + There are several ways to present the output of a program; data + can be printed in a human-readable form, or written to a file + for future use. This chapter will discuss some of the + possibilities. +

    +
    + +

    + 7.1. Fancier Output + Formatting +

    +

    + So far we’ve encountered two ways of writing values: + expression statements and the + print() + function. (A third way is using the + write() + method of file objects; the standard output file can be + referenced as + sys.stdout. See the Library Reference for more information on this.) +

    +

    + Often you’ll want more control over the formatting of your + output than simply printing space-separated values. There are + several ways to format output. +

    +
      +
    • +

      + To use + formatted string literals, begin a string with + f + or + F + before the opening quotation mark or triple quotation + mark. Inside this string, you can write a Python + expression between + { + and + } + characters that can refer to variables or literal values. +

      +
      +
      +
      >>> year = 2016
       >>> event = 'Referendum'
       >>> f'Results of the {year} {event}'
       'Results of the 2016 Referendum'
      -
      -
      -
    • -
    • The str.format() method of strings requires more manual -effort. You’ll still use { and } to mark where a variable -will be substituted and can provide detailed formatting directives, -but you’ll also need to provide the information to be formatted.

      -
      >>> yes_votes = 42_572_654
      +
      +
      +
      +
    • +
    • +

      + The + str.format() + method of strings requires more manual effort. You’ll + still use + { + and + } + to mark where a variable will be substituted and can + provide detailed formatting directives, but you’ll also + need to provide the information to be formatted. +

      +
      +
      +
      >>> yes_votes = 42_572_654
       >>> no_votes = 43_132_495
       >>> percentage = yes_votes / (yes_votes + no_votes)
       >>> '{:-9} YES votes  {:2.2%}'.format(yes_votes, percentage)
       ' 42572654 YES votes  49.67%'
      -
      -
      -
    • -
    • Finally, you can do all the string handling yourself by using string slicing and -concatenation operations to create any layout you can imagine. The -string type has some methods that perform useful operations for padding -strings to a given column width.

    • -
    -

    When you don’t need fancy output but just want a quick display of some -variables for debugging purposes, you can convert any value to a string with -the repr() or str() functions.

    -

    The str() function is meant to return representations of values which are -fairly human-readable, while repr() is meant to generate representations -which can be read by the interpreter (or will force a SyntaxError if -there is no equivalent syntax). For objects which don’t have a particular -representation for human consumption, str() will return the same value as -repr(). Many values, such as numbers or structures like lists and -dictionaries, have the same representation using either function. Strings, in -particular, have two distinct representations.

    -

    Some examples:

    -
    >>> s = 'Hello, world.'
    +
    +
    +
    +
  • +
  • +

    + Finally, you can do all the string handling yourself by + using string slicing and concatenation operations to + create any layout you can imagine. The string type has + some methods that perform useful operations for padding + strings to a given column width. +

    +
  • +
+

+ When you don’t need fancy output but just want a quick display + of some variables for debugging purposes, you can convert any + value to a string with the + repr() + or + str() + functions. +

+

+ The + str() + function is meant to return representations of values which + are fairly human-readable, while + repr() + is meant to generate representations which can be read by the + interpreter (or will force a + SyntaxError + if there is no equivalent syntax). For objects which don’t + have a particular representation for human consumption, + str() + will return the same value as + repr(). Many values, such as numbers or structures like lists and + dictionaries, have the same representation using either + function. Strings, in particular, have two distinct + representations. +

+

Some examples:

+
+
+
>>> s = 'Hello, world.'
 >>> str(s)
 'Hello, world.'
 >>> repr(s)
@@ -174,102 +370,321 @@ 

Navigation

>>> # The argument to repr() may be any Python object: ... repr((x, y, ('spam', 'eggs'))) "(32.5, 40000, ('spam', 'eggs'))" -
-
-

The string module contains a Template class that offers -yet another way to substitute values into strings, using placeholders like -$x and replacing them with values from a dictionary, but offers much less -control of the formatting.

-
-

7.1.1. Formatted String Literals

-

Formatted string literals (also called f-strings for -short) let you include the value of Python expressions inside a string by -prefixing the string with f or F and writing expressions as -{expression}.

-

An optional format specifier can follow the expression. This allows greater -control over how the value is formatted. The following example rounds pi to -three places after the decimal:

-
>>> import math
+
+
+
+

+ The + string + module contains a + Template + class that offers yet another way to substitute values into + strings, using placeholders like + $x + and replacing them with values from a dictionary, but offers + much less control of the formatting. +

+
+ +

+ 7.1.1. Formatted String + Literals +

+

+ Formatted string literals + (also called f-strings for short) let you include the value + of Python expressions inside a string by prefixing the + string with + f + or + F + and writing expressions as + {expression}. +

+

+ An optional format specifier can follow the expression. This + allows greater control over how the value is formatted. The + following example rounds pi to three places after the + decimal: +

+
+
+
>>> import math
 >>> print(f'The value of pi is approximately {math.pi:.3f}.')
 The value of pi is approximately 3.142.
-
-
-

Passing an integer after the ':' will cause that field to be a minimum -number of characters wide. This is useful for making columns line up.

-
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
+
+
+
+

+ Passing an integer after the + ':' + will cause that field to be a minimum number of characters + wide. This is useful for making columns line up. +

+
+
+
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
 >>> for name, phone in table.items():
 ...     print(f'{name:10} ==> {phone:10d}')
 ...
 Sjoerd     ==>       4127
 Jack       ==>       4098
 Dcab       ==>       7678
-
-
-

Other modifiers can be used to convert the value before it is formatted. -'!a' applies ascii(), '!s' applies str(), and '!r' -applies repr():

-
>>> animals = 'eels'
+
+
+
+

+ Other modifiers can be used to convert the value before it + is formatted. + '!a' + applies + ascii(), + '!s' + applies + str(), and + '!r' + applies + repr(): +

+
+
+
>>> animals = 'eels'
 >>> print(f'My hovercraft is full of {animals}.')
 My hovercraft is full of eels.
 >>> print(f'My hovercraft is full of {animals!r}.')
 My hovercraft is full of 'eels'.
-
-
-

For a reference on these format specifications, see -the reference guide for the Format Specification Mini-Language.

-
-
-

7.1.2. The String format() Method

-

Basic usage of the str.format() method looks like this:

-
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
+
+
+
+

+ For a reference on these format specifications, see the + reference guide for the + Format Specification Mini-Language. +

+
+
+ +

+ 7.1.2. The String + format() Method +

+

+ Basic usage of the + str.format() + method looks like this: +

+
+
+
>>> print('We are the {} who say "{}!"'.format('knights', 'Ni'))
 We are the knights who say "Ni!"
-
-
-

The brackets and characters within them (called format fields) are replaced with -the objects passed into the str.format() method. A number in the -brackets can be used to refer to the position of the object passed into the -str.format() method.

-
>>> print('{0} and {1}'.format('spam', 'eggs'))
+
+
+
+

+ The brackets and characters within them (called format + fields) are replaced with the objects passed into the + str.format() + method. A number in the brackets can be used to refer to the + position of the object passed into the + str.format() + method. +

+
+
+
>>> print('{0} and {1}'.format('spam', 'eggs'))
 spam and eggs
 >>> print('{1} and {0}'.format('spam', 'eggs'))
 eggs and spam
-
-
-

If keyword arguments are used in the str.format() method, their values -are referred to by using the name of the argument.

-
>>> print('This {food} is {adjective}.'.format(
+
+
+
+

+ If keyword arguments are used in the + str.format() + method, their values are referred to by using the name of + the argument. +

+
+
+
>>> print('This {food} is {adjective}.'.format(
 ...       food='spam', adjective='absolutely horrible'))
 This spam is absolutely horrible.
-
-
-

Positional and keyword arguments can be arbitrarily combined:

-
>>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
+
+
+
+

+ Positional and keyword arguments can be arbitrarily + combined: +

+
+
+
>>> print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
                                                        other='Georg'))
 The story of Bill, Manfred, and Georg.
-
-
-

If you have a really long format string that you don’t want to split up, it -would be nice if you could reference the variables to be formatted by name -instead of by position. This can be done by simply passing the dict and using -square brackets '[]' to access the keys.

-
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
+
+
+
+

+ If you have a really long format string that you don’t want + to split up, it would be nice if you could reference the + variables to be formatted by name instead of by position. + This can be done by simply passing the dict and using square + brackets + '[]' + to access the keys. +

+
+
+
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
 >>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; '
 ...       'Dcab: {0[Dcab]:d}'.format(table))
 Jack: 4098; Sjoerd: 4127; Dcab: 8637678
-
-
-

This could also be done by passing the table as keyword arguments with the ‘**’ -notation.

-
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
+
+
+
+

+ This could also be done by passing the table as keyword + arguments with the ‘**’ notation. +

+
+
+
>>> table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
 >>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
 Jack: 4098; Sjoerd: 4127; Dcab: 8637678
-
-
-

This is particularly useful in combination with the built-in function -vars(), which returns a dictionary containing all local variables.

-

As an example, the following lines produce a tidily-aligned -set of columns giving integers and their squares and cubes:

-
>>> for x in range(1, 11):
+
+
+
+

+ This is particularly useful in combination with the built-in + function + vars(), which returns a dictionary containing all local + variables. +

+

+ As an example, the following lines produce a tidily-aligned + set of columns giving integers and their squares and cubes: +

+
+
+
>>> for x in range(1, 11):
 ...     print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
 ...
  1   1    1
@@ -282,15 +697,44 @@ 

Navigation

8 64 512 9 81 729 10 100 1000 -
-
-

For a complete overview of string formatting with str.format(), see -Format String Syntax.

-
-
-

7.1.3. Manual String Formatting

-

Here’s the same table of squares and cubes, formatted manually:

-
>>> for x in range(1, 11):
+
+
+
+

+ For a complete overview of string formatting with + str.format(), see + Format String Syntax. +

+
+
+

+ 7.1.3. Manual String + Formatting +

+

+ Here’s the same table of squares and cubes, formatted + manually: +

+
+
+
>>> for x in range(1, 11):
 ...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
 ...     # Note use of 'end' on previous line
 ...     print(repr(x*x*x).rjust(4))
@@ -305,171 +749,532 @@ 

7.1.3. Manual String Formatting 8 64 512 9 81 729 10 100 1000 -

-
-

(Note that the one space between each column was added by the -way print() works: it always adds spaces between its arguments.)

-

The str.rjust() method of string objects right-justifies a string in a -field of a given width by padding it with spaces on the left. There are -similar methods str.ljust() and str.center(). These methods do -not write anything, they just return a new string. If the input string is too -long, they don’t truncate it, but return it unchanged; this will mess up your -column lay-out but that’s usually better than the alternative, which would be -lying about a value. (If you really want truncation you can always add a -slice operation, as in x.ljust(n)[:n].)

-

There is another method, str.zfill(), which pads a numeric string on the -left with zeros. It understands about plus and minus signs:

-
>>> '12'.zfill(5)
+
+
+
+

+ (Note that the one space between each column was added by + the way + print() + works: it always adds spaces between its arguments.) +

+

+ The + str.rjust() + method of string objects right-justifies a string in a field + of a given width by padding it with spaces on the left. + There are similar methods + str.ljust() + and + str.center(). These methods do not write anything, they just return a + new string. If the input string is too long, they don’t + truncate it, but return it unchanged; this will mess up your + column lay-out but that’s usually better than the + alternative, which would be lying about a value. (If you + really want truncation you can always add a slice operation, + as in + x.ljust(n)[:n].) +

+

+ There is another method, + str.zfill(), which pads a numeric string on the left with zeros. It + understands about plus and minus signs: +

+
+
+
>>> '12'.zfill(5)
 '00012'
 >>> '-3.14'.zfill(7)
 '-003.14'
 >>> '3.14159265359'.zfill(5)
 '3.14159265359'
-
-
-
-
-

7.1.4. Old string formatting

-

The % operator (modulo) can also be used for string formatting. Given 'string' -% values, instances of % in string are replaced with zero or more -elements of values. This operation is commonly known as string -interpolation. For example:

-
>>> import math
+
+
+
+
+
+

+ 7.1.4. Old string + formatting +

+

+ The % operator (modulo) can also be used for string + formatting. Given + 'string' + % + values, instances of + % + in + string + are replaced with zero or more elements of + values. This operation is commonly known as string interpolation. + For example: +

+
+
+
>>> import math
 >>> print('The value of pi is approximately %5.3f.' % math.pi)
 The value of pi is approximately 3.142.
-
-
-

More information can be found in the printf-style String Formatting section.

-
-
-
-

7.2. Reading and Writing Files

-

open() returns a file object, and is most commonly used with -two arguments: open(filename, mode).

-
>>> f = open('workfile', 'w')
-
-
-

The first argument is a string containing the filename. The second argument is -another string containing a few characters describing the way in which the file -will be used. mode can be 'r' when the file will only be read, 'w' -for only writing (an existing file with the same name will be erased), and -'a' opens the file for appending; any data written to the file is -automatically added to the end. 'r+' opens the file for both reading and -writing. The mode argument is optional; 'r' will be assumed if it’s -omitted.

-

Normally, files are opened in text mode, that means, you read and write -strings from and to the file, which are encoded in a specific encoding. If -encoding is not specified, the default is platform dependent (see -open()). 'b' appended to the mode opens the file in -binary mode: now the data is read and written in the form of bytes -objects. This mode should be used for all files that don’t contain text.

-

In text mode, the default when reading is to convert platform-specific line -endings (\n on Unix, \r\n on Windows) to just \n. When writing in -text mode, the default is to convert occurrences of \n back to -platform-specific line endings. This behind-the-scenes modification -to file data is fine for text files, but will corrupt binary data like that in -JPEG or EXE files. Be very careful to use binary mode when -reading and writing such files.

-

It is good practice to use the with keyword when dealing -with file objects. The advantage is that the file is properly closed -after its suite finishes, even if an exception is raised at some -point. Using with is also much shorter than writing -equivalent try-finally blocks:

-
>>> with open('workfile') as f:
+
+
+
+

+ More information can be found in the + printf-style String Formatting + section. +

+
+
+
+ +

+ 7.2. Reading and Writing + Files +

+

+ open() + returns a + file object, and is most commonly used with two arguments: + open(filename, + mode). +

+
+
+
>>> f = open('workfile', 'w')
+
+
+
+

+ The first argument is a string containing the filename. The + second argument is another string containing a few characters + describing the way in which the file will be used. + mode can be + 'r' + when the file will only be read, + 'w' + for only writing (an existing file with the same name will be + erased), and + 'a' + opens the file for appending; any data written to the file is + automatically added to the end. + 'r+' + opens the file for both reading and writing. The + mode argument is optional; + 'r' + will be assumed if it’s omitted. +

+

+ Normally, files are opened in text mode, + that means, you read and write strings from and to the file, + which are encoded in a specific encoding. If encoding is not + specified, the default is platform dependent (see + open()). + 'b' + appended to the mode opens the file in + binary mode: now the data is read and + written in the form of bytes objects. This mode should be used + for all files that don’t contain text. +

+

+ In text mode, the default when reading is to convert + platform-specific line endings (\n + on Unix, + \r\n + on Windows) to just + \n. When writing in text mode, the default is to convert + occurrences of + \n + back to platform-specific line endings. This behind-the-scenes + modification to file data is fine for text files, but will + corrupt binary data like that in + JPEG + or + EXE + files. Be very careful to use binary mode when reading and + writing such files. +

+

+ It is good practice to use the + with + keyword when dealing with file objects. The advantage is that + the file is properly closed after its suite finishes, even if + an exception is raised at some point. Using + with + is also much shorter than writing equivalent + try-finally + blocks: +

+
+
+
>>> with open('workfile') as f:
 ...     read_data = f.read()
 
 >>> # We can check that the file has been automatically closed.
 >>> f.closed
 True
-
-
-

If you’re not using the with keyword, then you should call -f.close() to close the file and immediately free up any system -resources used by it.

-
-

Warning

-

Calling f.write() without using the with keyword or calling -f.close() might result in the arguments -of f.write() not being completely written to the disk, even if the -program exits successfully.

-
-

After a file object is closed, either by a with statement -or by calling f.close(), attempts to use the file object will -automatically fail.

-
>>> f.close()
+
+
+
+

+ If you’re not using the + with + keyword, then you should call + f.close() + to close the file and immediately free up any system resources + used by it. +

+
+

Warning

+

+ Calling + f.write() + without using the + with + keyword or calling + f.close() + might result in the arguments of + f.write() + not being completely written to the disk, even if the + program exits successfully. +

+
+

+ After a file object is closed, either by a + with + statement or by calling + f.close(), attempts to use the file object will automatically fail. +

+
+
+
>>> f.close()
 >>> f.read()
 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: I/O operation on closed file.
-
-
-
-

7.2.1. Methods of File Objects

-

The rest of the examples in this section will assume that a file object called -f has already been created.

-

To read a file’s contents, call f.read(size), which reads some quantity of -data and returns it as a string (in text mode) or bytes object (in binary mode). -size is an optional numeric argument. When size is omitted or negative, the -entire contents of the file will be read and returned; it’s your problem if the -file is twice as large as your machine’s memory. Otherwise, at most size -characters (in text mode) or size bytes (in binary mode) are read and returned. -If the end of the file has been reached, f.read() will return an empty -string ('').

-
>>> f.read()
+
+
+
+
+ +

+ 7.2.1. Methods of File + Objects +

+

+ The rest of the examples in this section will assume that a + file object called + f + has already been created. +

+

+ To read a file’s contents, call + f.read(size), which reads some quantity of data and returns it as a + string (in text mode) or bytes object (in binary mode). + size is an optional numeric argument. When + size is omitted or negative, the entire contents of + the file will be read and returned; it’s your problem if the + file is twice as large as your machine’s memory. Otherwise, + at most size characters (in text mode) or + size bytes (in binary mode) are read and returned. + If the end of the file has been reached, + f.read() + will return an empty string (''). +

+
+
+
>>> f.read()
 'This is the entire file.\n'
 >>> f.read()
 ''
-
-
-

f.readline() reads a single line from the file; a newline character (\n) -is left at the end of the string, and is only omitted on the last line of the -file if the file doesn’t end in a newline. This makes the return value -unambiguous; if f.readline() returns an empty string, the end of the file -has been reached, while a blank line is represented by '\n', a string -containing only a single newline.

-
>>> f.readline()
+
+
+
+

+ f.readline() + reads a single line from the file; a newline character + (\n) is left at the end of the string, and is only omitted on + the last line of the file if the file doesn’t end in a + newline. This makes the return value unambiguous; if + f.readline() + returns an empty string, the end of the file has been + reached, while a blank line is represented by + '\n', a string containing only a single newline. +

+
+
+
>>> f.readline()
 'This is the first line of the file.\n'
 >>> f.readline()
 'Second line of the file\n'
 >>> f.readline()
 ''
-
-
-

For reading lines from a file, you can loop over the file object. This is memory -efficient, fast, and leads to simple code:

-
>>> for line in f:
+
+
+
+

+ For reading lines from a file, you can loop over the file + object. This is memory efficient, fast, and leads to simple + code: +

+
+
+
>>> for line in f:
 ...     print(line, end='')
 ...
 This is the first line of the file.
 Second line of the file
-
-
-

If you want to read all the lines of a file in a list you can also use -list(f) or f.readlines().

-

f.write(string) writes the contents of string to the file, returning -the number of characters written.

-
>>> f.write('This is a test\n')
+
+
+
+

+ If you want to read all the lines of a file in a list you + can also use + list(f) + or + f.readlines(). +

+

+ f.write(string) + writes the contents of string to the file, + returning the number of characters written. +

+
+
+
>>> f.write('This is a test\n')
 15
-
-
-

Other types of objects need to be converted – either to a string (in text mode) -or a bytes object (in binary mode) – before writing them:

-
>>> value = ('the answer', 42)
+
+
+
+

+ Other types of objects need to be converted – either to a + string (in text mode) or a bytes object (in binary mode) – + before writing them: +

+
+
+
>>> value = ('the answer', 42)
 >>> s = str(value)  # convert the tuple to string
 >>> f.write(s)
 18
-
-
-

f.tell() returns an integer giving the file object’s current position in the file -represented as number of bytes from the beginning of the file when in binary mode and -an opaque number when in text mode.

-

To change the file object’s position, use f.seek(offset, whence). The position is computed -from adding offset to a reference point; the reference point is selected by -the whence argument. A whence value of 0 measures from the beginning -of the file, 1 uses the current file position, and 2 uses the end of the file as -the reference point. whence can be omitted and defaults to 0, using the -beginning of the file as the reference point.

-
>>> f = open('workfile', 'rb+')
+
+
+
+

+ f.tell() + returns an integer giving the file object’s current position + in the file represented as number of bytes from the + beginning of the file when in binary mode and an opaque + number when in text mode. +

+

+ To change the file object’s position, use + f.seek(offset, + whence). The position is computed from adding offset to a + reference point; the reference point is selected by the + whence argument. A whence value of 0 + measures from the beginning of the file, 1 uses the current + file position, and 2 uses the end of the file as the + reference point. whence can be omitted and defaults + to 0, using the beginning of the file as the reference + point. +

+
+
+
>>> f = open('workfile', 'rb+')
 >>> f.write(b'0123456789abcdef')
 16
 >>> f.seek(5)      # Go to the 6th byte in the file
@@ -480,182 +1285,433 @@ 

7.1.4. Old string formatting13 >>> f.read(1) b'd' -

-
-

In text files (those opened without a b in the mode string), only seeks -relative to the beginning of the file are allowed (the exception being seeking -to the very file end with seek(0, 2)) and the only valid offset values are -those returned from the f.tell(), or zero. Any other offset value produces -undefined behaviour.

-

File objects have some additional methods, such as isatty() and -truncate() which are less frequently used; consult the Library -Reference for a complete guide to file objects.

-
-
-

7.2.2. Saving structured data with json

-

Strings can easily be written to and read from a file. Numbers take a bit more -effort, since the read() method only returns strings, which will have to -be passed to a function like int(), which takes a string like '123' -and returns its numeric value 123. When you want to save more complex data -types like nested lists and dictionaries, parsing and serializing by hand -becomes complicated.

-

Rather than having users constantly writing and debugging code to save -complicated data types to files, Python allows you to use the popular data -interchange format called JSON (JavaScript Object Notation). The standard module called json can take Python -data hierarchies, and convert them to string representations; this process is -called serializing. Reconstructing the data from the string representation -is called deserializing. Between serializing and deserializing, the -string representing the object may have been stored in a file or data, or -sent over a network connection to some distant machine.

-
-

Note

-

The JSON format is commonly used by modern applications to allow for data -exchange. Many programmers are already familiar with it, which makes -it a good choice for interoperability.

-
-

If you have an object x, you can view its JSON string representation with a -simple line of code:

-
>>> import json
+
+
+
+

+ In text files (those opened without a + b + in the mode string), only seeks relative to the beginning of + the file are allowed (the exception being seeking to the + very file end with + seek(0, + 2)) and the only valid offset values are those + returned from the + f.tell(), or zero. Any other offset value produces + undefined behaviour. +

+

+ File objects have some additional methods, such as + isatty() + and + truncate() + which are less frequently used; consult the Library + Reference for a complete guide to file objects. +

+
+
+ +

+ 7.2.2. Saving structured + data with + json +

+

+ Strings can easily be written to and read from a file. + Numbers take a bit more effort, since the + read() + method only returns strings, which will have to be passed to + a function like + int(), which takes a string like + '123' + and returns its numeric value 123. When you want to save + more complex data types like nested lists and dictionaries, + parsing and serializing by hand becomes complicated. +

+

+ Rather than having users constantly writing and debugging + code to save complicated data types to files, Python allows + you to use the popular data interchange format called + JSON (JavaScript Object Notation). The standard module called + json + can take Python data hierarchies, and convert them to string + representations; this process is called + serializing. Reconstructing the data + from the string representation is called + deserializing. Between serializing and + deserializing, the string representing the object may have + been stored in a file or data, or sent over a network + connection to some distant machine. +

+
+

Note

+

+ The JSON format is commonly used by modern applications to + allow for data exchange. Many programmers are already + familiar with it, which makes it a good choice for + interoperability. +

+
+

+ If you have an object + x, you can view its JSON string representation with a simple + line of code: +

+
+
+
>>> import json
 >>> x = [1, 'simple', 'list']
 >>> json.dumps(x)
 '[1, "simple", "list"]'
-
-
-

Another variant of the dumps() function, called dump(), -simply serializes the object to a text file. So if f is a -text file object opened for writing, we can do this:

-
json.dump(x, f)
-
-
-

To decode the object again, if f is a text file object which has -been opened for reading:

-
x = json.load(f)
-
-
-

This simple serialization technique can handle lists and dictionaries, but -serializing arbitrary class instances in JSON requires a bit of extra effort. -The reference for the json module contains an explanation of this.

-
-

See also

-

pickle - the pickle module

-

Contrary to JSON, pickle is a protocol which allows -the serialization of arbitrarily complex Python objects. As such, it is -specific to Python and cannot be used to communicate with applications -written in other languages. It is also insecure by default: -deserializing pickle data coming from an untrusted source can execute -arbitrary code, if the data was crafted by a skilled attacker.

-
-
-
-
- - + +
+
+

+ Another variant of the + dumps() + function, called + dump(), simply serializes the object to a + text file. So if + f + is a + text file + object opened for writing, we can do this: +

+
+
+
json.dump(x, f)
+
+
+
+

+ To decode the object again, if + f + is a + text file + object which has been opened for reading: +

+
+
+
x = json.load(f)
+
+
+
+

+ This simple serialization technique can handle lists and + dictionaries, but serializing arbitrary class instances in + JSON requires a bit of extra effort. The reference for the + json + module contains an explanation of this. +

+
+

See also

+

+ pickle + - the pickle module +

+

+ Contrary to + JSON, pickle is a protocol which allows the + serialization of arbitrarily complex Python objects. As + such, it is specific to Python and cannot be used to + communicate with applications written in other languages. + It is also insecure by default: deserializing pickle data + coming from an untrusted source can execute arbitrary + code, if the data was crafted by a skilled attacker. +

+
+
+
+
- + + - - \ No newline at end of file + + diff --git a/DOCS/tutorial/right.html b/DOCS/tutorial/right.html index 4c50ebb9..136dfaa5 100644 --- a/DOCS/tutorial/right.html +++ b/DOCS/tutorial/right.html @@ -27,7 +27,7 @@

Folders: 1
Files: 19
-Size of all files: 809562 KB

+Size of all files: 862424 KB

\ No newline at end of file diff --git a/README.html b/README.html new file mode 100644 index 00000000..b379cb6c --- /dev/null +++ b/README.html @@ -0,0 +1,6474 @@ + + + + + + + README + + + + + + + +

Python Programming For Beginners

+

Python 3, with VSCode as the IDE.

+


+

+

Python is a very popular coding language. Little people use it for serious projects, but it is still useful to learn. It was created in 1991 by Guido van Rossum.
+Look at a few uses of python:

+
    +
  • Desktop Applications
  • +
  • Web Applications
  • +
  • Complex Scientific Equations
  • +
+

Let’s look at a few reasons why it is useful:

+
    +
  • Readable/Understandable Code
  • +
  • Compatible with other systems/platforms
  • +
  • Millions of useful modules
  • +
+

These are just a few, you can find a bunch more by researching it.

+

What we will be teaching you is specifically python 3. This is the most updated version, but the version 2 is still widely used.
+Here we will be using replit, but there are multiple text editors you can find.

+ +

Python syntax was made for readability, and easy editing. For example, the python language uses a : and indented code, while javascript and others generally use {} and indented code.

+

Lets create a python 3 repl, and call it Hello World. Now you have a blank file called main.py. Now let us write our first line of code:

+

helloworld.py

+
print('Hello world!')
+
+

Brian Kernighan actually wrote the first “Hello, World!” program as part of the documentation for the BCPL programming language developed by Martin Richards.

+
+

Now, press the run button, which obviously runs the code. If you are not using replit, this will not work. You should research how to run a file with your text editor.

+

If you look to your left at the console where hello world was just printed, you can see a >, >>>, or $ depending on what you are using. After the prompt, try typing a line of code.

+
Python 3.6.1 (default, Jun 21 2017, 18:48:35)
+[GCC 4.9.2] on linux
+Type "help", "copyright", "credits" or "license" for more information.
+> print('Testing command line')
+Testing command line
+> print('Are you sure this works?')
+Are you sure this works?
+> 
+

The command line allows you to execute single lines of code at a time. It is often used when trying out a new function or method in the language.

+

Another cool thing that you can generally do with all languages, are comments. In python, a comment starts with a #. The computer ignores all text starting after the #.

+

shortcom.py

+
# Write some comments!
+

If you have a huge comment, do not comment all the 350 lines, just put ''' before it, and ''' at the end. Technically, this is not a comment but a string, but the computer still ignores it, so we will use it.

+

longcom.py

+
'''
+Dear PYer,
+I am confused about how you said you could use triple quotes to make
+SUPER
+LONG
+COMMENTS
+!
+
+I am wondering if this is true,
+and if so, 
+I am wondering if this is correct.
+
+Could you help me with this?
+
+Thanks,
+Random guy who used your tutorial.
+'''
+print('Testing')
+

Unlike many other languages, there is no var, let, or const to declare a variable in python. You simply go name = 'value'.

+

vars1.py

+
x = 5
+y = 7
+z = x*y # 35
+print(z) # => 35
+

Remember, there is a difference between integers and strings. Remember: String = "". To convert between these two, you can put an int in a str() function, and a string in a int() function. There is also a less used one, called a float. Mainly, these are integers with decimals. Change them using the float() command.

+

vars2.py

+
x = 5
+x = str(x)
+b = '5'
+b = int(b)
+print('x = ', x, '; b = ', str(b), ';') # => x = 5; b = 5;
+

Instead of using the , in the print function, you can put a + to combine the variables and string.

+

There are many operators in python:

+
    +
  • +
  • +
  • -
  • +
  • /
  • +
  • *
    +These operators are the same in most languages, and allow for addition, subtraction, division, and multiplicaiton.
    +Now, we can look at a few more complicated ones:
  • +
  • %
  • +
  • //
  • +
  • **
  • +
  • +=
  • +
  • -=
  • +
  • /=
  • +
  • *=
    +Research these if you want to find out more…
  • +
+

simpleops.py

+
x = 4
+a = x + 1
+a = x - 1
+a = x * 2
+a = x / 2
+

You should already know everything shown above, as it is similar to other languages. If you continue down, you will see more complicated ones.

+

complexop.py

+
a += 1
+a -= 1
+a *= 2
+a /= 2
+

The ones above are to edit the current value of the variable.
+Sorry to JS users, as there is no i++; or anything.

+
+

Fun Fact:
+The python language was named after Monty Python.

+
+

If you really want to know about the others, view Py Operators

+

Like the title?
+Anyways, a ' and a " both indicate a string, but do not combine them!

+

quotes.py

+
x = 'hello' # Good
+x = "hello" # Good
+x = "hello' # ERRORRR!!!
+

slicing.py

+

String Slicing

+

You can look at only certain parts of the string by slicing it, using [num:num].
+The first number stands for how far in you go from the front, and the second stands for how far in you go from the back.

+
x = 'Hello everybody!'
+x[1] # 'e'
+x[-1] # '!'
+x[5] # ' '
+x[1:] # 'ello everybody!'
+x[:-1] # 'Hello everybod'
+x[2:-3] # 'llo everyb'
+

Methods and Functions

+

Here is a list of functions/methods we will go over:

+
    +
  • .strip()
  • +
  • len()
  • +
  • .lower()
  • +
  • .upper()
  • +
  • .replace()
  • +
  • .split()
  • +
+

I will make you try these out yourself. See if you can figure out how they work.

+

strings.py

+
x = " Testing, testing, testing, testing       "
+print(x.strip())
+print(len(x))
+print(x.lower())
+print(x.upper())
+print(x.replace('test', 'runn'))
+print(x.split(','))
+

Good luck, see you when you come back!

+

Input is a function that gathers input entered from the user in the command line. It takes one optional parameter, which is the users prompt.

+

inp.py

+
print('Type something: ')
+x = input()
+print('Here is what you said: ', x)
+

If you wanted to make it smaller, and look neater to the user, you could do…

+

inp2.py

+
print('Here is what you said: ', input('Type something: '))
+

Running:
+inp.py

+
Type something:
+Hello World
+Here is what you said: Hello World
+

inp2.py

+
Type something: Hello World
+Here is what you said: Hello World
+

Python has created a lot of functions that are located in other .py files. You need to import these modules to gain access to the,, You may wonder why python did this. The purpose of separate modules is to make python faster. Instead of storing millions and millions of functions, , it only needs a few basic ones. To import a module, you must write input <modulename>. Do not add the .py extension to the file name. In this example , we will be using a python created module named random.

+

module.py

+
import random
+

Now, I have access to all functions in the random.py file. To access a specific function in the module, you would do <module>.<function>. For example:

+

module2.py

+
import random
+print(random.randint(3,5)) # Prints a random number between 3 and 5
+
+

Pro Tip:
+Do from random import randint to not have to do random.randint(), just randint()
+To import all functions from a module, you could do from random import *

+
+

Loops allow you to repeat code over and over again. This is useful if you want to print Hi with a delay of one second 100 times.

+

for Loop

+

The for loop goes through a list of variables, making a seperate variable equal one of the list every time.
+Let’s say we wanted to create the example above.

+

loop.py

+
from time import sleep
+for i in range(100):
+     print('Hello')
+     sleep(.3)
+

This will print Hello with a .3 second delay 100 times. This is just one way to use it, but it is usually used like this:

+

loop2.py

+
import time
+for number in range(100):
+     print(number)
+     time.sleep(.1)
+

+

while Loop

+

The while loop runs the code while something stays true. You would put while <expression>. Every time the loop runs, it evaluates if the expression is True. It it is, it runs the code, if not it continues outside of the loop. For example:

+

while.py

+
while True: # Runs forever
+     print('Hello World!')
+

Or you could do:

+

while2.py

+
import random
+position = '<placeholder>'
+while position != 1: # will run at least once
+    position = random.randint(1, 10)
+    print(position)
+

The if statement allows you to check if something is True. If so, it runs the code, if not, it continues on. It is kind of like a while loop, but it executes only once. An if statement is written:

+

if.py

+
import random
+num = random.randint(1, 10)
+if num == 3:
+     print('num is 3. Hooray!!!')
+if num > 5:
+     print('Num is greater than 5')
+if num == 12:
+     print('Num is 12, which means that there is a problem with the python language, see if you can figure it out. Extra credit if you can figure it out!')
+

Now, you may think that it would be better if you could make it print only one message. Not as many that are True. You can do that with an elif statement:

+

elif.py

+
import random
+num = random.randint(1, 10)
+if num == 3:
+    print('Num is three, this is the only msg you will see.')
+elif num > 2:
+    print('Num is not three, but is greater than 1')
+

Now, you may wonder how to run code if none work. Well, there is a simple statement called else:

+

else.py

+
import random
+num = random.randint(1, 10)
+if num == 3:
+    print('Num is three, this is the only msg you will see.')
+elif num > 2:
+    print('Num is not three, but is greater than 1')
+else:
+    print('No category')
+

So far, you have only seen how to use functions other people have made. Let use the example that you want to print the a random number between 1 and 9, and print different text every time.
+It is quite tiring to type:

+

Characters: 389

+

nofunc.py

+
import random
+print(random.randint(1, 9))
+print('Wow that was interesting.')
+print(random.randint(1, 9))
+print('Look at the number above ^')
+print(random.randint(1, 9))
+print('All of these have been interesting numbers.')
+print(random.randint(1, 9))
+print("these random.randint's are getting annoying to type")
+print(random.randint(1, 9))
+print('Hi')
+print(random.randint(1, 9))
+print('j')
+

Now with functions, you can seriously lower the amount of characters:

+

Characters: 254

+

functions.py

+
import random
+def r(t):
+     print(random.randint(1, 9))
+     print(t)
+r('Wow that was interesting.')
+r('Look at the number above ^')
+r('All of these have been interesting numbers.')
+r("these random.randint's are getting annoying to type")
+r('Hi')
+r('j')
+

+

Chapter 01 - Getting Ready with Python

+

Installing Python 3, And Launching Python Shell

+

This video should help you get up and running with Python 3 - Installing Python 3 and Launch Python Shell

+

Installing Python is really a cakewalk. Search for “Python download” on www.google.com. Download the installable and install it.

+

A quick word of caution on Windows - Make sure that you have the check-box “Add Python 3.6 to PATH”, checked.

+

Once you have installed Python, you can launch the Python Shell. - Windows - Launch cmd prompt by typing in ‘cmd’ command. - Mac or Linux - Launch up terminal.

+

Command to launch Python 3 is different in Mac. - In Mac, type in python3 - In other operating systems, including windows, type python

+

You can type code in python shell and code as well!

+

You can use print(5*4), and it shows 20.

+

You can execute the code, and the shell would immediately give you output.

+

Using the the Python Shell is an awesome way to learn Python.

+

Chapter 02 - Introduction To Python Programming

+

Most programmers find programming a lot of fun, and besides, it also gets their work done.

+

Programming mainly involves problem solving, where one makes use of a computer to solve a real world problem.

+

During our journey here, we will approach programming in a very different way. We will not only introduce you to the Python language, but also help you pick up essential problem solving skills.

+

As a programmer, you need to be able to look at a problem, and identify the important programming concepts relevant to solving it. Finally, you need to be able to use the language features and syntax, to express your solution on the computer. While all this looks complex, we want to make it easy for you. Together, we will tackle a variety of programming challenges, using these same steps. We will start with simple challenges (such as a Multiplication Table), and gradually increase the difficulty level over the duration of this book.

+

Learning to program is a lot like learning to ride a bicycle. The first few steps are the most challenging ones.

+

Once you get over these initial steps, your experience will become more and more enjoyable.

+

Are you ready for your first programming challenge? Let’s get going now! We wish you all the best.

+

Summary

+

In this step, we:

+
    +
  • Were introduced to the concept of problem solving
  • +
  • Understood how good programmers approach problem solving
  • +
+

Step 01: Our First Programming Challenge

+

Our first programming challenge aims to do, what every kid does in math class: read out a multiplication table. We now want to give this task to the computer. Here is the statement of our problem:

+

The Print Multiplication Table Challenge (PMT-Challenge)

+
    +
  1. Compute the multiplication table for 5, with entries from 1 to 10.
  2. +
  3. Display this table.
  4. +
+

The display needs to be:

+

5 * 1 = 5

+

5 * 2 = 10

+

5 * 3 = 15

+

5 * 4 = 20

+

5 * 5 = 25

+

5 * 6 = 30

+

5 * 7 = 35

+

5 * 8 = 40

+

5 * 9 = 45

+

5 * 10 = 50

+

This is the challenge. For convenience, let’s give it a label, say PMT-Challenge. What would be the important concepts we need to learn, to solve this challenge? The following list of concepts would be a good starting point:

+
    +
  • Statements
  • +
  • Expressions
  • +
  • Variables
  • +
  • Literals
  • +
  • Conditionals
  • +
  • Loops
  • +
  • Methods
  • +
+

In the rest of this chapter, we will introduce these concepts to you, one-by-one. We will also show you how learning each concept, takes us closer to a solution to PMT-Challenge.

+

Summary

+

In this step, we:

+
    +
  • Stated our first programming challenge
  • +
  • Identified what programming concepts we need to learn, to solve this challenge
  • +
+

Step 02: Breaking Down PMT-Challenge

+

Typically when we do programming, we have problems. Solving the problem typically need a step-by -step approach. Common sense tells us that to solve a complex problem, we break it into smaller parts, and solve each part one by one. Here is how any good programmer worth her salt, would solve a problem:

+
    +
  • Simplify the problem, by breaking it into sub-problems
  • +
  • Solve the sub-problems in stages (in some order), using the language
  • +
  • Combine these solutions to get a final solution
  • +
+

The PMT-Challenge is no different! Now how do we break it down, and where do we really start? Once again, your common sense will reveal a solution. As a first step, we could get the computer to calculate say, 5 * 3. The second thing we can do, is to try and print the calculated value, in a manner similar to 5 * 3 = 15. Then, we could repeat what we just did, to print out all the entries of the 5 multiplication table. Let’s put it down a little more formally:

+

Here is how our draft steps look like * Calculate 5 * 3 and print result as 15 * Print 5 * 3 = 15 (15 is result of previous calculation) * Do this ten times, once for each table entry (going from 1 to 10)

+

Let’s start with that kind of a game plan, and see where it takes us.

+

Summary

+

In this step, we:

+
    +
  • Learned that breaking down a problem into sub-problems is a great help
  • +
  • Found a way to break down the PMT-Challenge problem
  • +
+

Step 03: Introducing Operators And Expressions

+

Let’s focus on solving the first sub-problem of PMT-Challenge, the numeric computation. We want the computer to calculate 5 * 5 for example, and print 25 for us. How do we get it to do that? That’s what we would be looking at in this step.

+

Snippet-01: Introducing Operators

+

Launch up Python shell. We want to calculate 5 * 5. How do we do that?

+

Using our knowledge of school math, let’s try 5 X 5.

+ +

The Python Shell hits back at us, saying “invalid syntax”. This is how Python complains, when it doesn’t fully understand the code you type in. Here, it says our code has a “SyntaxError”.

+

The reason why it complains, is because ‘X’ is not a valid operator in Python.

+

The way you can do multiplication is by using the ‘*operator .

+

5 into 5” is achieved by the code 5 * 5, and you can see the result 25 being printed. Similarly, 5 * 6 gives us 30.

+ +

There are a wide range of other operators in Python:

+
    +
  • 5 + 6 gives a result of 11.
  • +
  • 5 - 6 leads to -1.
  • +
+ +

10 / 2, gives an output of 5.0 . There is one interesting operator, **. Let’s try 10 ** 3. We ran this code, and the result we get is 1000. Yes you guessed right, the operator performs “to the power of”. “10 to the power of 3” is 10 * 10 * 10, or 1000.

+ +

Another interesting operator is %, called “modulo”, which computes the remainder on integer division. If we do 10 % 3, what is the remainder when 10 is divided by 3? 3 * 3 is 9, and 10 - 9 is 1, which is what % returns in this case.

+

Let’s look at some terminology:

+
    +
  • Whatever pieces of code we gave Python shell to run, are called expressions. So, 5 * 5, 5 * 6 and 5 - 6 are all expressions. An expression is composed of operators and operands.
  • +
  • In the expression 5 * 6, the two values 5 and 6 are called operands, and the * operator operates on them.
  • +
  • The values 5 and 6 are literals, because those are constants which cannot be changed.
  • +
+

The cool thing about Python, is that you can even have expressions with multiple operators. Therefore, you can form an expression with 5 + 5 + 5, which evaluates to 15. This is an expression which has three operands, and two + operators. You can even have expressions with different types of operators, such as in 5 + 5 * 5.

+ +

Try and play around with the expressions, and understand the output which results.

+

Summary

+

In this step, we:

+
    +
  • Learned how to give code input to the Python Shell
  • +
  • Understood that Python has a predefined set of operators
  • +
  • Used a few types of basic operators and their operands, to form expressions
  • +
+

Step 04: Programming Exercise IN-PE-01

+

At this stage, your smile tells us that you enjoy evaluating Python expressions. What if we tickle your mind a bit, to make sure it hasn’t fallen asleep? Here is your first programming exercise.

+

Exercises

+
    +
  1. Write an expression to calculate the number of minutes in a day.
  2. +
  3. Write an expression to calculate the number of seconds in a day.
  4. +
+
Note
+

You need to solve these problems by yourself. If you are able to work them out, that’s fantastic! But if not, that’s part of the learning process.

+

Solutions

+

Solution 1

+ +

We wanted to calculate the number of minutes in a day. How do we do that? Think about this…

+
    +
  • How many number of hours are there in a day? 24.
  • +
  • And how many minutes does each hour have? It’s 60.
  • +
  • So if you want to find out the number of minutes in a day, it’s 24 * 60, which is 1440.
  • +
+

Solution 2

+ +

How many seconds are there in a day?

+
    +
  • Let’s start with the number of hours, 24.
  • +
  • The number of minutes in an hour is 60, and
  • +
  • The number of seconds in a minute is 60 as well.
  • +
  • So it’s 24 * 60 * 60, or 86400.
  • +
+

Summary

+

In this step, we:

+
    +
  • Solved a Programming Exercise involving common scenarios, using Python code involving: +
      +
    • Expressions
    • +
    • Operators
    • +
    • Literals
    • +
  • +
+

Step 05: Puzzles On Expressions

+

Let’s look at a few puzzles related to expressions, in this step. Before that, let’s revise some of the terminology we had learned earlier.

+

5 + 6 + 10 is an example of an expression. In this expression, 5, 6 and 10 are operands. The + here is the operator. You can have multiple operators in an expression. We also did mention that the operands, namely 10, 6 and 5, are literals. Their values will not change.

+

Here are a few puzzles coming up, to explore aspects of expressions.

+

Snippet-01: Puzzles On Expressions

+

Think about what would happen when you do something of this kind: 5 $ 2. You’re right, it would throw a SyntaxError. When Python does not understand the code you type in, it reports an error. Here, the expression we’re typing is 5 $ 2, which does not make sense to Python, hence the SyntaxError.

+ +

Let’s say we type in 5+6+10, without any spaces between the operands, and the operators. What do you think will happen? Surprisingly, the Python Shell does calculate the value!

+ +

In an expression, using spaces makes it easier for you to read it, but it’s not mandatory. 5 + 6 + 10 is easier to read than 5+6+10, but does not make any difference to the Python compiler.

+

The next puzzle tries to evaluate 5 / 2, which is “5 divided by 2”. What would be the output? 2.5.

+ +

If you’re coming from other programming languages like Java or C, this might be a surprising result. If you try this in Java for instance, you would get 2 as the output. Note that even though both operands are integers, the result of the / operation is a floating point value, 2.5 . Python does what is expected by a programmer!

+

The puzzle after that tries to play with 5 + 5 * 6. What would be the result of this expression? Will it be 5 + 5 or 10, then 10 * 6, which is 60? Or, will it be 5 plus 5 * 6, which is 5 + 30, that’s 35?

+ +

The correct result is 35.

+

Python decides this is based on the precedence of operators.

+

Operators in Python are divided into two sets as follows: * **, *, / and % have higher precedence, or priority. * + and - have a lower precedence.

+

Sub-expressions involving operators from {*, /, %, **} are evaluated before those involving operators from {+, -}

+

Let’s try another small puzzle on precedence, with 5 - 2 * 2. What would be the result of this? Will it be 6, or 1? It’s 1, because * has a higher precedence than -. Thus 2 * 2 is 4, and 5 - 4 gives us 1.

+ +

Let’s say we want to execute 5 - 2, to give an output of 2. How do we change the operator precedence?

+

You cannot really change the precedence, but you can add parentheses to group sub-expressions differently.

+ +

Parentheses have the highest precedence in Python, and can be used to override operator precedence. (5 - 2) gets calculated first, and the final result of the expression is 6.

+

A positive thing about using parentheses is, that it makes expressions more readable. So even in situations such as 5 - 2 * 2, where we know the result according to precedence, adding parentheses is good.

+

Summary

+

In this step, we went about solving a few puzzles about expressions, touching concepts such as: * SyntaxError for incorrect operators * White-space in expressions * Floating Point division by default * Operator Precedence * Using parentheses

+

Step 06: Printing Text

+

In the previous step, we learned how to use expressions to compute values. In this step, let’s see how we can actually print multiplication table entries, that are readable by the user.

+

Snippet-01: Printing Text

+

How do we go about printing a complete multiplication table entry? We want to print text such as 5 * 6 = 30 . But trying to do so, as we know it, gives us a SyntaxError. Clearly, there is a different way to print text, as compared to an expression.

+ +

Let’s first try to print a simple piece of text, Hello. Typing in this piece of code directly on Python Shell also gives us an error.

+ +

Only expressions work that way, and Hello is not really an expression.

+

"Hello" is typically called a string, and represents the text of letters 'H', 'e', 'l', 'l', 'o'. "Hello" is hence different from the number 5.

+

There are a number of in-built functions in Python to help print strings. One of these is the print() function. Can you just say print Hello?

+ +

The Python compiler gives you an error, that says “missing parentheses”.

+

Will print(Hello) work?

+ +

Nope! Again, this one failed because you need to indicate that "Hello" is a string.

+

How do I indicate that "Hello" is a string? By putting it within double quotes.

+

Let’s try print ("Hello")

+ +

print("Hello") finally results in "Hello" being printed out. To be able to print "Hello", the things we need to do are:

+
    +
  • Typing the method name print ,
  • +
  • open parentheses ( ,
  • +
  • Followed by a double quote " ,
  • +
  • The text Hello,
  • +
  • and another double quote " ,
  • +
  • finished off with a closed parentheses ).
  • +
+

What we have written here is called a statement, a simple piece of code to execute. As part of this statement, we are calling a function, named print().

+

What exactly are we trying to print?

+

The text "Hello", which is called a parameter or argument, to print().

+

Now let’s get back to what we wanted to do, which is to print 5 * 6 = 30. The most basic version would be something of this kind, print("5 * 6 = 30"). Here, we are passing the entire value in the form of a string.

+ +

This prints the text on the console, as-is. The thing you need to understand here is, we aren’t really calculating 30 using the formula 5 * 6, but directly putting text 30 in here. That’s called hard-coding.

+

In a later step, we will look at how to actually calculate the value and pass it in.

+

Summary

+

In this step, we:

+
    +
  • Understood that displaying text on the console is not the same as printing an expression value
  • +
  • Learned about the print() function, that is used to print text in Python.
  • +
  • Found a way to print the text "5 * 6 = 30" on the console, by hard-coding values in a string
  • +
+

Step 07: Puzzles On Utility Methods, And Strings

+

In the previous step, we learned how to print 5 * 6 = 30. It was not a perfect solution, because we hard-coded everything. we used an in-built function named print(), passed a string to it, and invoked the method.

+

In this step, let’s look at a number of puzzles related to in-built methods, their parameters, and strings in general.

+

For example, let’s do print("5 * 6"), as in the previous step. What does this code result in?

+ +

It just prints the string "5 * 6".

+

Let’s say we try the code print(5 * 6),

+ +

Without the double quotes, 5 * 6 is an expression. What will be the output? 30.

+

If you call print() with an expression argument, it prints the value of the expression. However, when we pass something within double quotes, it becomes a piece of text, printed as-is.

+

An interesting thing to note is, that in Python you can use either double-quotes (" and "), or single-quotes (' and ') with text values.

+

Let’s look at a few other in-built methods within Python.

+

Consider abs() (which stands for absolute value), a method that accepts a numeric value. You can use abs(10.5), passing 10.5 as a value to it, and it prints the absolute value of 10.

+ +

If you pass in a string value, will it work? It complains, “abs() function will not work with a string, it only works with numeric values”.

+ +

Let’s say you want to use a function that computes “to the power of”, for instance “2 to the power of 5”. In Python, there’s an in-built function named pow(), which does just what we need. To pow(), you can pass two parameters and calculate the result. How do you do that?

+

Will this work: pow 2 5? No, not at all. This code does not work as well: pow(2 5). pow(2, 5) is the correct syntax.

+ +

You’ll see that 32 is printed.

+

Let’s see another example, “10 to the power of 3”. pow(10,3) is the alternative to saying 10 ** 3. This gives us 1000, similar to how pow() would.

+ +

max() returns maximum in a set of numbers.min() function returns the minimum value.

+ +

These are some of the in-built functions in Python, and we saw how to call the in-built functions by passing in a varied number of parameters.

+

Python is case sensitive. So let’s say I want of calculate pow(2,5). So this would give me 32. Now, what if I say capital 'P' instead of small 'p' here? Pow(2,5) would lead to an error.

+ +

The only things not case-sensitive in Python, are string values. Earlier we saw that the code print("Hello") displays the text "Hello". Inside a string, the text can be in any case. Hence, print("hello") displays "hello" ,with a small 'h'.

+ +

However inside your code, you need to be very particular about the case of function names, class names, variable names, and the like.

+

In your code, whitespace does not really matter. You can add space here and here, and you would still get the same output. However, in case of strings, whitespace does matter.

+

If we say print("hellO World"), it would print "hellO World", with a space in between. And if you do print("hellO World") with three spaces, it would print the same. In expressions, white-space does not affect the output.

+ +

The last thing we want to look at, is an escape sequence. Let’s say you want to print a double quote, ", in the code. If we were to do this: print("Hello""), what would happen? The compiler says error!

+ +

If you want to print a " inside a string, use an escape sequence. In Python, the symbol '\' is used as an escape character. On using '\' adjacent to the ", it prints Hello" (notice the trailing "). We have used the '\' to escape the ", by forming an escape sequence \".

+ +

The other reason why you would want to use a '\' is to print a <NEWLINE>. If you want to print "Hello World", but with "Hello" on one line and "World" on the next, '\n' is the escape sequence to use.

+ +

The other important escape sequence is '\t', which prints a <TAB> in the output. When you do print("Hello\tWorld"), you can see the tab-space between "Hello" and "World".

+ +

Another useful escape sequence is \\ . If you want to print a \ , then use the sequence \\ . You would see that it prints Hello\World . Think about what would happen if we put six \ . Yes you’re right! It would print this string: "\\\" .

+ +

One of the things with Python is, it does not matter whether you use double quotes or single quotes to enclose strings. There are some interesting, and useful ways of using a combination of both, within the same string. Have a look at this call: print("Hello'World"), and notice the output we get. In a similar way, the following code will be accepted and run by the Python system: print('Hello"World').

+ +

The above two examples can be used as a tip by newbie programmers when they form string literals, and want to use them in their code:
+* If the string literal contains one or more single quotes, then you can use double quotes to enclose it. * However if the string contains one or more double quotes, then prefer to use single quotes to enclose it.

+

Summary

+

In this step, we:

+
    +
  • Explored a number of puzzles related to code involving: +
      +
    • Built-in functions for numeric calculations
    • +
    • The print() function to display expressions and strings
    • +
  • +
  • Covered the following aspects of the above utilities: +
      +
    • Case-sensitive aspects of names and strings
    • +
    • The role played by whitespace
    • +
    • The escape character, and common escape sequences
    • +
  • +
+

Step 08: Formatted Output With print()

+

In the previous step, we learned how to print a hard-coded string, such as "5 * 6 = 30".

+

In this step, let’s try to replace the hard-coded 30 with a computed value.

+

Let’s start with a simple scenario. Let’s say we want to place that calculated value within a string, and display it. How do we do that?

+

Snippet-01: print() Formatted Output

+

format() method can be used to print formatted text.

+

Let’s see an example:

+ +

We were expecting 10 to be printed, but it’s actually printing VALUE.

+

How do we get 10 to be printed then?

+ +

By having an open brace {, closed brace }, and and by putting the index of the value between them. Here, the value is the first parameter, and it’s index will be 0.

+

"VALUE {0}" is what we need.

+

Let’s take another example. Suppose to the format() function, we pass three values: 10, 20 and 30.

+

Typically when we count positions or indexes, we start from 0.

+

To print the first value, you need to pass in an index of 0. To print the second value, pass an index of 1.

+ +

Now going back to our problem, we wanted to display "5 * 6 = 30", but without hard-coding. Instead of 30, we want the calculated value of 5 * 6.

+ +

Let replace "5 * 6 = 30" with "5 * 6 = {2}". 2 is the index of parameter value 5*6.

+ +

Cool! Progress made.

+

Let’s replace 5 * 6 with the right indices - {0} * {1}.

+ +

The great thing about this, is now we can replace the values we passed to print() in the first place, without changing the indexes! So, we can display results for 5 * 7 = 35 and 5 * 8 = 40. We are now able to print 5 * 6 = 30, 5 * 7 = 35, 5 * 8 = 40, and can do similar things for other table entries as well.

+ +

Summary

+

In this step, we:

+
    +
  • Discovered that Python provides a way to do formatted printing of string values
  • +
  • Looked at the format() function, and saw how to call it within print()
  • +
  • Observed how we could work only with the indexes of parameters to format(), and change the parameters we pass without changing the code
  • +
+

Step 09: Puzzles On format() and print()

+

In this step, let’s look at a few puzzles related to the format, and the print methods.

+

Snippet-01: format() And print() Puzzles

+

Let’s say we pass in additional values, such as: 5 * 8, 5 * 9 and 5 * 10. However, within the call to format(), we are only referring to the values at index 0, index 1 and index 2. The values at indexes 3 and 4 are not used at all. What would happen when we run the code?

+ +

Would this throw an error? No, it does not. You can see that the additional values which are passed in, are conveniently ignored.

+

Let’s say instead of passing in a value of 2, we pass 4. What would happen?

+ +

5 * 10 is the value at index 4

+

Now let’s take a different scenario. We remove all the parameters passed to format(). However, inside the call to print(), we continue to say {0} * {1} = {4}. So we are trying to print the value at index 4, but are only passing two values to the function format(). What do you think will happen?

+ +

It says IndexError, which means :“you are asking me to fetch the value at index 4, but only passing in two values. How can I do what you want?”

+

Let’s look at a few more things related to other data types. We try to format the following inside print(): {0} * {1} = {2}, and would pass in 2.5, 2, and 2.5 * 2 . Here, 2 is an integer value, but 2.5 is a floating point value. You can see that it prints 2.5 * 2 = 5.0. So this approach of formatting values with print(), works also with floating point data as well.

+ +

Now, are there are other types of data that format() works with? Yes, strings can join the party.

+

Let’s say over here, we do: print("My name is {0}".format("Ranga")). What would happen?

+ +

Index 0 will be replaced with the first parameter to format().

+

Summary

+

In this step, we:

+
    +
  • Understood the behavior when the parameters passed to format(): +
      +
    • Exceed the indexes accessed by print()
    • +
    • Are less than the indexes accessed by print()
    • +
    • Are of type integer, floating-point or string
    • +
  • +
+

Step 10: Introducing Variables

+

We are slowly making progress toward our main goal, which is to print the 5 multiplication table.

+

In the first statement, we are printing 5 * 1 = 5, and then changing the literals. To make it print 5 * 2 = 10, we are changing 1 to 2. Next, we are changing 2 to 3. How do we make it a little simpler, so that our effort is reduced?

+ +

Let’s try a different approach.

+

What would happen if you replace 1 with index, and 5 * 1 with 5 * index, and try to run it?

+

It gives an error! It says: “index is not defined”.

+

Let’s try and fix this, and execute index = 2. What would happen?

+ +

Aha! This compiles.

+ +

And this statement is printing 5 * 2 = 10.

+

Let’s try something else. Let’s make index = 3. What would happen?

+ +

The same statement on being run, prints 5 * 3 = 15.

+

How can you check the value that index has? Just type in index.

+ +

The index symbol we have used here, is what is called a variable.

+

In Python, it’s also called a name.

+

You can see that the value index referring to, can change over the duration of a program.

+

Initially, index was referring to a value of 1. later, index was referring to a value of 3.

+

Now, think about how you would print the entire table. All that you need to do, is start from 1, execute the same statement with print() and format(), to get output 5 * 1 = 5. Next, Change the value of index to 2, and then print the same statement. Next, index = 3, and print the same statement again.

+ +

With the same statement print("{0} * {1} = {2}".format(5,index,5*index)), we are able to print different values. The value of index varies, but the code remains the same!

+

Variables make the program much more easier to read, as well as more generic.

+

Snippet-02: Classroom Exercise On Variables

+

Let’s do a simple exercise with variables.

+

We want to create three variables a, b and c. Let’s initially give them some values, say a value of 5 to a, 6 to b and 7 to c.

+

We want to get output of this kind: 5 + 6 + 7 = 18, without using the literal values.

+

You would want to use the values stored in the variables in a, b and c.

+

If you’re hard-coding, the way to do it is with print("5 + 6 + 7 = 18").

+ +

The way you can do that is with code like this: print("{0} + {1} + {2} = {3}".format(a,b,c,a+b+c)).

+ +

How do you confirm we are accessing values stored in the variables?

+

Let’s change the values of a, b and c. Let’s make a = 6 , b = 7 , and c = 8 . Execute same statement.

+ +

You can see the magic of variables at play here! Based on what values these variables are referring to, you can see that the output of the print statement changes.

+

Summary

+

In this step, we: * Were introduced to variables, or names, in Python * Observed how we could pass in values of variables to the format() function

+

Step 11: Puzzles On Variables

+

In the previous step, we were introduced to the concept of variables in Python.

+

We will start with looking at a few puzzles.

+

Snippet-01: Puzzles On Variables

+

What if I try to refer to a variable which is not yet created?

+ +

Before using a variable, you need to have it assigned a value. If you have not defined a variable before, then you cannot use it. Consider print(count), it does not know what count is. So it would throw an error, saying: “count is not defined, I have no idea what count is.”

+

Once you assign a value to a variable, you can use it.

+ +

The statement count = 4 where we are creating a variable named count for the first time, is called a variable definition.

+

This is the first time you’re referring to a variable, and assigning a value to it.

+

Python will create a variable in its memory.

+

Variable names are case sensitive. count and Count are not the same thing.

+ +

There are rules to follow while naming variables.

+

All variable names should either start with an alphabet , or an underscore _ . count, _count are valid. 1count is invalid.

+ +

After the first symbol, you can also use a numeral in variable names.

+ +

To summarize the rules for naming variables.

+
    +
  • This should start with an alphabet (a capital or a small alphabet) or underscore.
  • +
  • Starting the second character, it can be alphabet, or underscore, or a numeric value.
  • +
+

Summary

+

In this step, we:

+
    +
  • Understood that a variable needs to be defined before it is used
  • +
  • Learned that there are certain rules to be followed while giving names to variables
  • +
+

Step 12: Introducing Assignment

+

In this step, we will look at an important concept in Python, called assignment. In previous steps, we created variables, like i = 5.

+

Snippet-01: Introducing Assignment

+

You can create other variables using whatever value i is referring to. If we say j = i, what would happen?

+ +

j would start referring to the same value that i is referring to. This statement is called an assignment.

+

Let’s try j = 2 * i.

+ +

j refers to a value of 10

+

= has a different meaning in programming compared to mathematics.

+

In mathematics, When we execute j = i, it means j and i are equal.

+

In prgramming, the value of the expression on right hand side is assigned to the variable on the right hand side. Can you use a constant on the left hand side of an assignment? The answer is “No”!

+ +

The Python Shell throws an error, saying “Can’t assign to literal”, as 5 is a literal.

+

Let’s create a couple of variables. num1 = 5 and num2 = 3. We would want to add these and create a fresh variable. Let’s say the name of the variable is sum.

+ +

Create 3 variables a, b and c with different values and calculate their sum.

+ +

We have just seen the mechanics of how assignment works in Python.

+

Summary

+

In this step, we: * Learned what happens when you assign a value to a variable, which may or may not exist * Discovered that literal constants cannot be placed on the left hand side of the assignment(=) operator

+

Step 13: Introducing Formatted Printing

+

Until now, we have been using the format() method to format and print values. Let’s see a better approach to printing values.

+

This is the approach we used until now.

+ +

Python has the concept of formatted strings. The syntax to use a formatted string is very simple - f"".

+

If we want to print the value of a variable a, we can use {a} in the text.

+ +

The variable within braces is replaced by its value.

+

You can use expressions in a formatted string. Example below uses {a+b}.

+ +

This feature was introduced in a Python 3 release.

+

Let’s get back to the original problem we wanted to solve: printing 5 + 6 + 7 = 18, using formatted strings.

+ +

You can see how easy it turns out to be!

+

Step 14: The PMT-Challenge Revisited

+

We want to print the 5-table from 5 * 1 = 5 onward, until we reach to 5 * 10 = 50. The best solution we have right now, is shown below:

+

Snippet-01:

+ +

Can we do something, to make sure that the code remains the same all the time, but the index value gets updated?

+ +

We used index = index + 1 to increment index value.

+

If we execute these same two statements again and again, we can print the entire table!

+

This is exactly what loops help us do: execute the same statements repeatedly.

+

The simplest loop available in Python is the for loop.

+

When we run a for loop, we need to specify the range of values - 1 to 10 or 1 to 20, and so on. range() function helps us to specify a range of values.

+ +

The syntax of the for loop is: for i in range(1, 10): .... Here, i is the name of the control variable. In Python, you need to put a colon, ‘:’, and in the next line give indentation.

+ +

You would see that it prints from 1 to 9.

+

When we run a loop in range(1, 10), 1 is inclusive and 10 is exclusive.The loop runs from 1 to the value before 10, which is 9.

+

The leading whitespace before print(i) is called indentation. We’ll talk about indentation later, when we talk about puzzles related to the for loop.

+

How can you extend this concept to solving our PMT-Challenge problem?

+ +

What we were doing earlier, was calling print() with a formatted string. Now we want to print this statement for different values of i.

+

How can you do that?

+

Let’s start with a simple example.

+ +

print(f"{i}") prints the value of i.

+

Now, how do we get it to print 5 * 1 = 5 to 5 * 10 = 50?

+ +

print(f"5 * {i} = {5 * i}") prints a specific multiple of 5.

+

Step 15: Loops

+

In a previous step, we took a major step in programming. We wrote our first for loop with Python. In this step, let’s try a few puzzles to understand the for loop even further.

+

The syntax of the for loop we looked at earlier was:

+
  for i in range(1, 10):
+    print(i)
+

Snippet-01:

+

Let’s say we write a for loop, but don’t give a : after the range() method, to close the first line. What would happen?

+ +

Invalid syntax. A : is mandatory within the for loop syntax.

+

Let’s provide a : and in the next line, use print(i) without space before it (without indentation).

+ +

Most other programming languages use open brace { and closed brace } as delimiters in a for loop. However, Python uses indentation to identify which code is part of a for loop, and which is not. So if we are writing the body of a for loop, we must use indentation, and leave atleast a single <SPACE>.

+ +

How do we execute two lines of code as part of the for loop?

+ +

We are indenting both statements with a space - print(i) and print(2*i).

+

When for loop has only one line of code, you can specify it right after the :

+ +

However, this is not considered to be a good programming practice. Even though you may want to execute just one statement in a for loop, indentation on a new line is recommended.

+

Another best practice is to use four <SPACE>s for indentation, instead of just two. This would give clear indentation of the code.

+ +

Anybody who looks at the code immediately understands that this print() is part of the for loop.

+

Let’s say you only want to print the odd numbers till 10, which are 1, 3, 5, 7 and 9. The range() function offers an interesting option.

+ +

In for i in range(1, 11, 2), we pass in a third argument, called a step. After each iteration, the value of i is increment by step.

+

Summary

+

In this step, we:

+
    +
  • Looked at a few puzzles about the for loop, which lay emphasis on the following aspects of for: +
      +
    • The importance of syntax elements such as the colon
    • +
    • Indentation
    • +
    • Variations of the range() function
    • +
  • +
+

Step 16: Programming Exercise PE-BA-02

+

In the previous step, after initially exploring the Python for loop, we looked at a number of puzzles.

+

In this step, let’s look at a few exercises.

+

Exercises

+
    +
  1. Print the even numbers up to 10. We would want to print 2 4 6 8 10, using a for loop.
  2. +
  3. Print the first 10 numbers in reverse
  4. +
  5. Print the first 10 even numbers in reverse
  6. +
  7. Print the squares of the first 10 numbers
  8. +
  9. Print the squares of the first 10 numbers, in reverse
  10. +
  11. Print the squares of the even numbers
  12. +
+

Solution 1

+

Instead of starting with 1, we need to start with 2. Each time, i it would be incremented by 2, and 2 4 6 8 and 10 would be printed.

+ +

Solution 2

+

We would want to print the numbers in reverse. Think about how you would do that using the range() function. We’d want go from 10, 9, 8, and so on up to 1.

+ +

The value to start with is 10. As we discussed earlier, the end value is exclusive. So to print from 10 to 1, we want to end one value which is 0. range(10, 0) seems to be what we need.

+

Usually these step value is positive, but we need to go backwards from 10. Hence, we would give a step value of -1.

+

Solution 3

+

Now, let’s print the first 10 even numbers in reverse.

+ +

Solution 4

+

Next, we would want to print the squares of the first 10 numbers.

+ +

Solution 5

+

Let’s print the squares in the reverse order.

+ +

Solution 6

+

Print the squares of the even numbers. How to do that?

+ +

The key part is using a step of -2

+

We leave it as an exercise for you, to print squares of odd numbers.

+

Summary

+

In this video, we: * Tried out a few exercises involving the for loop, by playing around with printing sequences of numbers. * Used the for loop to simplify the solution to the PMT-Challenge problem.

+

Step 17: Review: The Basics Of Python

+

It must have been a roller-coaster ride to solve the multiplication table challenge so far. If you’re new to programming, there are a wide range of topics and concepts, that you would have learned during this small journey.

+

Let’s quickly revise the important concepts we have learned during this small journey.

+
    +
  • 1, 11, 5, … are all called literals because these are constant values. Their values don’t really change. *Consider 5 * 4 * 50. This is an expression. * is an operator, and 5, 4 and 50 are operands.
    +
  • +
  • The name i in i = 1, is called a variable. It can refer to different values, at different points in time.
  • +
  • range() and print() are in-built Python functions.
  • +
  • Every complete line of code is called statement. The specific statement print(), is invoking a method. The other statement which we looked at earlier, was an assignment statement. index = index + 1 would evaluate index + 1, and have the index variable refer to that value.
  • +
  • The syntax of the for loop was very simple. for var in range(1, 10) : ..., followed by statements you would want to execute in a loop, with indentation. For the sake of indentation we left four <SPACE>s in front of each statement inside the for loop.
  • +
+

So that, in a nutshell, is what we have learned over the course of our first section.

+

Chapter 03 - Introducing Methods

+

In the last section, we introduced you to the basics of python. We learned those concepts by applying them to solve the PMT-Challenge problem. The code below is what we ended up with as we solved that chellenge.

+

Snippet-01: Current Solution To PMT-Challenge

+ +

If we wanted to change the code to print the 7 table, we need to change the value 7 used in the for loop, to 8. It’s simple, but still not as friendly as you would like.

+ +

To print a 7 table, it would be awesome if could say print_multiplication_table, and give a value of 7 beside it, and it would do the rest:

+ +

Similarly, print_multiplication_table(8), could print the multiplication table for 8!

+

To be able to do this, we need to create a method, or a function. Creating a method makes the code reusable, and we can invoke that method very easily by passing arguments.

+

In this section, we take an in-depth look at methods.

+

Step 01: Defining Your First Method

+

Methods are very important building blocks in Python programming. In this step, we will create a simple method that prints "Hello World", twice.

+

Snippet-01:

+

When we talk about a method, we need to give it a name. We are already using an in-built Python method here, which is print().

+ +

Similar to that, we need to give a name to our body of code. Let’s say the name is print_hello_world_twice.

+

The syntax to create a method in Python is straightforward: * At the start, use the keyword def followed by a space. * Followed by name of the method - print_hello_world_twice. * Add a pair of parenthesis: ().
+* This is followed by a colon : (similar to what we used in a for loop).

+ +

All statements in a method should be indented. The two print("Hello World") are indented. So, they are part of the method body.

+

print_hello_world_twice() defines a method, and it has certain code inside its body.

+

How do we call this method? Is it sufficient to say print_hello_world_twice?

+ +

Python Shell says, there’s a function defined with that specific name.

+

How do we execute a method? Very simple! Add a pair of parentheses to the name, ()!

+ +

Now, we are able to run the method.

+

Summary

+

In this step, we:

+
    +
  • Learned we can define our own methods in the code we write
  • +
  • Understood how to define a method, and all its syntax elements
  • +
  • Saw how we can invoke a method we write
  • +
+

Step 02: Programming Exercise PE-MD-01

+

We will now leave you with two exercises, based on what we have learned about methods so far.

+

Exercises

+
    +
  1. Write a method called print_hello_world_thrice(). It should print "Hello World" thrice to the output. Define this method, and also invoke it.

  2. +
  3. Write and execute a method, that prints four statements: +
      +
    1. “I have created my first variable.”
    2. +
    3. “I’ve created in my first loop.”
    4. +
    5. “I’ve created my first method.”
    6. +
    7. “I am excited to learn Python.” You need to print these four statements on four consecutive lines.
    8. +
  4. +
+

Solutions

+

Solution 1

+ +

Solution 2

+ + +

For convenience, we have changed the exact text we need to print. Call this method with the syntax print_your_progress(), and you’re able to execute its code.

+

Now try another exercise. We want to print "Statement 1", "Statement 2", "Statement 3" and "Statement 4" on different lines, using just one print statement. How can you do that?

+ +

We are using the newline character \n.

+

Let’s look at the difference between defining and executing a method.

+

When we are writing a method definition, we are writing the code as part of its body. It has a specific syntax, and starts with the def keyword.

+

A definition by itself cannot cause the code in its body to be executed.

+

print_your_progress() represents a method call. The code inside the method is executed.

+

Summary

+

In this step, we:

+
    +
  • Implemented solutions to a few exercises that test our understanding of Python methods. We touched concepts such as: +
      +
    • Defining a method body
    • +
    • The way to invoke a method, to run its code
    • +
    • The difference between the two
    • +
  • +
+

Step 03: Passing Parameters To Methods

+

In the previous step,we created methods. We defined print_hello_world_twice(), and this printed "Hello World" twice. In this step, let’s talk about method arguments, or parameters.

+

Snippet-01:

+ +

Earlier, we wrote code for print_hello_world_thrice(), which prints the message three times.

+

Let’s say you want to print it five times. You would need to write another method that does what you need. Doesn’t that seem monotonous?

+

Instead of that, Won’t it be great if I can call the method by the same name, say print_hello_world(5), and it would print “Hello World” five times?

+

The 5 which we are passing here is called an argument.

+

How do we define our method to accept this argument?

+

Let’s call our argument no_of_times. If you have any experience with other programming languages, they generally need you to specify the parameter type. Something like This parameter is an integer/float/string, or other types. But Python does not require parameter type.

+ +

Although we are not doing exactly what we set out to, let’s see what would happen. What would happen if we say print_hello_world() ?

+ +

Error! Something like “Hey, you have created print_hello_world with a parameter, but not passing anything in here! Go ahead and pass a value”. Let’s pass in a value, such as 5.

+ +

With print_hello_world(5), you can see "Hello World" and 5 being printed. We are now able to define this method to accept a value, and print that value by invoking it. You can pass in any value, such as10, 100, or others.

+

Now think of a different solution for this method, where you don’t repeat the same piece of code to print "Hello World". Consider print_hello_world(5), it should still print "Hello World" 5 times. How do you do that?

+

Think about using something along the lines of a loop.

+

Snippet-02:

+

For now, what we are doing is we are printing "Hello World" 10 times.

+ +

Our method call print_hello_world(5) now prints "Hello World" 10 times.

+

However just print the message 5 times. We need to make use of the parameter no_of_times inside the for loop as well.

+ +

Now let’s execute the method again. You can see that it’s printing 4 times only.

+

Why is it not printing 5 times?

+

That’s because no_of_times as a second parameter to range() is exclusive.

+ +

Great, it’s now printing the message 5 times!

+ +

If you pass a different argument like 7, the message is displayed 7 times.

+

Something you need to always be cautious about in Python, is the indentation. Over here, the for loop is part of the method body. So we have extra indentation for it. The print is part of the for loop body. So guess what, even more indentation for that code.

+

Summary

+

In this step, we:

+
    +
  • Learned how to pass arguments to a method
  • +
  • Understood that the method definition needs to have parameters coded in
  • +
  • Observed that arguments passed during a method call can be accessed inside a methods body
  • +
+

Step 04: Classroom Exercise CE-MD-01

+

In this step, Let’s look at a few exercises related to the method parameter.

+

Exercises

+
    +
  1. Write a method called print_numbers(), that would print all successive integers from 1 to n.

  2. +
  3. The second one is to write a method called print_squares_of_numbers(), that prints squares of all successive integers from 1 to n.

  4. +
+

Solutions

+

Solution 1

+ +

If you are programming in other languages such as Java, you are used to naming methods in this way: printNumbers(). This convention is popularly known as “Camel Case”.

+

That’s NOT how Python programmers name their methods. Pythonic way is to use underscore _ to separate words in the method name, as in print_numbers().

+

Solution 2

+

Let’s define print_squares_of_numbers(). This would be very similar to print_numbers(), working with the same range. Only, we need to say print(i*i) .

+ +

How is a parameter different from an argument?

+
    +
  • Inside the definition of the method, the name within parentheses is referred to as a parameter. In our recent exercise, n is a parameter, because it’s used in the definition of print_squares_of_numbers.
  • +
  • When you are passing a value to a method during a method call, say 5, that value is called an argument.
    +
  • +
  • Don’t worry too much about it. Just follow this convention for now: +
      +
    • In the method call, call it an argument.
    • +
    • In a method definition, call it a parameter.
    • +
  • +
+

Summary

+

In this step, we looked at a few simple exercises related to passing method arguments

+

Step 05: Methods With Multiple Parameters

+

In this step, let’s look at creating a method with multiple parameters.

+

Snippet-01:

+

print_hello_world accepts one parameter and prints “Hello World” the specified number of times.

+ +

Let’s say we want to print another piece of text Welcome To Python, a specified number of times. How do you do that?

+

You can always create another method similar to the first one, such as print_welcome_to_python(no_of_times) and print the necessary text inside.

+

However, is that what a good programmer does?

+

A good programmer tries to create a more generic solution.

+ +

The good programmer that you are, you created a new method called print_string(str, no_of_times) accepting a text parameter, in addition to no_of_times.

+

Syntax rules for method parameters are quite strict. If we say print_string("Welcome to Python") and run it, we get an error! Python Shell says: “I need no_of_times to be present in here”.

+ +

Let’s say you want to assign default values for str and no_of_times in print_string(). By default, we want to always print "Hello World", and that too 5 times.

+

The Python language makes this very easy. def print_string(str = "Hello World", no_of_times=5). The rest of the method remains the same.

+ +

Now you can call print_string(), and "Hello World" is displayed 5 times.

+ +

If it’s print_string("Welcome To Python"), what does it do? It prints "Welcome To Python", 5 times.

+ +

Consider print_string("Welcome to Python", 8), it would print that string 8 times.

+ +

Isn’t that cool!

+

Summary

+

In this step, we:

+
    +
  • Looked at how to pass multiple parameters to a method, starting with two arguments
  • +
  • Learned how you can define default values for those parameters
  • +
  • Observed we could pass default arguments for none, some or all of those parameters
  • +
+

Step 06: Back To Multiplication Table - Using Methods

+

Let’s get back to our original goal, of why we needed methods. We wanted to create a multiplication table for a number, and observed that each time we needed to we needed change that number, we were forced to make a change in the code. This is not something we liked, and that’s why we started investigating how methods can be used.

+

In this step, Let’s try our hand at creating a multiplication table method.

+

Snippet-01:

+ +

Let’s define a method called print_multiplication_table(), and pass in a parameter to it.

+ +

Now you have the entire multiplication table for 7.

+

You can then call print_multiplication_table() with arguments 8, 9,and so on, by simply changing the table arguemnt value.

+

We now want to create even better print_multiplication_table() method.

+

We want to control the start point, as well as the end point, in the call to range(). We want to say print_multiplication_table(7, 1, 6), to print the 7 table with entries from 1 to 6. How can you do that?

+ +

Simple! Define those range limits as additional parameters!

+

The other thing we can obviously do, is have default values for the start, and the end.

+ +

Calling print_multiplication_table(7) would give us entries from 7 * 1 = 7 to 7 * 10 = 70.

+

Now you can actually send out this method, to your friends, who would find it easy to use, and cool!

+

Summary

+

In this step, we:

+
    +
  • Learned how to define a method to print the multiplication table for a number
  • +
  • Looked at how to enhance this method to make table printing more flexible
  • +
  • Further enhanced that method to accept default arguments while printing a table
  • +
+

Step 07: Indentation Is King

+

In Python, indentation denote blocks of code. So if you want to put something in a for loop, or outside it, proper indentation would be sufficient. In this step, let’s explore indentation in depth. Let’s start by creating a simple method.

+

Snippet-01:

+

+    >>> def method_to_understand_indentation():
+    ...     for i in range(1,11) :
+    ...        print(i)
+    ... 
+    >>> method_to_understand_indentation()
+    1
+    2
+    3
+    4
+    5
+    6
+    7
+    8
+    9
+    10
+
+

Consider the code below: print(5) is indented at the same level as for loop.

+ +

You can see that print(5) is called only once. It is not part of the for loop.

+
    >>> method_to_understand_indentation()
+    1
+    2
+    3
+    4
+    5
+    6
+    7
+    8
+    9
+    10
+    5
+
+

Let’s change the code in this method a bit. print(5) is indented the same way as print(i)

+ +

print(5) is part of the for loop. It is executed 10 times.

+ +

Whether we’re talking about loops, methods or conditionals, proper indentation is very important in Python.

+

We indicate a block of code, by having all lines of that block at the same indentation level. There are no specific delimiters like for instance a pair of braces {...}, as in other programming languages.

+

Summary

+

In this step, we:

+
    +
  • Ran through a few examples to see how indentation works in Python
  • +
+

Step 08: Puzzles on Methods - Named Parameters

+

In this step, let’s look at a variety of puzzles related to methods.

+

Snippet-01:

+

Consider the following method: I would want to print the default string 6 times. How do we do it?

+ +

Will it work if we call the method as in: print_string(6)?

+ +

6 is passed as the first parameter. 6 is matched to str, and the method prints 6 the default number of times, which is 5.

+

to default to "Hello World", and print it 6 times.

+

You can do this in Python by using named parameters. During the method call, you can specify no_of_times = 6. no_of_times is a named parameter.

+
+

There is no provision of doing something like this, in other languages like Java.

+
+

Call it as print_string(no_of_times=6):

+ +

str gets a default value, and "Hello World" is printed 6 times.

+

Named parameters are very useful, when a method has a number of parameters, and you would want to make it very clear which parameter you’re passing a value for.

+

Let’s call print_string(7, 8). what happens?

+ +

You would see that 7 is printed 8 times.

+

Since print() method is quite flexible, you can pass a number as the first argument. You can even pass a float.

+ +

What would be the result of this - print_string(7.5, "eight")?

+ +

Note how no_of_times is used inside the method… as an argument to range(). range() only accepts integers, nothing else. When you run the code with print_string(7.5, "eight"), we get an error.

+

It says: TypeError: ```no_of_times``` must be ```int```, not string.

+

A simple rule of thumb is, if you have a parameter, you can pass any type of data to it. That could be an integer, a floating point value a string, or a boolean value. The Python language does not check for the type of a parameter. However, Python will throw an error if the function which is using that parameter, expects it to be of a specific type. The range() function expects that the no_of_times is an integer value.

+

Snippet-02:

+

The last thing which we would be looking at, is method naming conventions. We named our methods in a consistent way: print_string, print_multiplication_table, and the like.

+

This is exactly the format which most Python developers use, to name their methods.

+

Convention is to use underscore to separate words in a name.

+

However, there are a few rules for naming a method:

+

One of the important rules is also related to variable names. We observed that a variable name cannot start with a number.

+ +

Similarly, 1_print will not be accepted as a method name.

+
    +
  • You can start a name with an alphabet, or with an underscore.
  • +
  • From the second character onward, you are allowed to use numeric symbols.
  • +
+

Methods and variables cannot be named using Python keywords.

+

Now, what is a keyword? For example, when we talked about for loop, as in:

+
```for i in range(1, 11): print(i)```... 
+
    +
  • for is a keyword
  • +
  • in is a keyword
  • +
  • def is a keyword.
  • +
+

Later we will look at a few other keywords, such as while, return, if, else, elif, and many more.

+ +

Summary

+

In this step, we:

+
    +
  • Were introduced to the concept of named parameters
  • +
  • Explored the typical naming rules and conventions for methods in Python
  • +
  • Observed that reserved keywords cannot be used to name variables or methods
  • +
+

Step 09: Methods - Return Values

+

Let’s try and understand the importance of return values from a method. We will learn how to return a value from a method.

+

Snippet-01:

+

Let’s name our method as product_of_two_numbers(), and let’s have parameters a and b that it accepts:

+ +

Can we take the product of these two numbers into a variable, and use it in other code, in the same program?

+

Suppose we say a product = product_of_two_numbers(1,2), is this allowed?

+

Let’s run this code, and see what’s stored in product.

+ +

It’s empty.

+

The product_of_two_numbers() method is not really returning anything back, to be used elsewhere.

+

Have a look at some of the built-in Python functions, such as max() for example.

+ +

If I call max() with four parameters, as in maximum = max(1,2,3,4), the value 4 gets stored in maximum.

+

Later on in the code that follows, we can say maximum * 5, or we can print the value of maximum, or a similar calculation. This gives our programs a lot more flexibility.

+

So instead of just printing a*b, if this function could return a value, that would be quite useful.

+ +

We are creating a variable product and doing a return product.

+

Lets run product_result = product_of_two_numbers(2, 3)

+ +

You can see how simple it is to return values from a method!

+

Summary

+

In this step, we:

+
    +
  • Learned how to return values from inside a method
  • +
  • Observed how we can store the values returned by a method call
  • +
+

Step 10: Programming Exercise PE-MD-02

+

In this step let’s look at a couple of exercises about returning values from methods.

+

Exercises

+
    +
  1. Write a method to return the sum of three integers.

  2. +
  3. Write a method which takes as input two integers, representing two angles of a triangle, and computes the third angle.

  4. +
+

Hint: The sum of the angles in a triangle is 180 degrees. So if I am passing 50 and 50, 50 plus 50 is 100. So some of three angles should be 180, so the third angle will be 180 - 100, which is 80.

+

Solution 1

+ +

The shorter way of doing that would have been to have a temporary variable called instead of sum. We could directly return a + b + c.

+ +

In methods, you can use return expression as well. That expression gets evaluated, and the value gets returned back. You’d see that the result remains the same.

+

Solution 2

+

The second is to write a method to take two integers, representing two angles of a triangle, and compute the third one.

+ +

In your programming career, you would be writing a number of methods. It’s very important that you are comfortable doing so. Most of the methods that you write would return values back.

+

That’s the reason why we’re creating a lot of examples involving method calls.

+

Summary

+

In this step, we:

+
    +
  • Looked at a couple of exercises related to returning values from methods
  • +
  • Observed that returning expressions avoids creating unnecessary variables, and shortens method definitions
  • +
+

Chapter 04 - Introduction To Python Platform

+

Until now we had been using Python Shell to execute all our code.

+

In the real world, we’ll be write Python code in a variety of scripts. Before we would go into an IDE and use the IDE to write the script, we thought it would be useful for us to understand how you can write Python code without the benefit of an IDE.

+

This would also help us understand the Python environment, in-depth.

+

In the next few steps, we’ll be looking at how to create simple Python scripts, using any text editor of your choice. Use Notepad, Notepad++. Editpad, or whichever text editing software you are comfortable with. We’ll see what involved in executing the program, and what’s happening in the background.

+

Here are a few videos you might want to look at. - Writing and Executing your First Python Script - Understanding Python Virtual Machine and bytecode

+

Step 01 - Writing and Executing Python Shell Programs

+

Here’s a recommended video to watch - Writing and Executing your First Python Script

+

Let’s get started with creating a simple script file.

+

We want to type in a simple Python script, or a piece of Python code, such as print("Hello world"). Does it get any simpler than this?

+

We’ll save this into any folder on our hard disk, with a name ‘first.py’ .

+

first.py

+ +

The ‘.py’ is not really mandatory, but typically all python files end with a ‘.py’ extension.

+

Here’s how you can run it: - Launch your terminal, or command prompt - ‘cd’ to the folder where this python script file is saved - execute the command python first.py

+

You will see that Hello World will be printed.

+

If you are familiar with other programming languages, you would need a class, need to put the code in that class, and similar stuff.

+

While Python supports Object Oriented Programming, is not mandatory to create a class.

+

It’s almost as if you’re typing commands, starting from the line one! That’s why we call it a python script.

+

Summary

+

In this small step, we tried to create a simple python script, and we ran it from the command line. All we needed to do, was use the same command we use to launch up the python shell, and followed it up with a name of the file. We created a file called first.py, executed that, and were able to see the output on the console.

+

As an exercise, try and add a few more methods and try to run those methods as well, as part of this script.

+

Step 02 - Python virtual machine and bytecode

+

In this step, let’s try and understand what’s happening in the background.

+

We wrote a simple piece of code using a text editor. We created a file named first.py, and all we did was: python3 first.py. If you look at other languages like Java for example, there is a separate compilation phase and then an execution phase. But with Python, just this command does both compilation and execution.

+

We saw that, as soon as we make a change and we run python3 first.py , the change is compiled and executed as well!

+

In Python, there is an intermediate format called Python byte code. Code is first compiled to bytecode, and then executed on the Python virtual machine.

+

When we installed Python, we installed both the python compiler and interpreter, as well as the virtual machine.

+

In Python, bytecode is not standardized. Different implementations of Python have different byte code. There are about 80 Python implementations, like CPython and Jython. - CPython is a Python implementation in C language. - Jython is a Python implementation in Java language. The bytecode which Jython uses is actually Java bytecode, and you can run it on the Java virtual machine.

+

Python leaves a lot of flexibility to the implementations of Python. They have the flexibility to choose the bytecode, and to choose the virtual machine that is compatible. The bytecode is tied to the specific virtual machine you are using. Therefore, if you’re using CPython to compile the bytecode, you’ll not be able to use Jython to run it.

+

You should make sure, that whatever implementation you are using to compile, is the same one you’re using to run the code as well.

+

Summary

+

A lot of this sounds like boring theory. Don’t worry about it. As a beginner, this might not be very important for you right now.

+

It’s very important for you to understand the process. What’s happening is you were writing Python code, and when you ran the command python3 first.py, it is both compiled and executed. An intermediate format called bytecode is created, which is not really standardized in Python. The bytecode is executed in a Python virtual machine.

+

The idea behind this quick section, is to give you a little bit of background on what’s happening behind the scenes. I’ll see you in the next section. Until then, bye-bye!

+

Chapter 05 - Introduction To VSCode

+

Let’s start using the IDE VSCode to write our Python Code

+

Here are recommended videos to watch - Installing VSCode - Write and Execute a Python File with VSCode - Write Your First Python Program with VSCode

+

Step 01 - Installing and Introduction to VSCode

+

In this quick step, we’ll help you install VSCode.

+

Here’s the video guide for this step - Installing VSCode

+

Go to Google and type in “VSCode Community Edition Download”. Click the link which comes up first: https://www.jetbrains.com/VSCode/download.

+

You’ll go to a page where you can choose the operating system: whether you are on Windows, Mac, or Linux.

+

Once you choose that, you can download the appropriate community version.

+

On the right hand side, you’ll see a community version, and you can click the download link, to start the download.

+

If you are having a problem, you can also use the direct link to download.

+

Once you download VSCode, all you need to do is double-click the package which is downloaded. Follow the instructions, and you can continue with the defaults, until you completely install VSCode.

+

When you launch VSCode for the first time, it should ask you for a theme, where you can choose the default.

+

You’re all set to go ahead with the next step in the course.

+

VSCode is an awesome IDE, and I’m sure you learn a lot about it.

+

Step 02 - Write and Execute a Python File with VSCode

+

In this step, let’s launch up the VSCode IDE, and create our first Python project with a Python script. We want to be able to launch a Python script by the end of this step.

+

Here’s the video guide for this step - Write and Execute a Python File with VSCode

+

Launch the VSCode IDE. You’ll see that it takes a little while to launch the first time, and then brings up a welcome screen.

+

We would want to create a number of Python files. All these files will be in a project. You can think of our project as a collection of Python scripts, or modules.

+

To get started, let’s create a new project by clicking ‘create new project’. Let’s name it - ‘01-first-python-project’.

+

Right now there are no files in the project.

+

Let’s create our first Python file, using the IDE.

+

The way you can do that is by saying ‘right-click’ -> ‘new’ -> ‘Python file’, and then we’ll give this a name of ‘hello_world’, and click OK.

+

Now you can go ahead and write your first Python program. Let’s write some simple code, like print("Hello World"), and save it.

+

You can do a right-click here, and say ‘Run hello_world’.

+

A small window comes up below, which shows the output. It says 'Hello World'.

+

Step 03 - Execise - Write Multiplication Table Method with VSCode

+

Let’s start with a simple exercise. We created the multiplication table method in the Python Shell. What we do now, is we’ll create the same thing but in a Python file of its own.

+

Here’s the video guide for this step: - Write Your First Python Program with VSCode

+

Chapter 06 - Introducing Data Types and Conditionals

+

Welcome to this section, where we will talk about numeric data types, and conditional program execution. After looking at the numeric and boolean data types, we will turn our attention to executing code, based on logical conditions.

+

Step 01: Numeric Data Types

+

In previous sections, we created variables of this kind: number = 5 , value = 2.5, etc. The 5 here is an integer, and integers represent numbers, such as 1, 2, 6, -1 and -2. In Python, the class for this particular data type is int.

+

If you write code like type(5), you’d get 'int' as the output.

+

In Python, there are no primitive types. What does that mean? Every value that you see in a Python program, is an object, an instance of some class.

+

In later sections, We’ll understand what is a class, and what is an object or an instance. For now, the most important thing for you to remember, is that behind every value, there is a class.

+

Snippet-01:

+

Let’s look at 2.5, which is a floating point value.

+

If you go ahead and do type(2.5), what would you see? You would see it’s of type `float.

+ +

When you perform a division operation between two integers, there is a chance that the result of the operation is a float. If you do 5/2, the result is 2.5. If we were to do 4/2, even then it’s of type float.

+ +

All the operations we looked at until now, can also be performed on floating point values.

+ +

value1 - value2 returns 1.299999999999998. Why?

+

Floating point numbers don’t really represent accurate values. That’s one of the things you need to always keep in mind.

+

Typically, if you’re doing any highly sensitive financial calculations, don’t use floats to represent your values. Instead, use Decimal. More about it later.

+

Operations can also be performed between int and float.

+ +

Result of an operation between a int and a float, is always a float.

+

Summary

+

In this step, we:

+
    +
  • Looked at the two basic numeric types: int and float.
  • +
  • Saw the basic operations you can do among ints, among floats, and also between ints and floats.
  • +
+

Step 02: Programming Exercise PE-DT-01

+

In this step, let’s do a simple exercise with numeric values.

+

Exercises

+
    +
  1. You need to create a method called simple_interest, and pass three parameters: principal, interest and duration (in years). You also want to calculate the amount after the specific duration, and return it back. Call this method with a few example values.
  2. +
+

For example, if you want to call simple_interest with 10000, with an interest of 5 percent, for a duration of 5 years, the correct answer would be as follows: 10000 is the principal. In addition to 10000, you get the interest. The interest for one year is 10000 * 0.05, as the interest figure is in percentage.So that’s 500 a year, into 5 which is 2500. The result would be 12500, and this value should be printed.

+

Solution 1

+ +

Summary

+

In this step, we:

+
    +
  • Wrote a very simple method to do a simple interest calculation
  • +
+

Step 03: Puzzles On Numeric Types

+

In this section, we are looking at numeric types. In this specific step, we would be looking at a few puzzles related to values of these types.

+

Snippet-01:

+

Let’s create a simple variable i = 1. i = i + 1. What would be the value of i after that?

+ +

It would be 2. There is a shortcut way of doing the same thing, by using the += operator.

+ +

Typically in other programming languages, you can do something of this kind: i++. There is no provision in Python to use increment operators like ++, in either prefix or suffix mode, like ++i, or i++.

+ +

Let’s look at compound assignments.

+ +

What you see here, is Dynamic Typing in Python. The type of a variable can change during the lifetime of the program.

+ +

Let’s create a couple more numbers. number1 = 5 and number2 = 2. What could be the result of number1 / number2? You know it, it’s 2.5 .

+

number1 // nummber2 truncates the value of 2.5, to 2.

+ +

If you can do number1 // number2, can you also do this: number1 //= number2?

+ +

5 ** 3 is 5 ‘to the power of’ 3, which is 5 * 5 * 5, or 125.

+ +

This can also be achieved by invoking pow(5, 3). We have an operator, as well as a method at our disposal.

+

The last thing we will look at, are type conversion functions.

+

If you need to convert an int value to a float, or a float to an int.

+ +

What if you want to round a value? 5.6 is nearer to 6 than 5. You can use a function called round(), and here,round(5.6) gives the correct result 6.

+ +

round() can also allows you to specify number of decimals in the result.

+ +

You can also convert int to float, by using the function float().

+ +

Summary

+

In this step, we:

+
    +
  • Looked at a few corner cases related to your numeric types.
  • +
  • Examined the different operators available for use with values of numeric types
  • +
  • Learned about the usage of type conversion functions
  • +
+

Step 04: Introducing Boolean Type

+

We will now shift our attention to the bool data type.

+

A boolean value is something which can be either “true” or “false”.

+

Snippet-01:

+

In Python, “true” is represented by True, and “false” by False. It’s important to remember that it’s True with a capital 'T', and False with a capital 'F'.

+ +

The boolean variable is_even indicates whether a number is even or not.

+ +

Let’s create a variable i = 10. We want to find out if i > 15. What do you think is the result? False.

+ +

In general, boolean values can represent the result of logical conditions.

+

Let’s look at other operations that can result in bool values. We looked at > and <. Another operation which you can perform, is >=.

+ +

== is the comparison operator. We are only comparing the value of i against 10, not changing its value.

+ +

Summary

+

In this step, we:

+
    +
  • Were introduced to the bool data type
  • +
  • Learned that bool variables are useful handy while testing logical conditions
  • +
+

Step 05: Introducing Conditionals

+

In this step, let’s look at if statement.

+

Sometimes you need to execute code only when certain conditions are true. You can use a if condition, which is the simplest conditional in Python. Let’s look at an example.

+

Snippet-01:

+

Let’s say i has a value of 5. You want to print something, only if i has a value greater than 3. How do you do that?

+ +

The syntax of the if is very simple: if followed by a condition; with the condition you want to check. It looks like: if i>3: ... You need to indent the body of the if with <SPACE>s as usual.

+

Let’s say i has a value of 2. What would happen if we execute the same code again?

+ +

You would see that nothing is printed to the console. Based on the value of i , either the statement is executed, or it’s not. That’s what an if helps us to do.

+

The way you can think about an if, is the body of code under the if is executed only when this condition is True. If this condition is not True, that code is not executed at all.

+ +

Let’s take two different numbers, say a = 5, and b = 7. We want to compare them, and predict if a is greater that b .

+ +

Summary

+

In this step, we:

+
    +
  • Were introduced to the if statement, the simplest Python conditional
  • +
  • Understood how an if helps in implementing conditional program logic
  • +
+

Step 06: Classroom Exercise CE-DT-01

+

In this step, let’s look at a couple of exercises with the if statement.

+

Snippet-01:

+

Let’s say we define four variables: a = 1, b = 2 , c = 3 and d = 5. we want to find out, if a + b is greater than c + d.

+ +

Let’s say we are given three values meant to be the angles of a triangle. Their values are angle1 = 30, angle2 = 20 and angle3 = 60. You want to find out if these three angles actually form a valid triangle. You know that the sum of the angles of a triangle is always 180 degrees.

+ +

The last exercise is to check if a number is even or not.

+

Hint L you need to use one of the operators we talked about earlier. That’s right, use the modulo operator %.

+ +

Summary

+

In this step, we:

+
    +
  • Looked at a few exercises related to the if statement, for writing and testing conditions.
  • +
+

Step 07 - Logical Operators - and or not

+

In this step, let’s look at the different operators that can be used on bool values. These operators are called logical operators - and, or , not and ^ (xor).

+

Let’s say we have a value True, and the other False, and we want to play around with them.

+

Logical operator and returns true only when both operands are True.

+ +

Logical operator or returns true when atleast one of the operands is True.

+ +

Logical operator not returns negation.

+ +

The XOR operation, denoted by the ^ operator, is True when operands have different boolean values.

+ +

Summary

+

In this step, we:

+
    +
  • Looked at the logical operators that act on boolean values, such as and, or, not and ^
  • +
  • Explored each of these operators, finding out when they return True, and when False.
  • +
+

Step 08: Puzzles On Logical Operators

+

In this step, Let’s look at a few simple puzzles to look at the logical operators.

+

Snippet-01:

+

Let’s say i has a value of 10, and j has a value of 15. You want to find out if both i and j are even. How do you do that?

+ + +

If we want to find out if at least one of i and j is even, we can use the or operator.

+ +

Now try and guess the value of this. if(True ^ False): print("Message")

+ +

Xor operation using ^ - message will get printed if the operands are different.

+

What would happen if both of them are True? No message is printed.

+

So you would use ^ in situations, where you’d want one of the operands to be True, and the other to be False.

+

Let’s say, x = 5, and you want to check if not x == 6: print("This"). What will be the result of running this code?

+ +

Actually, there is a shortcut for such a condition: if x != 6 : print("This").

+ +

int() is a conversion function, which when given say a float value, returns an int value. Consider int(True), what would happen?

+ +

int(True) returns 1. int(False) returns 0.

+ +

One of the most interesting facts about boolean stuff, is anything which is non-zero, is considered to be True.

+

0 is the only integer value which is considered to be False.

+ +

So, if I have a value of x = -6, and execute if x: print("something") what do you think will happen?

+

"something" will be printed.

+

You can use the function bool(), to convert int to a bool value. - bool(6) returns True - bool(-6) returns True - bool(0) returns False.

+

Except for bool(0), all the other results would be True.

+

Summary

+

In this step, we:

+
    +
  • Looked at a few puzzles related to the logical operators
  • +
  • Looked at conversion functions such as bool() and int() to convert between boolean and integer data
  • +
+

Step 09:

+

In this step, let’s look at two other important components of an if statement: else and elif. Let’s start with else.

+

Snippet-01:

+

Consider a scenario where i has a value of 2. Let’s try to print a message "i is even" if i is an even number. Otherwise, print "i is odd".

+

Earlier we wrote code along these lines: if i % 2 == 0 : print("i is even"). However if this condition is not True, we would want to print("i is odd"). How do we accomplish that?

+ +

An else clause provides an alternative code body to execute, if the if condition is False.

+ +

Let’s look at elif.

+

We want to do something if i has value of 3, and something totally different if i has a value of 4.

+

In short, we want to specify 2 alternatives to the if condition. How can that be done?

+ +

That’s where the elif clause comes into the picture. The code in elif is executed if the previous conditions are false and the current elif condition is true.

+

Summary

+

In this step, we:

+
    +
  • Looked at two important components of the if statement: else and elif.
  • +
  • Understood that the elif clauses and the final else clause provide alternative conditions to check, when earlier if conditions are true.
  • +
+

Step 10: Classroom Exercise CE-DT-02

+

In this step, let’s do a simple exercise with if, else and elif.

+

Before getting to the exercise, let’s try and learn how to get console input from the user.

+

Until now, we had been hard-coding all the data we were to use. Let’s make that part more dynamic now.

+

Snippet-01:

+

How do we get input from the user? We want to get input from the console, and assign it to a variable. The way we can do that, is by statement value = input()

+ +

We can call the input() method with a text ‘prompt’, such as "Enter A Value: ". What we can initially do here, is print the value which was entered, back to the console, by print("you entered ", integer_value).

+

An interesting point to explore here, is the type of data input at the console.

+

Let’s do a print(type(value)).

+ +

Input a value of Test. It has a class of str.

+

Let’s run it again to see other possibilities. This time, let’s enter a numeric value, say 12. what would happen?

+

We again get str.

+

We want to get an integer value from the input. How can we do it?

+

int() function converts string to int. Let’s use it.

+ +

Let’s run our code once again.

+

"Enter A Value: " is prompted, and we enter 15. And now, of it says "You entered 15", and the type it indicates to us, is int.

+

Design a menu

+
    +
  • Ask the User for input: +
      +
    • Enter two numbers
    • +
    • Choose the Option: +
        +
      • 1 - Add
      • +
      • 2 - Subtract
      • +
      • 3 - Multiply
      • +
      • 4 - Divide
      • +
    • +
  • +
  • Perform the Operation
  • +
  • Publish the Result
  • +
+

Let’s design a menu, and then ask the user for input.

+

We have codes for each of the operations : add is 1, subtract is 2, divide is 3, and multiply is 4.

+

In the first version of the program let’s get all the inputs and print them out.

+
Solution
+

The first version of the program is simple to write

+ +

We will continue this exercise to complete it, in the next step.

+

Summary

+

In this step, we:

+
    +
  • Looked at the in-built input() function that can read console input
  • +
  • Learned that input() always returns what the user enters, as a string
  • +
  • We can convert the string from input(), to the data type we expect by invoking conversion functions
  • +
+

Step 11: Continued - Classroom Exercise CE-DT-02

+

Exercises

+

In the previous step, we got the input from the user. Let’s continue the exercise in this step. We want to write an if condition.

+

Solution (Continued)

+

Extending the solution is easy. Write appropriate if, elif and else conditions.

+ +

We added the following code to account for invalid input.

+ +

Summary

+

In this step, we:

+
    +
  • Augmented the Menu Exercise to get all the input from the console, and compute a value from them
  • +
  • Corrected the logic to handle incorrect input
  • +
+

Step 12: Puzzles On Conditionals

+

In this step, let’s look at a few puzzles related to these if, elif and else clauses.

+

Puzzle-01

+

Let’s start with the first puzzle. Guess the output.

+ +

When we run it, you can see that the output is 2.

+

k has a value of 15, is it greater than 20? No! Execution goes to the elif, is k greater then 10? Yes. It prints 2 and goes out of the complete if-else block.

+

Inside the if conditional, the if, elif and else clauses are all independent ones. Only one matching block is ever executed.

+

Puzzle-02

+

What do you think would be the output of this particular piece of code?

+ +

Note that there are two totally different if conditions in here : if l < 20: ... immediately followed byif l > 20: ... else: ....

+

The first if is true. l<20 is printed.

+

The second if is a separate statement. The condition is false. So. else gets executed. Therefore, "who am I" gets printed.

+

Puzzle-03

+

Let’s run this code.

+ +

You can see that nothing is printed.

+

The most important thing to focus on here, is indentation.

+

The second if block is executed only if the first if is true.

+

Puzzle-04

+

What would be the output?

+ +

10 is printed.

+

The most important thing to focus on here, is indentation.

+

Only number = number + 10 is part of if block. It is not executed because the condition is false.

+

number = number + 5 is not part of if. So, it gets executed.

+

Let’s add a couple of spaces before number = number + 5.

+

What would be the output?

+ +

5 is printed.

+

Both the statements number = number + 10 and number = number + 5 are part of if block. They are not executed because the condition is false.

+

Summary

+

In this step, we:

+
    +
  • Looked at a few puzzles related to if, elif and else
  • +
  • Explored the importance of indentation and the different condition clauses inside an if statement
  • +
+

Step 01: The Python Type To Denote Text

+

Let’s start looking at another important data type in Python, that’s used to represent strings. Not surprisingly, it is in fact named str!

+

Let’s look at valid string representations.

+ +

In Python, you can use either ```or""` to delimit string values.

+

type() method can be used to find type of a variable.

+ +

The str class provides a lot of utility methods.

+ +

message.capitalize() does init caps. Only first character is changed to uppercase.

+ +

You can also run this directly - 'hello'.capitalize(). Isn’t that cool!

+

That’s because each piece of text in python is an object of the str class, and we can directly call methods of that class on str objects.

+

Now let’s shift our attention to methods, which gives us more information about the specific contents of a string. * We want to find out if this string contains numeric values? * Does it contain alphabets only? * Does it contain alpha-numeric values? * Is it lowercase? * Is it uppercase?

+

To find if a piece of text contains only lower case alphabets.

+ +

If the first letter is in uppercase, then istitle() will return a True value.

+ +

To find if a piece of text contains only upper case alphabets.

+ +

isdigit() checks if a string is a numeric value.

+ +

isalpha() checks if a string only contains alphabets.

+ +

isalnum() checks if a string only contains alphabets and/or numerals.

+ +

Lastly, we look at things which you can use, to check characters of a string.

+

endswith is self explanatory.

+ +

startswith is self explanatory as well.

+ +

find method returns if a piece of text is present in another string. Returns the first match index.

+ +

A value of -1 is returned, if you’re searching for something which is not present in the string.

+

If you are searching for 'Ello' with a capital 'E' ,you’ll not be able to find it. Search is case sensitive.

+ +

Step 02: Type Conversion Puzzles

+

We’ll now try and convert values from one type to another, and try and play around with them.

+

str converts boolean value to a text value.

+ +

All text value except for empty string represent True. So, bool returns True for everything except empty string.

+ +

Let’s try and convert a few integer values to strings.

+ +

Let’s do the reverse.

+ +

if we do int('45.56'), you can see that it throws an error. It says “I cannot convert this to an int, as 45.56 is an invalid integer”.

+

You can also pass an additional parameter to int indicating the numeric system - 16 for Hexa decimal, 8 for Octal etc. Default is 10 - Decimal.

+ +

You can also convert string to float.

+ +

Summary

+

In this quick step, we looked at converting different types to strings, and converting strings to different types. So we looked at int, bool and float values, and we looked at how to convert them to string, and how to convert strings back to these specific types.

+

Step 02: Strings Are Immutable

+

In this step, let’s learn an important fact about strings in Python.

+

String values are immutable.

+

What does immutability mean, and why do we say strings are immutable?

+

Let’s create a very simple string: message = 'Hello', and we’re saying message.upper(). But what does it do? It prints 'HELLO', with all characters in uppercase. Well, what would happen if you do print(message)? It says 'Hello'.

+ +

You would see we tried change the content of message, but it has not changed.

+

When we execute message.upper(), a new string is created, and it is returned back. Original string remained unchanged. This is called immutability.

+

Once you define a string in Python, you’ll not be able to change the value of it.

+

You can use - “OK. I can do something of this kind: message = message.upper()”.

+

What would happen now?

+

Will the value of message get changed? It prints 'HELLO', with all caps.

+

Did the value of message change? Does this prove that strings are mutable?

+

The important thing you need to understand about all this stuff, is how objects are stored inside Python.

+

There are things called variables, and there are things called objects.

+

When we run message = 'Hello' - We are creating one object of str class with a values 'Hello'. - We are creating one variable called message - The location of 'Hello' is stored into message

+

In Python, your variables are nothing but a name.

+

If location of 'Hello' in memory is A, then the value stored in message is A. message is called a reference.

+

What happens with message = message.upper()?

+

A new object is created with value 'HELLO' at a different location B.

+

A reference ot location B is stored into message variable.

+

Summary : The original value at location A has not changed and cannot be changed for str variables. Hence ‘str’ objects are immutable.

+

Variables are just names referring to a location. They don’t really contain the value. Variables contain a reference to the location that contains the object.

+

Step 03: Python Has No Separate Character Type

+

One of the things that surprises people new to Python, is that there is no character data type in Python.

+

Typically we have text data types in all the languages, don’t we? 'Hello World' for example, is text data, and we stored it in message. This is called a string.

+

In other languages, you would have something to represent a single character symbol. For example in Java, you can have a char data type, to store a single character ch, in which 'h' is one character. But in Python, there is no separate data type to store single characters.

+

For example, let’s see how Python treats the first character of the following string message. The way you can access the first character of a string is by saying message[0].

+ +

type(message[0]) and type(message) print the same type str. No difference.

+

In Python, whether you’re talking about a string, or you’re talking about a single character symbol, they are all represented by the same class, str.

+

message[100] throws an IndexError.

+ +

It says: “The given index is out of the range of the value of that specific string”.

+

Let’s say we would want to print all the characters in this string.

+

The way you could do that, is by saying: for ch in message: print(ch).

+

Summary

+

In this short step, we looked at the fact that there is no separate character class, or data type in Python. We also looked at how do we loop over a given string, and print all the characters present inside this string.

+

Step 04: The string module

+

In this step, we will introduce you to the string module.

+

If we would want to use anything from a module in Python, you need to import that specific module into your program.

+ +

If you do a string. and press , it would show the different things which are part of the string module.

+ +

Let’s explore some of these.

+ +

You have a set of printable characters, punctuation characters and a lot more.

+

You can check a text value against any of these

+ +

in operation on a string, checks if a given string.

+ +

Summary

+

In this step, we explored more exercises involving the str module of Python.

+

Step 05: More Exercises With The str Module

+

Let’s start with an Exercise - find if a specific character is a vowel or not.

+ +

he other thing you can do, is just have the capital vowels, or just the lowercase versions.

+ +

Now let’s move on to the next one.

+

We want to find out and print all the capital alphabets, from A to Z.

+

There was a small clue at the start of the previous step, regarding importing the string module. We did the string module, and we saw that string module contained a number of things.

+ +

Try another easy exercise: print all the lower characters. Instead of string.ascii_uppercase, you have string.ascii_lowercase.

+ +

An even easier exercise, would be to print all the digits.

+ +

The last exercise which we want to leave you with, is to check if something is a consonant.

+

A consonant is an alphabet which is not a vowel, so any alphabet which is not in 'aeiou' is a consonant. The simplest way of doing this is to say consonant_string = 'bcdfghj...' and so on. Looks like a very long solution? There is an easier way out.

+ +

Step 06: More Exercises On Strings

+

In the step, let’s look at a few more puzzles and exercises related to strings. Let’s say we have a simple string, string_example, and this is contains an English sentence. 'This is a great thing.'

+

Let’s try to to print each of the words present in this string, on a separate line.

+

So we would want to print 'This', 'is', 'a', 'great' and 'thing' on individual lines.

+

One of the clues we’ll give you is, try and do string_example. <TAB>. There are a huge list of methods, which would come up if you do that.

+ +

One of the methods in the list is the split() method.

+ +

split_lines() method looks for a '\n', and it divides the string based on it. If you have a string which contains newlines, and you would want to divide it into a number of strings with each line as a new element, the method you can use is split_lines().

+ +

The last thing which we look at, is concatenation operator.

+ +

In Python, you cannot do + operator between two different types. + with two strings is concatenation. + with two numbers is addition.

+

One other interesting operator on strings is multiplication. If you do a '1' * 20, What do you think will be the output?

+ +

If you multiply a string with number, the string value is concatenated number times.

+

The last thing which we look at in this step, is comparing strings.

+

Let’s say we have a string with a value str = 'test', and you have another string to with a value str1 = 'test1'.

+

We want to check whether both these strings are the same.

+ +

You can compare strings using the == operator.

+

Summary

+

In this step, we explored a few exercises on strings, covering areas such as:

+
    +
  • Splitting a given sentence into individual words
  • +
  • The concatenation operator, +
  • +
  • The string multiplication pattern, *
  • +
  • The use of the == operator to compare strings
  • +
+

Chapter 07 - Introducing Loops

+

Welcome to the section on Loops. In this section, we will look at a variety of loops that are available in Python. We will look mainly at the for loop, and the while loop.

+

Step 01: Revisited: The for Loop

+

Let’s start with revising the basics of the for loop, we have learned in the previous steps.

+

We saw that a for loop helps us to loop around the same set of code statements, many times over.

+

Let’s look at a few simple examples, once again.

+

Snippet-01

+

The syntax of a for loop is very simple.

+

For example, this code snippet will tell you all about it: for i in range(1, 11): print(i).

+

What does this do? Very simple, it prints from 1 to 10.

+

In the call to the range() function, the second parameter is exclusive. We are actually looping from 1 to 10, and this piece of code, print(i), is being executed for different values of i.

+ +

for loop can also be used to loop round the characters in a string.

+ +

for loop can be used to loop around all the words in a given sentence.

+ +

for loop can be used to loop around a specific list of values.

+ +

Summary

+

In this step, we started with discussing and revising basic concepts about the for loop

+

Step 02: Programming Exercise PE-LO-01

+

Welcome back to this step, where we would do a lot of exercises with the for loop.

+

Exercises

+
    +
  1. The first exercise is to find out if a number is prime. We want to write a method, is_prime(), which accepts an integer value as parameter, and returns whether it’s a prime. (Hint: A prime number is something which is only divisible by 1 and itself). +
      +
    1. 5 is only divisible by 1 and 5. It is not divisible by any other number. Same is the case with 7 and 11.
    2. +
    3. However, 6 is divisible by 1, 2, 3 and 6. So it’s not a prime number.
    4. +
  2. +
  3. The second exercise is to write a method to calculate the sum up to a given integer, starting from 1. Hint: If I would want to find that the sum up to 6. what’s needed is 1 + 2 + 3 + 4 + 5 + 6.

  4. +
  5. The third exercise is to find that the sum of divisors of a given integer. Hint: Let’s say we want to find out the sum of the divisors of 15. The divisors of 15 are 1, 3, 5 and 15. So I would want to calculate 1 + 3 + 5 + 15, and return that value.

  6. +
  7. Fourth exercise is to print a numbered triangle, when given a specific integer.

  8. +
+

Hint: Given an input 5, we would want to print the number triangle of these kind:

+
1  
+1 2  
+1 2 3  
+1 2 3 4
+1 2 3 4 5. 
+

These are the exercises for the for loop. We also test our skills, with creating method and executing them, in our IDE.

+

Solution 1

+

Let’s start with creating the is_prime() method, in a file named for_exercises.

+

We would want to accept an int parameter, and find out if it is prime, or not.

+

We need to check whether it’s divisible by any other number, other than 1 and itself. If we are passed in a value of 5, you want to see if it’s divisible by any of 2, 3 or 4.

+ +

We can use a for loop. We can structure it like this: for divisor in range(1, number): .... We would not want to divide it with 1, but start with 2 instead, and go up to number-1, which is 4.

+ +

How can we check if the number is divisible by divisor?

+

By using the % operator. If number is divisible by divisor we return False.

+ +

What happens if the code comes up to the end? It would mean we tried with 2, 3 and 4, but number was not divisible by all of them. In that case, number would be prime, and we can safely return True.

+ +

For 1, the rules are a little different, as it is neither a prime or composite. We will add an if condition to check if the number is 1.

+

if(number < 2):

+

This if condition is called a guard check or a boundary check, to make sure that you are processing only the right input. If number has a value less than 2, do nothing. OK, it’s not a prime.

+

Here is the entire code at one place, for your reference:

+ +

Step 03: Continued - Programming Exercise PE-LO-01

+

In the previous step, we looked at solving the is_prime() exercise. In this step, let’s look at an implementation of sum_up_to_n(). Here is the entire code for this exercise:

+ +

Summary

+

In this step, we:

+
    +
  • Wrote a Python function to compute the sum of all integers, from 1, up to the input integer n.
  • +
+

Step 04: Continued - Programming Exercise PE-LO-01

+

Let’s focus on the third exercise, sum_of_divisors.

+

One of the clues we can give you, is that sum_of_divisors() is very similar to is_prime().

+

You want to find out if a number is dividing 15, and if it’s dividing 15, with the remainder of 0, then you need to add that up.

+ +

Step 05: Continued - Programming Exercise PE-LO-01

+

In this step, Let’s look at the last exercise - print_a_number_triangle.

+

For example, if we call such a function with input 5, the output needs to be:

+
1  
+    
+1 2  
+    
+1 2 3  
+    
+1 2 3 4  
+    
+1 2 3 4 5 
+

Let start with a simple thing. Let’s try and print 1 2 3 4 5 first, and then we would look at how to print the rest of the output. Lets proceed with defining this method.

+

We can say def print_a_number_triangle(number): ... that takes a number as an input. You want to print a sequence of integers starting from 1, up to that specific number. How can you do that? Let’s try this: for i in range(1,number+1): print(i) What would happen? Let’s call print_a_number_triangle(5) now. It prints:

+
    1 
+    2 
+    3 
+    4 
+    5 
+

on individual lines.

+

To print this sequence on a single line, let’s delimit them with <SPACE> instead. Call print() like this instead: for i in range(1,number+1): print(i, end=" ").

+

Let’s see what would happen now.

+

1 2 3 4 5

+

To solve our exercise, we want to repeat this again and again.

+

Yes, we need another for loop around it!

+ +

Make sure that you have the indentation right. This is called loop within a loop.

+

The output of above program is

+

1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5

+

Let’s add print("\n"), so we have a new line at the end of each outer loop iteration.

+ +

Output

+
1 2 3 4 5 
+1 2 3 4 5 
+1 2 3 4 5 
+1 2 3 4 5 
+1 2 3 4 5 
+

We are printing a square, not a triangle.

+

What we want to do is to print up to 1 in first line, upto 2 in second line and so on.

+

How can we do that? Think about it.

+

When you are inside this loop, you can see the variable j.

+

Instead of number+1, let’s say j + 1.

+

When j has a value of 1, for will print from 1 to 1. When j has a value of 2, print from 1 to 2, literally printing 1 2. When j has a value of 3, I’ll print from 1 to 3. Let’s try this and see what would happen.

+ +

You can see that our number triangle is ready!

+
1  
+    
+1 2  
+    
+1 2 3  
+    
+1 2 3 4  
+    
+1 2 3 4 5 
+

Here is the entire code for you:

+ +

An important point to note is, a couple of these things can be done in a much simpler way. We will look at these options when we talk about functional programming.

+

Summary

+

In this step, we:

+
    +
  • Presented a solution to the exercise for printing a number triangle.
  • +
+

Step 06: Introducing The while Loop

+

Let’s look at one of the other loops which is present in Python, called the while loop.

+

In the for loop, we can specify the range of our iteration, by using the range() function.

+

In a while loop, we specify a logical condition. While the condition is true, loop continues running.

+

Do you remember one place where we use the condition until now? It was in an if statement.

+

Let’s see how to use a simple while loop.

+

Snippet-01:

+ +

Let’s say i has a value of 0, and we then do: while i < 5: print(i).

+ +

If we leave it to run, you’d see that it continuously prints 0 again, and again. Let’s do a <CTRL-C> or <COMMAND-C> to interrupt this.

+

What is happening here?

+

Initially i is 0, and the condition i < 5 is True, and print(i) is executed. Next iteration, it checks the condition, it is True, and 0 is printed. This continues to happen. What’s happening is an infinite loop.

+

One of the important things to make sure in a while loop, is to increment the value of i. We need to say something like i = i + 1.

+ +

So how does it work? i initially had a value of 0. First the condition is checked. It’s True, so 0 is printed and then the value of i is incremented to 1. i is still less than 5, so the loop continues to execute, and this happens until 4 is printed. i again gets incremented to 4 + 1, or 5. * Then we check the condition i < 5. This is now False. Control goes out of the while loop, and terminates it.

+

When executing a while, control flow is just based on a condition. As long as the condition is True, we keep executing the code. An important thing to remember, is to make sure the control variable is updated.

+ +

A for loop is much simpler to code than a while. With while, we have to write an expression statement, to increment the value.

+

The question you might have is - What are the situations when you should use a while?

+

We will look at that very soon.

+

Summary

+

In this video, we:

+
    +
  • Were introduced to the concept of a while loop in Python
  • +
  • Understood the importance of a control variable being incremented inside the loop
  • +
  • Observed differences between the working of a while, and a for loop
  • +
+

Step 07: Programming Exercise PE-LO-02

+

In the previous step, we were introduced to while loop. In this step, let’s look at a couple of exercises using the while loop.

+

Exercises

+
    +
  1. print_squares_upto_limit(30): We need to print all the squares of numbers, up to a limit of 30. The output needs to be 1 4 9 16 25.

  2. +
  3. print_cubes_upto_limit(30): We need to print all the cubes of numbers, up to a limit of 30.The output needs to be 1 8 27.

  4. +
+

Exercise 1: Solution

+

Here is the entire code for your reference:

+ +

Now the next exercise, was to print cubes up to a limit.

+

The expression in the while condition should now be i*i*i < 30.

+ +

Could we have implemented above two examples with for loop? It would’ve been a little more difficult.

+

Typically, we use a for loop when we know how many times the loop will be executed is clear at the start.

+

If we do not know, how many times a loop will run, while is a better option.

+

Step 08: While Example

+

Earlier we used if statement to implement a solution for this: * Ask the User for input: * Enter two numbers * Choose the Option: * 1 - Add * 2 - Subtract * 3 - Multiply * 4 - Divide * Perform the Operation * Publish the Result

+

We would want to enhance it to execute in a loop multiple times, until the user chooses to exit. We will add an option 5 - Exit.

+
    +
  • Ask the User for input: +
      +
    • Enter two numbers
    • +
    • Choose the Option: +
        +
      • 1 - Add
      • +
      • 2 - Subtract
      • +
      • 3 - Multiply
      • +
      • 4 - Divide
      • +
      • 5 - Exit
      • +
    • +
  • +
  • Perform the Operation
  • +
  • Publish the Result
  • +
  • Repeat until Option 5 is chosen.
  • +
+

Snippet-01 Explained

+

Here’s the earlier code we wrote with if:

+ +

Let’s use while around the if. We cannot predict what choice the user enters. We’ll say: while choice != 5:... and at the end, we would want to ask the user for a choice. If your choice is anything other than 5, we will give the output, and print the whole menu again.

+ +

These are the kind of situations where while loop is good. W

+

Summary

+

In this step, we:

+
    +
  • Enhanced the menu exercise done earlier, to allow the user to give operation choices repeatedly
  • +
  • Found that a while loop was ideal to solve this exercise
  • +
+

Step 09 - Loops - Puzzles - break and continue

+

We would be discussing about a wide variety of puzzles related to for loop, and while loop.

+

Snippet-01:

+

What would be the output of this script?

+ +

Output : 1 3 5 7 9

+

``range()function accept astepparameter. It starts with1, and at each step it increments by2.11is exclusive. So11``` is not printed.

+

Let’s look at the next one.

+ +

Output : 1 10 9 8 7 6 5 4 3 2 1

+

On to the next puzzle.

+ +

Output : done

+

On to the next puzzle.

+ +

Output : 222222222222....

+

It’s printing 2 continuously. We forgot the increment. Let’s try and fix this.

+ +

Output : 2 3 'done'.

+

Now, let’s look at a new puzzle, with a new key word, break.

+ +

Output : 1 2 3 4 'done'

+

break breaks out of the loop when executed. With 5, the condition matches if i==5. break is executed, and we get outside the for loop.

+

Let’s look at the next puzzle:

+ +

Output : 'done'

+

You don’t really see anything being printed from the for loop.

+

When you evaluate 1 % 2, it returns 1 as the remainder. Any non-zero number is considered to be True. We break out of the loop.

+

Next Puzzle:

+ +

It prints 2, because 2 % 2 is 0, and 0 is False, so the print is executed as the break is not called. However when it becomes 3, 3 % 2 is 1, which is considered to be True. The break is executed, and we exit out of the loop.

+

Let’s look at a new keyword, called continue. Look at the following code:

+ +

It’s printing 1 3 5 7 9 'done'

+

What do you think will be the output?

+

continue skips the code inside the for loop for the current iteration, and then resumes the next one.

+

Lines after continue in loop are skipped and you’d start the next iteration of the loop.

+

What would happen, if we remove the i%2 == 0, and only have condition as i%2?

+ +

It prints even numbers only. For odd numbers, i%2 is True. They are skipped.

+

The last puzzle we’ll be looking at is exactly a modification of the earlier one. Instead of. i%2, we give the condition as i % 2 != 0.

+ +

What do you think will be the output? Yes you’re right. No change in output, because if i % 2 !=0 is the same as a if i % 2. That’s because if i % 2 is 0, then i % 2 will be False. If i % 2 is 0, then i % 2 != 0 also will be False.

+

Chapter 08 - Python Tips

+

Tip 1 - Using Predefined Python Modules

+

There are a number of predefined modules in Python, providing a wide variety of features for use. In this step, let’s learn how to import a module, and how to use methods from specific modules.

+

Let’s talk about the math module to start off with. Import it by saying import math. If you do math. and press <TAB>, it shows all the functions that are defined in the math module.

+ +

math.floor(4.5) gives you back 4.

+

If you want to find out a little bit more about the math.floor(), say help(math.floor).

+

This command would show you the documentation for this floor() function. It says “floor(x) returns the floor of x as an integer. This is the largest integer, which is less than or equal to x”.

+ +

You can import all the members from the entire module by using from math import *.

+

What would happen now, is all the functions which are present in math, are visible in your namespace.

+

You can directly call floor(5), without the need for math.floor().

+

You can do gcd(2, 4), where gcd() finds the greatest common divisor of these two numbers.

+

For help, You can use help(gcd), and it responds with the documentation.

+

An important things to remember, is when you do import * from math, you are importing everything from there. This means if you have any local variable with the names as these functions, they might get shadowed.

+ +

Typically it’s not really considered to be a good practice to import everything into the namespace.

+

If there are specific things that you would want to import and use them directly, Then you can import just that, by doing this: from math import floor. Also from math import gcd.

+ +

Step 74: Tip 2 - Getting Index Element

+

Let’s next look at a tip regarding loops. In certain scenarios with loops, you might want to access the index of the element. That’s what we would be looking at, in this specific tip.

+

Let’s say we have a list numbers = [1, 4, 6, 3, 4]. Looping through this will be like this: for number in numbers: print(number), which will simply print the numbers. However, if you want to find the index of a specific element from within the loop, how would you do that?

+ +

You can achieve that by saying for index, number in enumerate(numbers): print(number).

+

enumerate() is a built-in Python method, which makes available both the index, and the number.

+

We can now print a formatted string, by accessing {index} and {number}.

+ +

This would also work for strings, consider 'aeiou'. This contain all the vowel characters. Now if we loop around it: for index, vowel in enumerate (values): print(f'{index}{vowel}'). Nothing fancy in here. You can print the index, as well as the particular vowel character.

+ +

Short Hand If Statement

+

In this step, let’s look at a way in which you can make your if statements, even simpler.

+

Let’s say you have a number, number = 5. You want to find out, if it’s even or not, and store it in a name call isEven. Typically, the way you can write that is really simple, isn’t it! You can use if number % 2 == 0: isEven = True else: isEven = False.However, there is even simpler way of doing this!

+ +

You can use isEven = True if number % 2 == 0 else isEven = False . You can see what it contains.

+ +

Now let’s have number = 6, and do it again.

+ +

his is a shortcut if statement, which is very useful when you have simple condition, based on which you want to set the values.

+

Actually the even easier way of doing this, would have been to do this - isEven = number%2 == 0 .

+

If the return value is something like a string, what would you do?

+

Let’s say you want, instead of True or False, a 'yes' or 'no' result. You can use isEven = 'yes' if number%2 == 0 else 'no'.

+ +

In this step, we quickly took a look at shortcuts for if statement.

+

Tip 4 - Beginners Mistakes - Shadowing

+

In this step, we’ll talk about a mistake which a lot of beginners make.

+

Let’s talk about the built-in sum() function. You can pass it lists of values, and it would add them up.

+ +

Now let’s say you are trying to solve a problem, where you want to have two numbers: number = 10, and number2 = 20. During the validating logic,we have to add these up, so what we do is sum = number1 + number2.

+ +

What would happen now if you call this sum([12,34,56])?

+ +

The compiler says “TypeError in object”. It’s not callable. Why is it coming up , is we are shadowing the global built-in sum() function, with a local variable of our own.

+

The bad practice we’re doing in here is shadowing a global function with a local variable. And that’s not good.

+

The way we could have avoided that is by using a different name, maybe calling it sum_of_two_numbers, or even ` ``sum_```. This would prevent us from shadowing some built-in function.

+ +

Summary

+

The best practice is to avoid having variables named with the same names as a building function.

+

Tip 3 - Python is Strongly Typed and Dynamic Language

+

In this step, we look at important concept about Python, that it is strongly typed, but is also a dynamically typed language.

+

What is the strongly typed property of Python? Let’s say a variable a has a value, so a = 1 . Can I do a len(1) ? Nope, it’s not allowed, because the type of a does not allow it. What is the type(1)? It is the type of a here, which is int. On an int, an operation called len() is not really defined.

+ +

Now consider the variable str, that has the text 'Value' stored inside it. On this variable , we would be able to say str.upper(), and this would print 'VALUE'.

+ +

Will I be able to do a.upper(), in a similar fashion? In a, a method called upper() is not really defined. In Python, as we have already seen, everything is an object.

+ +

Even Consider type(1), it’s always int. 1.5 is always a float, 'value' was, ans is, a str.

+ +

What about boolean values? It’s bool. So everything that you see in a Python program, including methods and the data values, are instances of some class.

+ +

The two important things we have learned over here are:

+
    +
  • Python is strongly typed. You cannot do anything that is not allowed by a specific type on an instance of that specific type. And if you do, so you would get an error.
  • +
  • The second thing which we looked at, was the fact that everything in Python is an object.
  • +
+

The other important concept over here is, we have str binding to 'value'. What is the value of type(str) right now? It’s a str, a string.

+

However one can always say in Python, str = 1, that is reassign str with 1 .

+

What would be the type(str) now? it’s of a type int.

+

Type of the str can change during the run-time of the program.

+ +

It can be now a boolean, or and you can assign a list to it as well.

+ +

What is type(str) right now? The type is list.

+ +

Step 79: Tip-6 - PEP8 Python Style Guide

+

In this quick step, we’ll talk about PEP 8. PEP stands for Python Enhancement Proposal, and PEP 8 Is the style guide for Python programs. If you search on Google for PEP 8, you’ll land up on with this document, and you can see it’s quite old. This was actually created in 2001, and the awesome thing is, it lays down all the guidelines on how you can write good Python code.

+

An important thing we love about Python, is the fact that it is very practical, and has a variety of resources surrounding it. While defining this style guide, one of the PEP 8 statements says: “Do not follow the PEP blindly. Think about it, and then follow the guidelines”. Guidelines may not be applicable to 100% of the code scenarios. Make sure that you’re using your judgment in the best way.

+

What are the different things that are discussed in this style guide?

+

You can find it out here - https://www.python.org/dev/peps/pep-0008/

+

Summary

+

As you get better with Python, spend more time with PEP8, so that you get a better understanding of good coding practices.

+

Step 80: Tip-7 - PEP20 Zen Of Python

+

In this quick tip, we look at PEP 20.

+

It’s also popularly called the “Zen of Python”. This document was created way back in 2004.

+

The Zen Of Python says: “Beautiful is better than ugly”, “Explicit is better than implicit” and “Simple is better than complex”.

+

This is how you should think, when you are writing your Python code. The Zen of Python tries to explain what are the code design decisions you should take while programming.

+

One of the things which it focuses a lot on, is expressing clarity. Your code should be simple to read, and easy to understand. As soon as you look at a piece of code, you should be able to understand what it is doing. You can see a phrase saying “Readability counts”, and “Flat is better than nested”.

+

If you have a lot of nested structure, the code is inherently difficult to understand. Rather than that approach, having a flat structure is considered to be better.

+

Making sure that what you are writing is explicit or clear to look at, is much more important than being implicit, because it makes code obscure.

+

“Never hide errors”. If there’s an error,and it can be handled, don’t try to suppress it. Make sure that you are trying to handle it, and that there is enough information for someone to look at, to handle at a later point in time.

+

PEP 20 also says “Keep the implementation easy to explain”.

+

If you are lazy like us, and you don’t want to go to Internet to read the Zen Of Python, all that you need to do is import this document, and this would print The Zen Of Python on your computer.

+ +

As a beginning programmer, a lot of these might not really make sense.

+

This is a document we would recommend you to visit, every once in a while to gain some insights. As you work and write more code, you will see that most of these start making sense.

+

An important thing to realize, is that the basic idea behind all these 19 principles is very simple. Whatever code you write, should be understandable for other programmers.

+

Chapter 09 - Introducing Object Oriented Programming

+

Welcome to section on object oriented programming. The way you think in structured or procedural programming, is completely different from how you would think in object oriented programming, or OOP. In this chapter, you’ll be introduced to thinking in terms of objects. We will discuss about: what is a class, what is an object, what is state, what is behavior, and also discuss about a few basic and important OOP concepts, such as encapsulation and abstraction. Of course, we will use a lot of examples to discuss these aspects of OOP, and the different terminology which is used with respect to the same. We are excited to bring this section to you.

+

Step 01: OOP - The Basics

+

Object oriented programming is all about thinking in terms of objects. Before we get into depth with this, we’ll talk a little bit about structured programming.

+

If you have written programs in a language such as C or Pascal, you’d be doing procedural or structured programming. Such programming involves thinking in terms of procedures. These are also popularly known as methods or functions.

+

Let’s say you have a problem to solve. The first thing you would try and do, is to split the problem into multiple functions, or multiple procedures. You would start thinking in terms of: OK, what are the functions I would need to write? What are the different steps involved in doing this?

+

Humans think in a step by step process.

+

Let’s say I’ve to take a flight from London to New York. This is how I would think:

+
    +
  • Take a cab to London Airport
  • +
  • Check in
  • +
  • Pass Security
  • +
  • Board the flight
  • +
  • Wish the Hostess
  • +
  • Take Off
  • +
  • Cruise
  • +
  • Land
  • +
  • Get off the plane
  • +
  • Take a cab to ..
  • +
+

Procedural programming is just a reflection of this thought process. A procedural program for above process would look something like this:

+ +

Object Oriented Programming (OOP) brings in a new thought process around this.

+

How about thinking in terms of the different Actors? How about storing data related to each actor right beside itself? How about giving them some responsiblity and let them do their own actions?

+

Here’s how our program would look like when we think in terms of different actors and give them data and responsibilities

+ +

Do not worry about the implementation details. Focus on the difference in approaches.

+

We have encapsulated data and methods into these entities, which are now called objects. We have defined object boundaries, and what it can (and cannot) do.

+

An object has * State : Its data * Behavior : Its operations

+

The position of an Airplane can change over time. The operations that can be performed on an Airplane include takeOff(), land() and cruiseMode(). Each of these actions can change its position. Therefore, an object’s behavior can affects its own state.

+

It’s now time to introduce you to some core OOP terms, which will make our future discussions easier.

+

Step 02 - OOP Terminology

+

Let’s visit and enhance the Planet example we had written a few sections ago. This time, let’s also explore the conceptual angle.

+

Planet

+ +

Let’s look at some OOP terminology.

+

A class is a template. An object is an instance of a class. In above example, Planet is a class. earth and venus are objects. * name, location and distanceFromSun compose object state. * rotate() and revolve() define object’s behavior.

+

Fields are the elements that make up the object state. Object behavior is implemented through Methods.

+

Each Planet has its own state: * name: “Earth”, “Venus” * location : Each has its own orbit * distanceFromSun : They are at unique, different distances from the sun

+

Each has its own unique behavior: * rotate() : They rotate at different rates (and in fact, different directions!) * revolve() : They revolve round the sun in different orbits, at different speeds

+

Summary

+

In this step, we:

+
    +
  • Understood how OOP is different from Prodedural Programming
  • +
  • Learned about a few basic OOP terms
  • +
+

Step 03: Programming Exercise PE-01

+

Exercises

+

In each of the following systems, identify the basic entities involved, and organize them using object oriented terminology:

+
    +
  1. Online Shopping System
  2. +
  3. Person
  4. +
+

Solution-1: Online Shopping System

+ + + +

Solution-2: Person

+ +

Step 04: Classes And Objects

+

After hearing a lot of theory about OOP, it’s time to get our hands dirty.

+

Let’s get started, with trying to create a class in Python.

+

The syntax is very simple. Let’s say you want to create a Country class, class Country. For now, you don’t want to do anything in this class, so we’ll say pass.

+

pass helps us to create an empty class. pass can also be used to create an empty method. class is the key word and colon is part of the syntax. Country is the name of the class.

+ +

class acts as a template. It’s a blueprint, and based on this blueprint, we can create instances of the class.

+

How can we create instances of class in Python?

+

india is the name of the instance, and Country is the name of the class.

+ +

These instances are also called objects. We have created three objects of the Country class.

+

Each of these objects have their own state. Right now, the class does not provide any data elements, the state of these objects is empty.

+

Let’s add a little bit of state to these objects. How can you add state? By creating attributes.

+

Let’s use : india.name = ‘India’. We can also say india.capital = ‘New Delhi’.

+ +

What is the state of the india object?

+

It has the name of ‘India’, the capital of ‘New Delhi’.

+

However the state of usa, and netherlands are still empty.

+

Let’s create some state for them as well.

+ +

Now we have state in each of these objects.

+

Each of these objects have their own individual state. When we are changing the state of netherlands, or the state of usa, the state of india does not change.

+ +

Step 05: The MotorBike Class Example

+

In this step, Let’s create a class in the IDE. We want to call the class as Motorbike. We create a few instances of the specific class.

+

How can we define a class?

+

How do we create instances of the class? You just need to say honda = MotorBike() , ducati = MotorBike().

+

We’ll go ahead, and print these objects, print(honda) and print(ducati).

+

Let’s see what would happen when we run this code.

+ +

Output

+
<__main__.MotorBike object at 0x7fbceddd41d0>
+<__main__.MotorBike object at 0x7fbceddd4278>
+

You can see that two objects are being printed.

+

We can also add a little bit of state to these motor bikes.

+ +

Output

+
<__main__.MotorBike object at 0x7fbceddd41d0>
+<__main__.MotorBike object at 0x7fbceddd4278>
+50
+250
+

The state of an object can change during the lifetime of the object.

+

Time for an Exercise : Book class

+

Create a new class called Book. Create three instances of Book. Have you favorite books as the name of the object instances, let each of these instances have an attribute name, and set the name of the book into that object. At the end, print the name of all three instances of the books.

+

Here’s the solution:

+ +

The initial versions of the MotorBike and the Book class we are creating here, are quite basic.

+

During the course of this section, will enhance these two classes to be having more functionality.

+

Step 06: Class And Objects: Puzzles

+

In this quick step, we will look at a few puzzles related to what we have learned about: classes and objects.

+

Let’s create a new class, and call it class Planet, and we’ll have it as an empty class.

+ +

How do you create instances of the Planet class?

+ +

You cannot do a new Planet() - like in Java, for example.

+ +

We have just created an instance called earth. So what would happen now if we say earth.name? The compiler says: ‘Planet object has no attribute name’.

+ +

Let’s set earth.name = 'The Earth'. now if we print(earth.name) what would happen?

+ +

It prints 'The Earth'.

+

Now let’s create a new instance of the Planet. Let’s call this venus. What happens if we do venus.name? It does not have an attribute name.

+ +

An important thing to note is, each object has its own data, its own attributes. The fact we have set attributes on earth, does not mean the same attributes would exist on venus.

+

What we need to do, is set the name for venus as well. Now, You’d be able to use venus.name.

+ +

The last thing we will be looking at, is the behavior. What would happen if we call a non-existent method?

+ +

An interesting thing to note is that Python considers methods, as well as data, as attributes. In Python, you can add attributes dynamically. During the run-time of the program, you can add new data and methods, as attributes as well.

+

Step 07: A Constructor For The MotorBike Class

+

How to set an initial state for an object when it is being created?

+

That’s where a constructor comes into picture.

+

In this step, we will define a constructor for the MotorBike class.

+

How do you define a constructor for a MotorBike class? Once we decide to have a constructor, this cannot be an empty class anymore. We’ll remove pass and define a method.

+
class MotorBike:
+    def __init__(self):
+        print("MotorBike instance created")
+
+honda = MotorBike()
+ducati = MotorBike()    
+
+

A constructor is a special method. Syntax is def __init__(self) .

+

For all the instance methods in a class, you need to pass in an attribute called self. We’ll talk about a few puzzles related to self a little later. For now, it’s important that you follow this exact syntax.

+

When a MotorBike object is created, we might want to print a message. We can say print("MotorBike instance created").

+
MotorBike instance created
+MotorBike instance created
+

'MotorBike instance created' is printed twice - once for each instance created, honda and ducati.

+

Typically we do not use constructors to print statements. We use them to initialize data.

+

We want to set initial speed for honda and ducati.

+
honda = MotorBike(50)
+ducati = MotorBike(250)
+

We can add speed as a parameter to the constructor.

+

Here’s the syntax - def __init__(self, speed)

+
class MotorBike:
+    def __init__(self, speed):
+        print(speed)
+
+honda = MotorBike(50)
+ducati = MotorBike(250) 
+
+

Output

+
50
+250
+

How can we set the value into an instance of the object?

+

self.speed = speed where self.speed represents a speed attribute of the MotorBike instance. On the current object we would want to set an attribute called speed, with the value that is passed to this parameter.

+ +

If we print the speed values of honda and ducati, we get the following: honda.speed is 50, and ducati.speed is 250.

+

Step 08: A Constructor For Book Class

+

Let’s start with an exercise. Enhance the book class to have a constructor to enable create Book with a name - Book('Learning Python In 100 Steps')

+ +

Step 09: Constructors - Puzzles

+

In this step, let’s look at a few puzzles related to constructors.

+

Let’s create the Planet class again, this time with a constructor. We’re not passing anything in here, and also saying pass, so it’s an empty constructor.

+ +

What would happen When we execute Planet()?

+ +

It says error! “init takes 0 positional arguments, but 1 was given”

+

What’s happening here?

+

All instance methods in a class need to have self as a parameter.

+

Whenever you’re creating an object, we are calling the constructor and by default, Python would pass the current instance as an argument. Even though we are not passing any arguments in here, Python would pass one secretly. If we really want to actually create the right constructor, then we would need to have self as the first parameter of the constructor method.

+ +

Now, in addition to the existing constructor, we want to create another constructor, def __init__(self, name), and let’s make it an empty method for now.

+

We’re creating two constructors, one with one parameter, and the other one with two parameters.

+ +

Let’s create Planet() and Planet("Jupiter").

+ +

For Planet("Jupiter"), we got “TypeError: init() takes 1 positional argument but 2 were given”.

+

There are two constructors definitions but only the second one is available.

+

In Python, you can only have one constructor per class.

+

When you define the class - whichever constructor comes last, is the one which is available.

+
+

Exercise : Try reversing the order of constructors and creating instances

+
+

What if I would want to be able to create Planet instances using Planet() and Planet("Jupiter")? Solution - default parameter values.

+

You can use, def __init__(self, name = 'Earth'). By default, Planet instance has a name of 'Earth'.

+ +

Let’s consider the code below: a real constructor

+ +

If we now create a new object earth = Planet(), and execute earth.name, what would be the value?

+ +

Typically in Python, you will have your constructor define all the properties and set initial values to them.

+

Earlier we looked at naming variables. distance_from_sun is a variable. We used small case, and we use underscores to separate the words. We use the same convention, when we name methods as well.

+

However, when we name classes, typically CamelCase is used. That’s the reason why, when we named the class “MotorBike”.

+

The program would work even if the class is named motor_bike. But, what we are talking about are conventions followed across the world of Python programming.

+

Step 10: Class And Objects : Methods And Behavior

+

The state of an object changes with time.

+

Let’s say we want to increase the speed of honda: honda.speed = honda.speed + 150. We can also do: ducati.speed += 25. We are modifying the state of the object, from outside the class.

+

In this step, we will talk about encapsulation, and how we can encapsulate this kind of behavior directly inside the class.

+

Encapsulation is one of the most important object oriented principles, that says: all the data changes should be through methods, the behavior of a class.

+

In the previous example, we are directly changing the value of an attribute. That is not considered to be a good practice, when it comes to object oriented programming. Ideally, the increase in speed should happen through a method call, which is defined inside the MotorBike class.

+

Let’s look at how we could define a method, inside MotorBike class.

+

Note that this is at the same indentation level as the constructor.

+

Let’s name the method as increase_speed(). For instance methods, we need to pass self as one of the parameters.

+ +

You can call this method on the instances, like honda.increase_speed(150).

+ +

What if you want to decrease the speed? Let’s write a method called decrease_speed().

+ +

Here is the full code for your reference:

+ +

Step 11: Exercise - EnhancedBook Class With Copies

+

Let’s start with an exercise.

+

Enhance the Book class we created, to have a new property called copies, which says how many copies of the book are available. Have a method to increase the copies, and one to decrease the copies as well. The other thing is to have copies has a constructor argument.

+

In the constructor, we’ll set the default values of copies to 0.

+ +

We want to have a method called increase_copies(), which we define and call it as learning_python.increase_copies().

+ +

We also want a method to decrease the copies, to be used as learning_python.decrease_copies().

+ +

This is how you can use all the methods we created earlier

+ +

Here is the code in full, for your perusal:

+ +

Step 12: Methods And Behavior - Puzzles On self

+

In this step, let’s look at a few puzzles related to behavior, or the methods we create on a class. Let’s get back to our favorite Planet class, and this time, let’s create a method.

+

Consider the steps below. What would be the result of earth.revolve()?

+ +

Here’s the result

+ +

Remember self. When we call a method on an instance of a class, one parameter automatically gets passed, that’s self. We saw that when we were invoking the constructor. The same is the case with all the methods inside a class. So on all of the instance methods, you’d need to create a parameter called self.

+

Let’s look at this code:

+ +

We want to create a method inside Planet to call both rotate and revolve methods.

+ +

Will this work? No.

+

You need to use self.

+ +

You need to have self to call a method on the same object - self.<specific-method>().

+ +

Step 13: Advantages Of Encapsulation

+

An important question that a number of people ask about encapsulation, is do we really need it?

+

In this small step, We’ll give you an example of why we need encapsulation.

+

What we have with the MotorBike class, are methods to increase speed and decrease speed.

+ +

Consider above snippet. Should honda.decrease_speed(350) be allowed? The initial speed of honda is 50, and by saying decrease speed by 350, it becomes -300. Negative Speed.

+

How do we prevent it?

+

To prevent it from happening, you can enhance decrease_speed method.

+ +

If you use behavior to change the state of the object, then you can add additional logic, such as validation, at a later point in time.

+

That’s one of the reasons why encapsulation is good.

+

Step 14: Everything Is object In Python

+

In Python, everything is an object. What do we mean by ‘everything is an object’?

+

Let’s check type of some values. They all are instances of some class.

+ +

You can call methods on these values as well.

+ +

This is possible because everything in Python is an object of some class!

+

The interesting part comes when we talk about methods. We have created methods earlier. Let’s say def do_something(), an empty method.If you type in do_something() on the prompt, it says: ‘function do_something at ’. a method is also an object.

+ +

You can actually define a method do_something(), let’s say print('something') . do_something points to a new address.

+ +

Let’s try test = do_something.

+ +

test refers to the same function and you can run it using test().

+

This is possible, because even a function is an object in Python.

+

Summary

+

The most important thing to understand from this step, is in Python, everything is an object. The constant values that you create are objects of specific classes, and methods are objects as well.

+

Chapter 10 : Python Data Structures

+

Welcome to this section on data structures in Python. Here, we’ll discuss why we need data structures, and what are the important in-built data structures that Python provides.

+

Step 01: Why We Need Data Structures

+

In this step, let’s focus on the first question: “why do we need data structures?”

+

Suppose we have multiple values to store, like marks of different students in a course. Let’s say these are as follows: * first student: mark1 is 45 * second student: mark2 is 54.(These are quite average students, maybe like me!) * and third student: mark3 is say, 80. This guy is a very good student.

+

Let’s assume the professor asked: “What’s the sum, and what is the average?”.

+ +

The professor says: “There’s a new student”. What?

+

We would need to add a new student with this mark. Not just that, the formulas for calculating sum and average will also need to be changed.

+ +

When you have a list of marks, you’d rather store them in a specific data structure, that would allow easy manipulation. And that’s where the data structures in Python are useful.

+

Let’s look at a specific data structure in Python, called list, and how it helps us to solve the problem.

+

Creating data structures in Python is very simple. You don’t need to be even aware of which class our data structure belongs to. Let’s say we want to store the marks.

+ +

We initialized marks with these three values.

+

We want to find the sum and average.

+ +

We get a new student.

+ +

The code to find sum and average does not change.

+

Summary

+

In this step, we discussed the need for data structures in Python programs.

+

Step 02: Operations On List Data Structures

+

In this step, let’s look at the list data structure.

+

How do you create a list structure?

+

All that do you need to do, is use the square brackets [] syntax, and put the elements you’d want to have in the list. So [23, 56, 67] is a list.

+ +

Let’s look at the basic things you can do with a list.

+

We saw sum(marks). You can do max(marks), min(marks), and len(marks). All these functions are very obvious, aren’t they! len() gives you how many elements are present, min() is the minimum, max() the maximum, and sum() returns the sum of the elements.

+ +

If you want to add more elements, you can do max.append(76).

+ +

If you want to add element at a specific index, you can do that as well; marks.insert(...).

+

Let’s say you would want to insert 60 in between 56 and 67. You would want to insert it at index 2.

+

Indexes in a python list start at 0, going through 1, 2, etc. Now if we do marks, you would see that 60 is inserted in here.

+ +

You can remove a value from marks as well. All you need to do is say marks.remove(60).

+ +

You can also check if a specific element is in the list or not. All that you need to do is, 55 in marks, which returns False. 56 in marks returns True .

+ +

Also, you can search for a specific element; you do marks.index(...).

+ +

Let’s try marks.index(69), on a non-existing element 69. What does it return? It returns an error, that says: “69 is not in list”.

+ +

The next thing you can do, is loop around the elements in the list. You can use for mark in marks: print(mark).

+ +

Summary

+

In this step, we looked some of the basic operations that you can perform on lists. We saw operations like sum(), max(), min(), len(), appending a new element, inserting a new element, removing a specific element, checking whether the element is in the list or not. We understood how to find a specific elements in the list, and how to loop around a list.

+

Step 03: An Exercise With list Of Student

+

In this step, let’s look at an exercise using the list we created earlier.

+

Create a Student class accepting a name, and a list of marks. We want to be able to perform all of these operations which are listed in here, on the Student class: * Find out how many number of marks are there, * Find out what the total sum of marks, * Determine the maximum mark, * Determine the minimum mark, * Calculate the average, * Add a new mark, as well as remove a mark, at a specific index.

+

Suppose the list is [23, 45, 56, 75], which are his marks in different subjects.

+

Let’s define a constructor:

+ +

We need to define the get_number_of_marks() method, next up.

+ +

We can easily create the other methods as well.

+ + +

There is a statistic module in Python, which helps us with the average, but let’s keep things simple and directly use the methods we already have in here.

+ +

The next one we would want to define is add_number_of_marks(). How would you add a mark? We need a parameter, say new_mark.

+ +

The last function we have, is remove_mark_at_index(5). The method which we looked at earlier, remove(), will only remove a specific value, and cannot be used to specify the element index.

+ +

The code to do what we need, would be: del self.marks[index] .

+

We’ll print out these values one by one to complete the program functionality.

+

One of the features you can make use of to print strings that have content split over distinct lines, is to use the triple quote """.

+ +

What it allows us to do, is split the console output of the string into multiple lines.

+

Here is the code for your reference:

+ +

Output

+
[23, 45, 75, 35]
+Student[
+    number_of_marks-4 
+    sum_of_marks-199
+    max-75 
+    min-23 
+    avg-49.75 ] 
+

Summary

+

In this step, we explored an exercise on how to call methods on a list, to do basic arithmetic on its elements. We computed values such as number fo elements, sum, minimum, maximum, average. We also showed you how to add a new element to, or delete an existing element from, the list.

+

Step 04: Puzzles With list Of Strings

+

In this step, we will look at a few puzzles to help us understand lists even better.

+

Let’s create a simple list.

+ +

What would sum(animals) give?

+ +

Error, obviously! Because sum() is not defined on a str.

+

Here are other basic list operations on str.

+ +

You can use index to access elements from list.

+

animals[2] will print 'Fish' , much to your surprise!

+

This is exactly the kind of the array-indexing, we use in C or Java programming. animals[1] returns 'Elephant', and animals[0] gives you 'Cat' . But make sure you actually use an accurate index, because if you do things like animals[4], the compiler would throw an IndexError.

+ +

Let’s look at difference between animals.remove() and del.

+

animals.remove() would remove the specified value from the list. When we do del animals[2], we are specifying the index.

+

If you do del animals[2], the list contents goes down to ['Cat', 'Elephant']. The last element which was at index 2, 'Fish', got deleted.

+ +

Let’s look at the difference between append() and extend().

+

If you invoke the extend() method with 'Fish', what would happen?

+ +

You can see that individual character symbols are being added in. So, 'F', 'i', 's', 'h' are added in.

+

If you do animals.append('Fish'), it would add an element called 'Fish' to the list.

+ +

animals.extend() is actually used to add a list of values. You can use ['Giraffe', 'Horse'] (if we got the spelling right!) , You can see that the elements are added in.

+ +

There is another way you can actually do the extend(). animals = animals + ['Jackal', 'Kangaroo'].

+ +

With a list, you can also use += ! animals += ['Lion', 'Monkey'] !

+ +

In Python, is there is no restriction on what you can have in a list.

+

You can easily say animals.append(10), and animals would have now include a value of 10 . So there is no type restrictions on the list.

+ +

Step 05: List Slicing

+

In this step, we look at one of my favorite features in Python. It’s called List slicing.

+

It’s a really powerful feature, which can help you to break lists into different kinds of values, without a lot of code.

+

Let’s look at what it is, with a simple example, of creating a list called numbers. It has strings from 'Zero' to 'Nine'.

+ +

How many elements does it have? len(numbers), or 10, right? You want to find out what is the second element, or what is the element at index 2. numbers[2] gives you 'Two'. The same index you used, 2, can be used to get a subset of elements from this list.

+ +

How do we get elements from index 2, to 6?

+

Welcome List Slicing?

+

Syntax is very simple. Let’s try numbers[2:6]

+ +

index 6 is exclusive. We should do numbers[2:7]

+

There are multiple ways in which you can use lists slicing.

+

numbers[:6] doesn’t have a start index. 0 is default.

+ +

numbers[3:] doesn’t have end index. default is up to the end of the list.

+ +

Let’s make it even more powerful. What we can even do, is specify we want to start from index 1, going up to index 8, but only want to get every second element.

+ +

How to get every third element?

+ +

numbers[::3]. You get 'Zero'. 'Three', 'Six', 'Nine'. Isn’t this awesome!

+ +

You can also use slicing to access the list in reverse order.

+

So numbers[::-1] will return the list elements, but this time in the reverse order.

+ +

When you say numbers[::-3], it starts from the end of the list, and fetches every third element from the end, backwards.

+ +

A lot of programmers from other languages struggle with slicing, because when they first see this syntax ::, they go mad!

+

What is it doing? What’s the :? What is it doing all over the place? [1:8:2]… Oh My God!

+

Python seems like a weird language to them.

+

Once you understand slicing well, then it makes your code much simpler.

+

You can use slicing to delete elements from a list.

+

Let’s say you want to delete all the elements starting from index 3. You could do del numbers[3:].

+ +

Let’s re-initialize the list, and try to delete numbers in the middle of the list, starting from index 5 to 7. The thing to remember, is 7 here is exclusive.

+ +

Another important thing that you can do with slicing, is replace the values in the list.

+ +

We’ve replaced values 'Three','Four','Five','Six' with 3, 4, 5, 6.

+

Summary

+

In this step, we looked at how you can use slicing to retrieve values from a list, delete values from a list, and update values in a list. When you’re coming from other languages to Python, slicing is one of the important things that you need to understand very well.

+

Step 06: list - Sorting, Looping And Reversing

+

We have been talking about different features of lists, in the last few steps. And there are still a few more steps to come.

+

In this step, let’s focus on a few simple pieces of code to sort, to reverse, and also a few other tips related to looping around a list, using an index.

+

Let’s get started with initializing numbers again. We allow numbers to have values from 'Zero' to 'Nine', so we have something to play with.

+ +

The first thing we look at, is reversing the list, by doing numbers.reverse(). It reverses the existing list. numbers.reverse() is an in-place reverse. That means, it is modifying the existing list directly.

+ +

However, if you’d want to loop through the list in a reverse direction, this is not necessary.

+

Let’s re-initialize numbers again, so we have the original list back. If you don’t want to do an in-place reverse, but only access the elements in reverse order, then you can use reversed(). reversed(numbers) would actually give you an iterator, that helps you access the elements in a reverse direction.

+ +

What is the difference between reverse() and reversed()? reverse() does an in-place reverse. So, the original list gets reversed. However, when want to access the elements in reverse without changing them, we can use reversed().

+

Let’s say we want to sort the list. numbers.sort() sorts strings in alphabetical order.

+

sort() does an in-place sort.

+ +

Let’s initialize numbers again. If you don’t want to do an in place sort, rather just access elements in a sorted order, there is something else for it. What you can do, is use sorted().

+

Iterating is simple: for number in sorted(numbers): print number.

+ +

Another interesting feature in sorted(), is you can pass in a key to use.

+

We are passing in len , length of the string, or the number of characters present in it. We will get the elements in the increasing order of their length.

+ +

Another interesting feature of the sorted() method is reverse=True.

+

What would happen?

+ +

You are right, it starts printing elements in the reverse order of the length.

+

These are really powerful things that you can do with a key in here. You can also use a Lambda Expression. We will look at it, when we talk about functional programming.

+

Instead of sorted(), we can use numbers.sort() function.

+ +

Summary

+

In this step, we focused on two important features. sort() versus sorted(), and reverse() versus reversed(). We saw that the basic methods on the list directly does an in-place change. If you call numbers.sort() or numbers.reverse(), then the original list get affected. However, sorted() and reversed() are returning iterators, which do not change the original list. We also looked at the fact we can pass in a key to the sorted(), indicating how we would want to sort it, what is the criteria based on how we would want to sort. And we can also pass in a parameter called reverse, to indicate we would want to sort in reverse order. There’s a lot of stuff we learned in this specific step.

+

Step 07: Using list As Stack And Queue

+

In this step, we look at the features which a list provides, where it can act as a stack, and a queue.

+

First of all, what is a stack, and what is a queue?

+

A stack is typically called a Last In, First Out data structure. If you insert elements in the order 1 2 3 and 4, then to take out the elements from the stack, the first one which come out is 4, the next one is 3, Next one is 2, and next to one is 1. So it’s called Last In, First Out.

+

A Queue, as we all know, is first in, first out. If you insert elements in this order, to take out an element of the queue, you would get 1 out first.

+

How can we use a list as stack, or a queue?

+

Let’s start with the stack.

+

Let’s create a simple list.

+ +

The way you can use a list as a stack is by saying numbers.pop().

+ +

pop() method retrieves the last inserted element as well as deletes it. If you look at numbers right now, 4 is removed from the list.

+

You can look at the result of multiple pop operations below.

+ +

How do we use it as a queue?

+

Let’s create the list again.

+ +

numbers.pop(0) would take the first inserted element out of the list. If you look at numbers, it would only have [2, 3, 4].

+ +

Look at few more operations below:

+ +

Step 09: list With a custom class

+

In this step, let’s look at using instances of custom classes inside a list. Let’s create a class Country.

+ +

Most of the class is self explanatory.

+

__repr__(self) method provides the string representation of a class. When you print an object of this class, the return value from this method is printed.

+

Some of the operations you can perform are shown below:

+ +

Output

+
('India', 1200, 100)
+[('India', 1200, 100), ('China', 1400, 200)]
+[('USA', 120, 300), ('Russia', 80, 900)]
+

Summary

+

In this step, we looked at how to create lists using custom classes in Python. In the next step, we would look at how to sort, and manipulate this list.

+

Step 10: list With a custom class - Part 2

+

In the previous step, we created a Country class, and we created a list of countries. In this step, Let’s focus on trying to find the:

+
    +
  • country with the maximum population
  • +
  • country with the maximum area
  • +
  • country with the minimum area
  • +
  • sorted list of countries, in a specific order
  • +
+ +

Now what we want to do is sort countries. Can we do this, countries.sort()? You get an error

+
Traceback (most recent call last):
+  File "main.py", line 15, in <module>
+    countries.sort()
+TypeError: '<' not supported between instances of 'Country' and 'Country'
+

If the values were numbers, or strings, then Python knows how to compare them. The values in this list belong to a user-defined class. How do we help Python compare one Country with another?

+

Let’s say we want to sort by population.

+

You can do it by countries.sort(key=attrgetter('population')). attrgetter method needs to be imported in - from operator import attrgetter() .

+

Output

+
[('Russia', 80, 900), ('USA', 120, 300), ('India', 1200, 100), ('China', 1400, 200)]
+

Countries are sorted in the increasing order of population.

+

How can you sort them in the reverse order, in the decreasing order?

+ +

Output

+
[('China', 1400, 200), ('India', 1200, 100), ('USA', 120, 300), ('Russia', 80, 900)]
+

We can use max(), min() and all the other stuff using the same approach.

+ +

Here’s the complete program we wrote during this step.

+ +

Step 11: list Comprehension

+

We know we have been playing with lists a lot, and the final thing we talk about is list comprehension.

+

Why do we need list comprehension? Great question.

+

Let’s get back to the numbers example.

+

We want filter elements that have length 4.

+

Let’s look at the traditional approach:

+ +

Lot of code. Isn’t it?

+

List comprehension allows you to do this in a much simpler way.

+

The basic syntax is numbers_length_four = [number for number in numbers].

+ +

We are printing complete list again.

+

Let’s try something else, say [len(number) for number in numbers].

+ +

Interesting. We created a list with lengths of each element.

+

Let’s get back to the problem we wanted to solve, where we only wanted to get the ones of length 4.

+

We can add an if condition between the [...]: [number for numbers in numbers if len(number) == 4].

+ +

Isn’t that cool? You can see that numbers_length_four contains 'Zero', 'Four', 'Five', 'Nine'.

+

Now let’s create another list, values = [3, 6, 9, 1, 4, 15, ...], which can have duplicates as well. so it might have 6 twice, even thrice. You want to create another list named values_even filtering only the even numbers.

+

values_even = [value for value in values if value %2 == 0] will do the job for us.

+ +

To extract only the odd numbers instead, use the condition value % 2 == 1.

+ +

Step 12: Introduction To set

+

A list can contain duplicates. So if we create a list numbers = [1, 2, 3, 2, 1], it is a valid list. A list is more based on the index, or position of elements. So in numbers, at index [0] is element 1, the element at index [1] is 2,and so on. A list is a positional data structure. You can add things at the end, or anywhere in-between.

+

A set, on the other hand, does not contain duplicates.

+

You can create a set from a list numbers, by set(numbers).

+ +

You can see that the numbers_set is printed using {, } as delimiters. It does not have duplicates.

+

You can add a number to a set. Let’s add an element already present in the set. No change. No duplicates.

+ +

If we add a fresh element , it would be added to the set.

+ +

When you do numbers_set.remove(0), 0 is deleted.

+ +

Set does not support access using index. So you cannot say numbers_set[0] and try to access the first element in the set.

+ +

You can check if an element is in a set, or not. You can use 1 in numbers_set, to get a boolean result.

+ +

You can do aggregate operations - min, max, sum and len.

+ +

In a set, you can perform operations like intersection, union and disjoint.

+

Let’s create a new set numbers_1_to_5_set, to hold the set {1, 2, 3, 4, 5}. We want to have a set numbers_4_to_10_set to have the set {4, 5, 6, 7, 8, 9, 10}.

+ +

Now, if you do numbers_1_to_5_set + numbers_4_to_10_set, what would happen?

+ +

It says ‘unsupported operation’.

+

Union can be done using |. The union of two sets combines the set elements, and finds the unique ones among them. So it returns {1, 2, 3, 4, 5, 6, 9, 10}.

+ +

Intersection is doing using the ‘&’ operator. It returns elements which are present in both these sets, {4, 5}.

+ +

The other operation you can do is subtraction represented by -. This would return the elements in first set, but not present in the second set.

+ +

Step 13: Introduction To dict

+

In this step, let’s look at dictionary - represented by the class dict. Dictionary represent key-value pairs.

+

Let’s say we have a sentence, and we would want to find out how many times each character occurred in that sentence. In those kind of situations, you can use a dictionary. Suppose 'a' occurred 10 times, 'b' occurred 15 times, 'c' occurred’ 25 times. If you are familiar with Java, then this is like a HashMap, where it stores a key and its value. The key can be any object, and the value can be any object as well.

+

Let’s create a dictionary. Syntax is occurrances = dict(a=5, b=6, c=8).

+ +

A dictionary allows us to access values, using a key, something like occurrences['d'] = 15.

+ +

In a list, the index used was a number. However, in a dictionary, the index can be anything. It can be any object, and over here, we are using a string.

+

You can also print the value of occurrences['d'].

+ +

You should be cautious when using the approach. If the key does not exist, you get a KeyError.

+ +

A better way, without throwing an exception, would be get().

+ +

You can use occurrances.get('e', 10) to provide a default value. If key e is not present, it returns 10 back.

+ +

There are a number of useful methods which are present in a dictionary. Let’s look at some of them.

+ +

occurrances.items() returns the key-value pairs, in the format of a tuple. Each tuple has key as the first element, and value as the second element. You can loop around all the items, by using this way.

+ +

You can also delete a specific key - del occurances['a'].

+ +

Step 14: An Exercise With dict

+

In this step, let’s do a simple exercise with a dictionary. We have a simple string for you here:

+

"This is an awesome question. This has never happened before This is your first time learning Python. Hopefully this has never happened before."

+

With this string, we want to do two things:

+
    +
  • Compute how many times has each word is present in the string.
  • +
  • Find out how many times each character is present in this string.
  • +
+

Solution 1

+ +

Output

+ +

What this does is * It checks the char_occurrances to see how many times char is present. * If it’s not present, then return 0. * The first time you find char, the value which would be set to 0 + 1, or 1. * The second time you’ll find the character, you’ll have 1 in the dictionary, add 1 to it, and store and return a 2.

+

Solution 2

+ +

Output

+ +

Step 15: Puzzles With Data Structures

+

In this step on data structures, we look at a number of puzzles related to set, lists and dictionary.

+

We want to create a simple list which has the squares of the first 10 numbers. How do you do that? The simplest way to do that in Python, would be to use list comprehension.

+ +

We would want to create a set, with the same values. We can use set comprehension. Use braces {} instead of square brackets [] - squares_first_ten_numbers_set = { i*i for i in range(1,11) }. If you do a type(squares_first_ten_numbers_set), you get a 'set'.

+ +

Square brackets [] denote list. Braces {}, denotes set or a dict.

+

To create a dictionary, you need a key and a value pair - { i : i*i for i in range(1,11)}. i : i*i is key : value pair.

+ +

type([]) is list and type({}) is dict. If you want to create an empty set, you can use the set() function.

+ +

The other way you can create a set, by actually having an element - type({1}).

+ +

However if you actually make it a key-value pair… ? It would be of type ‘dict’.

+ +

You can create tuple by using (), We will look at tuple in the next step.

+ +

Summary

+

These are all pretty nuanced but these are powerful things you would need to understand to make complete use of the power of Python. I think understanding all the things we are discussing in this specific step, are key to making great use of all Python data structures.

+

() represents tuples, [] represents a list, and {} might be a set or a dictionary. If {} does not contain anything it’s a dictionary. If the {] contain a set of elements, it’s a set. If the {} contains key-value pairs, then it’s a dictionary. Make sure that you understand every word of this.

+

Step 16: Introducing tuple

+

In this quick tip, we would be looking at interesting data type in Python, called the tuple. Now what does that mean, how do you use it, and how is it different from a list?

+

Let’s look at it right now. Let’s define a method called create_ranga(), and let’s return 'Ranga', followed by the date of birth 1981, as well as the country, 'India'.

+

Is this really allowed? Of course!

+ +

We are returning multiple values from above method.

+

Let’s call this method: ranga = create_ranga().

+ +

What’s the return type? It’s of type tuple.

+ +

A tuple is nothing but a sequence of values, separated by a comma.

+

Let’s say you want to take ranga, and assign values to three different variables. name, year, country = ranga.

+ +

name, year, country = ranga is called destructing. We are assigning the values from the tuple, to three different variables.

+

On the tuple, you can do a number of operations. For example, you can do a len(ranga), which returns 3. You can use an index to retrieve the values of a tuple, as in ranga[1], and ranga[2].

+ +

Now let’s try and change a value. Suppose ranga was not born in 1981. We would want to reduce his age.

+ +

It does not allow you to do that, because a tuple is by definition, immutable. The values in a tuple cannot change. For that reason, in certain situations, tuples might be more efficient to use than a list.

+

Typically, a list is a collection of different values or objects of same type - a list of persons, a list of numbers etc. Typically, a tuple is a set of related attributes - details of a person.

+

A tuple typically stores details about a specific thing and the list stores a number of things.

+

Let’s look at a few simple tips regarding usage of tuples.

+

You an create a tuple by using person = ('Ranga', 1981, 'India') or person = 'Ranga', 5, 'India'. And once you have it, you can destruct it.

+ +

What would happen, if we have only two variables on the left hand side? Obviously, it would throw an error!

+ +

Tuples make swapping very easy.

+

Let’s have two values x = 0, y = 1. You want to swap values.

+ +

Swap is easy.

+ +

R.H.S of x, y = y, x is a tuple (y, x) and it is destructed to the L.H.S variables.

+

We could’ve done both assignments together.

+ +

An interesting thing is related to how do you create a tuple with one element. Consider x = (0), what would happen? What would be the type of x? It’s of class int.

+ +

How do you create a tuple with just one value? The way you can do that, is by putting a comma. So you can do x = 1,, and it is actually a tuple .

+ +

It’s typically an interesting piece of code, for people who come from other languages. They would be worrying: Oh!! what does it really mean? Time for Python programmers to have some fun!

+

Chapter 11 - Object Oriented Programming Revisited

+

Welcome to this section, a continuation on Object-Oriented Programming. In an earlier section, we understood the basics of object oriented programming.

+

In this section, we will focus on more advanced stuff related to object oriented programming, such as: * Object composition * Inheritance * Abstract classes, and class design

+

Recommended Video - Java Advanced Object Oriented Programming Tutorial - https://www.youtube.com/watch?v=0flBHkyET_E

+

Step 01: OOP Basics Revised

+

In this first step, we will revise the concepts we learned earlier: class, object, state and behavior. As We understood earlier, a class is a template. The MotorBike class hence is a template, for all the objects of its kind. honda is an object or instance, and so is ducati. honda has a specific state at this point: it has a value of 50 for its speed. The state of an object is represented by the values of its properties, or member members. speed is a property and a member variable. We change the state of an object through the behavior of an object. Here we have increase_speed() and decrease_speed() as the methods to change the speed of the object. We saw that the state of the object can change during the lifetime of the program.

+

Step 02: Designing A Fan Class

+

In the previous step, we talked about a few important questions that you need to ask when you are talking about your classes:

+
    +
  • What is the state? That means, what are the member variables you need to have.
  • +
  • How do you want to allow creation of a specific object? That is, what is the kind of constructor that you want to allow?
  • +
  • What is what is the behavior you want? That would be the member method definitions.
  • +
+

Let’s consider the example of a ceiling fan. For this Fan class, you can think about the different elements that represent the state of a specific Fan object. You can think about how you want to allow construction of a Fan object, and how to define its behavior. In other words, what kind of changes you want to allow in the state of a Fan class.

+

The state we’re looking at is make (manufacturer), radius (wing radius), color, isOn (a bool, representing whether it’s on), and speed. It’s now time to represent the Fan class in our code. Above are the different things that make up the state of a Fan.

+

An important thing you need to take care of, when you’re designing the behavior of a class, is to think about the consumers. Think about who’s going to use your class, and how they would like to see it. When we talk about a fan, the typical behavior is: * Switch it on * Switch it off * Increase the speed * Decrease the speed

+

This is the typical behavior that might be expected by consumers, who would use our class. Even when you’re not really designing classes to be consumed by others, we would recommend you to think about what kind of behavior you would want, and get an outside in perspective.

+

All that theory aside, Python is all about getting things done, as fast as possible. Let’s try and keep this analysis to a bare minimum. Let’s get down to business.

+

Let’s create the constructor first.

+

When we’re creating a fan all we will need to decide is the make, radius and the color. Therefore, we want to pass in make, radius, color to this constructor.

+ +

Let’s define the representation method so that we can see the content of the object.

+ +

When we run this code:

+ +

We get ('Manufacturer 1', 5, 'Green', 0, False)

+

Now let’s go ahead and represent the behavior we wanted to have, for this specific class.

+

switch_on starts the fan and gives a initial speed value.

+ +

switch_off stops the fan and makes speed 0.

+ +

Here is the full code so far, for your reference:

+ +

We leave it as an exercise, to implement the increased_speed() and the decrease_speed(). It should be very easy. All that you need to do, is and given the speed, increment and decrement the speed variables.

+

Step 03: Object Composition - Book And Reviews

+

In this step, we want to do a simple exercise on object composition.

+

First of all, what is object composition?

+

Up until now, we stored simple elements inside our object, so id is a number, name is a string, author is a string. In a class, you can use instances of other classes as well. Earlier we used instances of the predefined classes in Python.

+

In this step, we’ll create a custom class called Review. In the Book class, we will have a list of Reviews. This is called object composition.

+

Let’s look at the solution.

+

Let’s have a constructor, as in: def __init__(self, id, name, author). Let’s define a repr method as well.

+ +

Let’s create an instance of the Book, read the book as well. You’re able to see the content of the book, but the reviews are still empty.

+ +

Output

+ +

How do we add reviews?

+

Before we are able to add reviews, we need to have a class called Review.

+

In Python, You can have multiple classes in the same file.

+

Let’s start with this

+ +

Let’s create a Review and print it as well.

+ +

Output

+ +

There is no relationship between the Book and Review. Let’s fix it by creating an add_review() method. Let’s add this to Book class.

+ +

Let’s use this to add a couple of reviews:

+ +

Output

+
(123, 'Object Oriented Programming with Python', 'Ranga', [(10, 'Great Book', 5), (101, 'Awesome', 5)])
+

Here’s the complete code we have until now.

+ +

Output

+
(123, 'Object Oriented Programming with Python', 'Ranga', [(10, 'Great Book', 5), (101, 'Awesome', 5)])
+

Summary

+

We created a Book class, a Review class, and added behavior to the Book so we can add Reviews to it. The relationship between Book and Review is called composition. A Book instance consists of instances of Review.

+

In the next step, we would look at on the relationship called inheritance.

+

Step 04: Why Do We Need Inheritance

+

In this step, let’s look at why we need inheritance. We consider a simple example involving an Animal and a Pet, and understand its importance.

+

Let’s create a simple class called Animal with a method bark and create an instance of it.

+ +

We want to create another class Pet with ability to bark and groom.

+ +

In above classes, there is an unnecessary repetition of bark(). Why can’t Pet inherit the behavior from Animal? That’s where inheritance comes in.

+

Let’s see how can how we can do that.

+

Look at this class definition: class Pet(Animal) indicates that Pet extends Animal class.

+ +

You can obviously do pet.groom() on the Pet.

+

But the interesting thing is you would be able to even do pet.bark(), even though pet does not contain bark(). It inherits the behavior from the Animal class.

+ +

Animal class is called a super-class, and Pet is called a subclass. The subclass inherits the behavior and properties of the super-class.

+

Inheritance is a powerful concept. One of the most important things to understand, is to use inheritance only when there is an is-a relationship. Over here, Pet is-a Animal.

+

Sometimes, inheritance is misused in situations where there is no is-a relationship, and that can lead to problems.

+

Step 05: All Classes In Python 3 Inherit From object

+

object is a base for all classes in Python.

+

It has the methods that are common to all instances of Python classes

+

Let’s define Book class, create an instance and print it

+ +

Output is <__main__.Book object at 0x7f78e7fe1588>.

+

Where is the output coming from?

+

Book class inherits from object class.

+

The default implementation of repr method return the value shown in the output.

+

Let’s override the repr method.

+ +

Output is 'new book'.

+

We are now overriding the default repr implementation from object class.

+

Step 06: Multiple Inheritance

+

In this step, let’s look at an interesting feature which is supported by Python. It’s called multiple inheritance. It means a single class can inherit from multiple classes.

+

We will create two classes - LandAnimal and WaterAnimal.

+ +

We want to create Amphibian class extending both WaterAnimal and LandAnimal.

+ +

What we are doing in here is called multiple inheritance.

+

The Amphibian class is inheriting from WaterAnimal and the LandAnimal. If these classes have any methods, then the Amphibian class will also inherit those.

+

Let’s add constructors to these classes.

+

First thing we do is we’ll delegate to the superclass constructor - super().__init__().

+

We will add a walking_speed to LandAnimal and swimming_speed to WaterAnimal.

+ +

Output

+
10
+5
+

You can see that amphibian object inherits properties from both super classes.

+

Let’s add behavior as well : method increase_walking_speed in LandAnimal and method increase_swimming_speed in WaterAnimal.

+ +

Output

+
35
+55
+

You can see that we are successfully able to call super class methods on the amphibian object.

+

Summary

+

In Python, you can have multiple inheritance. We saw how you can inherit from two classes. Amphibian class inherit data and behavior from the two super-classes.

+

Step 07: Creating And Using An Abstract Class

+

In this step let’s look at an important feature in related to object oriented programming called abstract class. We’ll understand how you can create abstract classes, and also see where you can use abstract classes.

+

What do we mean by an abstract class?

+

Let’s say we have a class called Animal. It’s an empty class. Typically, you’ll be able to create instances of this class.

+

There might be certain situations where we don’t know what the code inside a method should be. However, you want the sub-classes to define how this method should behave.

+

When we created Animal, it might not know how to bark. We would want to leave the definition of the method to sub-classes. In such situations, we go for an abstract class.

+

An abstract class might have several abstract methods.

+

Let’s define AbstractAnimal class with abstract method bark.

+

We would need to extend a class called ABC - Abstract Base Class. We need add a decorator on abstract method - @abstractmethod.

+ +

We cannot create an instance of abstract class.

+
animal = AbstractAnimal()
+

Error from above code - TypeError: Can't instantiate abstract class AbstractAnimal with abstract methods bark

+

You can create a sub class implementing the abstract methods in the abstract class.

+ +

This prints 'Bow Bow'

+

Let’s look at more related to abstract classes in the next step.

+

Step 08: Template Method Pattern With Recipe Class

+

In the previous step, we looked at the basics of abstract class.

+

In this step. Let’s look at a real world example of how you can use an abstract class.

+

Let’s create a class called Recipe. Typically when we cook something, there are typically three steps involved. * The first one is to prepare. You’d want to make sure, that you have all the raw materials ready, you have clean vessels, and the dishes are done and ready for use. * The second one, is to execute the recipe, so you need to follow the instructions. * The last step is to do a clean up. Make sure that you clean and things like that.

+

Let’s say now, you’re creating a class to represent a Recipe, and you want to make sure that each of the sub-classes follow these three steps.

+

How do we do that?

+

One of the solutions we can use, is to use abstract class.

+

Let’s create the class AbstractRecipe.

+

It has three abstract methods - prepare and recipe and cleanup. Sub classes can implement these methods.

+

The execute method calls these three steps.

+ +

What we are saying is, we don’t know what are the steps which are involved in the preparation, recipe or cleanup. However, we want to ensure that these three steps are defined by all the sub-classes. And when we execute something, we would want to follow these steps in that order.

+

We are defining an algorithm, and leaving the implementation of individual steps to the sub-classes. This design pattern is also called a Template Method design pattern.

+

Let’s create Recipe1 .

+ +

When you run this:

+ +

You get

+
do the dishes
+get raw materials
+execute the steps
+

Let’s create another recipe - MicrowaveRecipe.

+ +

When you run this:

+ +

You get

+
do the dishes
+get raw materials
+switch on microwave
+execute the steps
+switch off microwave
+

Step 09: A Quick Revision

+

In this section, we looked at a wide variety of object oriented concepts.

+
    +
  • We started with revising the basic concepts - classes, objects - state and behavior. We created a couple of simple object oriented programming examples. We designed a Fan and Book classes with state and behavior.
  • +
  • We looked at object composition. We created a Book class having a number of Reviews.
  • +
  • We looked at inheritance. We created multiple examples of inheritance, and we looked at an example of multiple inheritance as well. Inheritance helps us to design a class hierarchy, and to use properties from the super-class.
  • +
  • We looked at a specific type of a class called abstract class, for which you’ll not be able to create instances. We looked at examples where abstract classes are really useful.
  • +
  • We looked at the Template Method design pattern, where you define a template, and leave specific implementation details to the subclass. We saw how abstract classes help us to implement Template Method design pattern.
  • +
+

Chapter 12 - Error Handling

+

Step 01: Introduction To Error Handling - Your Thought Process

+

Welcome to this section, where we’ll focus on all the important things concerned with exception handling. We’ll discuss how to handle exceptions, and how a programmer’s thought process needs to be when implementing exception handling.

+

An important things to note is, it’s not just the bad programmers who cause exceptions. Even code written by good programmers can have exceptions. Exceptions can occur because of bad code. Exceptions can also occur when your expectations about the environment did not match. Maybe you were expecting a directory to be there on the system, or a folder structure was not present on your deployment environment. You could be expecting some configuration to be done on a database, which was not done.

+

What are the keys to exception handling?

+

The most important thing is, if something that goes wrong is in your system, you should give a good message to the end user. You should tell him what are the next steps he can take. If let’s say, your system expects a file to be there, and the file was not, you should tell the user: “Hey! The file was not there, That’s the reason why the program terminated”.

+

If the exception happened due to a programming error, you should not just gobble up the exception. You should give enough information to the debugging team to debug the problem. Try and make sure that that information is logged, to help the person who is going to debug the problem.

+

Summary

+

In this step, we looked at the fact that both good and bad programmers cause exceptions. But the great programmers are the ones who implement exception handling properly, so that there’s a friendly message to the end user, as well as there is enough information logged for someone to debug the problem.

+

Step 02: Basics Of Exception Hierarchy

+

Let’s look at a variety of exceptions.

+

Let’s do 1/0. What do you think will happen?

+ + +

The result of this is undefined, and that’s why an error is thrown: ZeroDivisionError.

+

Earlier we looked at this one as well: '2' + 2.

+

We are trying to add a string '2', to a number 2. What would happen?

+ +

It says “TypeError: I don’t know how to add 'int' to a 'str'”.

+

Let’s create a simple list of numbers: values = [1, '2'],

+

and we do sum(values), what would happen? Again, the same error: TypeError.

+ +

Let’s try to access a variable, which is not defined. What would happen?

+ +

It says “NameError! The name ‘value’ is not defined yet”.

+

Earlier we created a list called values, so on that, let’s call an attribute which is does not exist.

+ +

If we try to say values.<non-existing> ,what would happen? It throws AttributeError, that says: "list does not have an attribute non_existing’.

+

The same thing happens, If you try to call a non-existing method.

+ +

ZeroDivisionError, TypeError, NameError and AttributeError: all are different kinds of exceptions that are defined in Python.

+

If you want to see the complete list of exceptions, you can import the builtins module, and do help(builtins).

+

You would see at the top are classes, and you’d see later a class called BaseException, from which Exception inherits. And after that is a set of errors. The one which we looked at earlier, is ZeroDivisionError:

+ +

You can see that ZeroDivisionError inherits from ArithmeticError, which inherits from Exception, which inherits from BaseExeption, which inherit from Object.

+

You also have IndentationError:

+ +

In this step, we looked at a high level hierarchy of exceptions. We’ll talk about this a little more in the subsequent step.

+

Step 03: Basics Of Error- Handling - try-except

+

In this step, let’s get started with understanding how to handle exceptions.

+

We know that 1/0 throws an error.

+ +

Output

+
Traceback (most recent call last):
+  File "main.py", line 1, in <module>
+    1/0
+ZeroDivisionError: division by zero
+

You can see that the line which throws the error is also printed.

+

Consider this piece of code. Will j be printed?

+ +

Nope it will not be.

+

When an exception occurs, program execution terminates, then and there. Unless, you handle the exception.

+

Even if we had a hundred lines of code right below it, not one of those would get executed. And that’s why you would want to handle exceptions.

+

We would want to make sure that if an exception happens here, we can give a default value to j.

+

How can you do that? That’s where the try block comes in.

+

try except has a simple syntax. You put the code you want to look out for exceptions in try. You would write the code to handle the exception in except block.

+ +

Output

+
Exception
+0
+

You can see that j is assigned a value 0 and the print method is also called.

+

Summary

+

In this step, we looked at the basics of exception handling. We learned that if an exception is not handled, then the subsequent lines of code are not executed. We used a try block to protect our code and we created an except block to say what should happen, if an exception is thrown.

+

At the end, we saw we were able to handle the exception, and continue with the rest of the code.

+

Step 04: Handling Multiple Errors With Multiple except- Blocks

+

In this we do let’s dig deeper and try to learn more about the try- except block.

+

When we run the code, what would happen?

+ +

It would print

+
Exception
+0
+End
+

What would result, if the exception did not occur? Let’s say i had a value of 1 or 2.

+ +

It would print

+
10.0
+End
+

You can see that 'Exception' is not printed.

+

The code in except block is executed, only when there is an exception. If there is no exception, all except blocks are skipped.

+

Let’s look at code below: We are doing a sum on list with different types of values.

+ +

Output

+
Exception
+0
+End
+

It prints an exception, Exception. But it does not give us a clue as to what went wrong?

+

You might be thinking, “What if I want to handle these two exceptions differently?” You might want to be able to say: “For this one, I want to handle and assign a different value to the name. However, if a divide by zero exception happened, then I would want to do something different.” How do you do that?

+

You can specify what kind of exceptions you would want to handle, is by saying something like except: TypeError.

+

If you only want the handle TypeErrors, and have code specific to that, as in print('Type Error'). What would this do? If a TypeError happens, it prints 'Type Error', assigns a value of 0 to j, and the code continues execution as expected.

+ +

Output

+
TypeError
+0
+End
+

If a divide by zero exception happens, it is not handled, and will get thrown out.

+

The block says OK! I only know how to handle a TypeError. I don’t know how to handle the ZeroDivisionError.

+

How can you handle this?

+

We can define another except block.

+ +

Output

+
ZeroDivisionError
+0
+End
+

In this step, we looked at two basic things.

+

We saw that if no exception happens, then the code in except is not executed.

+

The second thing we learnt, is You can have specific exception blocks, tailored to handle specific exceptions. So if we say except TypeError, then I would only handle TypeError. except ZeroDivisionError would only match ZeroDivisionError.

+

Step 05: Error Handling Puzzles And Exception Details

+

In this step, we will be talking about a number of puzzles related to exception handling.

+

Now let’s start with a very basic example.

+

What will be the output for this? Think about it.

+ +

You run the code, and the output is ZeroDivisionError, and 'End'.

+

Now let’s look at the next one. We want to do 10/0. Also, you know that object is the super-class of all the classes in Python.

+ +

You’ll see that it throws an error: “catching classes that do not inherit from BaseException is not allowed”. Even though object is a valid Python class, you cannot catch it. You can only catch those classes which inherit from BaseException.

+

What will be the output?

+

Code is throwing a divide by zero error, handling Exception.

+ +

Output - Exception

+

Exception will match all its sub classes as well. One of which is ZeroDivisionError.

+

Here’s the hierarchy

+ +

To handle ZeroDivisionError, you can handle ZeroDivisionError or any of its super classes - ArithmeticError, Exception or BaseException

+

Now let’s look at the next puzzle.

+

You can also handle multiple errors in the same except block.

+ +

Output is 'Exception'

+

The last puzzle shows how you can print the exception details. You would want to get the details of the error, and print them out.

+ +

Output

+
unsupported operand type(s) for +: 'int' and 'str'
+End
+

You can see the error details. So, you can handle it better.

+

Summary

+

These were a few interesting puzzles related to exception handling. There are two new things we learned in this step. One is, you can handle multiple exceptions in a single except block. The second thing we learned was you can get the error details as well.

+

Step 06: Error Handling - finally And else

+

We looked at try and except. The other two things which are typically part of a try-except block are else and finally.

+

We keep this example very simple for now. Let’s see what would happen, if we run the code as it is:

+ +

Output

+
Else
+Finally
+10.0
+End
+

Exception is not thrown. So, else and finally are executed. except is not executed.

+

What if an error is thrown?

+

Let’s change i to 0.

+ +

Output

+
division by zero
+Finally
+0
+End
+

Exception is thrown. So, except and finally are executed. else is not executed.

+

Here’s the summary: - except is called when exception is thrown and exception matches. - else is executed only when an exception is not thrown. - finally is always executed

+

Step 07: Error Handling Again

+

In this step, let’s look at a few more things related to exception handling blocks. We have a try block, except block, else block and finally block. What are the allowed combinations? - With a try, you can have multiple except blocks. - You cannot have an else without except blocks. - You can have a try with just finally - If there is an exception, code in finally is executed.

+

Step 08: Raising Exceptions

+

In the previous steps, we looked at how to handle exceptions. But you might be writing code which might throw exceptions as well. So how do you throw exceptions?

+

Let’s get started with creating a simple example, about currencies. Let’s say we have 20 USD, and you would want to be able to add 30 USD to it. What would be the result? 50 USD.

+

We want to develop a simple program, which allows us to add currencies.

+

Think of a scenario where you have to add INR 500 to USD 50.

+

Let’s say the first version of the program we write, we don’t support the exchange feature. When different kinds of currencies are passed, we want to throw an exception.

+

Let’s see how to do that.

+

Let’s create a Currency class with a constructor and repr.

+ +

All simple stuff.

+

Let’s create a couple of instances and try to add them.

+ +

Output

+
Traceback (most recent call last):
+  File "main.py", line 11, in <module>
+    print(value1 + value2)
+TypeError: unsupported operand type(s) for +: 'Currency' and 'Currency'
+

You cannot add two currencies. How can we support adding currencies?

+

We can do operator overloading, so you can give a new meaning for + operator for the Currency class.

+

We will implement the __add__() method.

+ +

If we are doing value1 + value2, self would be value1, and other would be value2. Let’s assume for the time being that the both of them have the same currency.

+

Let’s run this program.

+

Output - ('USD', 50)

+

We are assuming that both currencies have the same type. We need to have a check if the currencies are the same. If not, throw an exception.

+

How do we do that?

+

You can do that in Python, by saying raise, and mention Exception class, by passing in a text message such as 'currencies do not match'.

+ +

Let’s create currencies that have different currencies and add them.

+ +

You can see that "Currencies Do Not Match" is thrown.

+

Output

+ +

Here is the entire code of the program, for your reference:

+ +

Step 09: Creating a Custom Exception class

+

In the previous step, we looked at how to raise an exception. In this step, create a new exceptio type and raise it.

+

Just like the Exception class, we would want to create our own CurrenciesDoNotMatchError.

+

Let’s get started with CurrenciesDoNotMatchError

+ +

Can you raise this?

+

What do you think will happen if we say raise CurrenciesDoNotMatchError("currencies do not match")?

+

Error - “exceptions should drive from BaseException

+

Whenever you create a custom exception, you need to extend BaseException, or a subclass of BaseException. Let us choose to extend Exception.

+

Let’s add a constructor accepting a message.

+ +

You can also pass in the values of self.currency and other.currency, so that it’s clear why the exception happened.

+ +

Here is the entire code for your reference:

+ +

Output

+
Traceback (most recent call last):
+  File "main.py", line 20, in <module>
+    print(value1 + value2)
+  File "main.py", line 14, in __add__
+    raise CurrenciesDoNotMatchError(self.currency + " " + other.currency)
+__main__.CurrenciesDoNotMatchError: USD INR
+

Step 10: Exception Handling Best Practices

+

Let’s review some of the important exception handling best practices, from our experience.

+

So what’s the first best practice?

+

Never hide exceptions. If an exception happens, put the entire stack trace into your logs. In the example which we saw, We understood ‘currencies do not match’. And we also listed what currencies did not match. So that kind of context really helps somebody from outside your team, who’s trying to handle the exception. The moment you start hiding the exceptions, the guy who’s trying to solve it, does not know where to start. He knows something is going wrong, but he does not know which line of code threw the exception.

+

The second thing is - do not use exception handling for flow control. You cannot have exception handling to redirect the way logic flows in a program, like an if-else. Exception handling is very expensive.

+

The most important thing about exception handling, is think about your user. If an exception happens, what does your end user want to see, and what can he do about it? As long as you are thinking about it, then you are doing very well.

+

The other thing is, plan on supporting the guy who’s going to handle the call from your end user. What kind of information does he need to solve the error? The support team might also include the developer, who might want to have a lot of information in the log.

+

Also, think about the calling method. If you’re designing an API, think about what the calling method can do about this exception.

+

Last one is have global exception handling. Make sure that you have something sitting on top of everything which is like the global exception handling, so that no exceptions actually go to the end user. It should always be a proper exception message that end user sees, which should tell him what he can do about it. Remember that na end user will not be able to do anything with the stack trace.

+

We know some of these are not easy to implement, but the most important thing is for you to keep thinking about this.

+

Once you have the attitude of to think about the end user, your support team, and the calling method, that’s all you would need to make sure that you have some exception handling.

+

Chapter 13 - More Python Tips

+

Tip-1: math Module And Decimal Class

+

In this quick step, we look at how you can do mathematical calculations accurately, and also at a few important contents of the math module.

+

float class is not really that accurate. If you do 4.5 - 3.2 , the value that get is something like 1.29999.....999998.

+ +

That’s where the Decimal class steps in.

+ +

decimal module needs to be imported. Make sure that you create Decimal instances using string constructors. value1 - value2 is printed as 1.3 - which is accurate.

+ +

Let’s look more closely at the math module, and other components present within it.

+ +

You can also find out the value of math.pi, which a constant, and math.e.

+ +

If you want to do any mathematical operation, like those involving trigonometry, logarithms, mathematical conversions (degrees to radians, for example), this is your go to module.

+

Tip-02: None

+

In this quick tip, we will be talking about None. What is None? Where do you use it? What are the best practices with it?

+

The way you think about None is very similar to how you think about NULL in SQL. In SQL, if we say something is NULL, it means that it does not have a value. Java programmers would be familiar with that concept as well. When a variable object is null, that means it’s not referring to anything.

+

In Python, None is very similar, except for the fact that None actually is an instance of a class. If you look at type(None), it is NoneType. None is the only instance of this class.

+ +

Let’s look at a simple example using None.

+

Let’s create a simple method, and call it email(). We would put the subject, content, to, cc, bcc as parameters to this method. Let’s say this is the definition of email, and it’s just simply print everything in the body, using a formatted string. We are printing upto {cc} among the parameters.

+ +

Let’s call the method as shown below:

+ +

You can to see that email is missing required positional arguments, which are cc and bcc. But if cc and bcc are not relevant to my particular email, what to do? Is there a way we can assign default values to them? The default should be something that means “nothing is to be used”.

+

The solution is: set cc = None and bcc = None. Also, print the cc and bcc inside the method for display.

+ +

We can now call the method again. This time we see the right result.

+ +

If you want to indicate that you don’t want to have a subject, specify the subject as None.

+ +

Using None is considered to be good programming practice, because you can compare variables against it.

+

Here’s an example:

+ +

Tip-2: statistics Module - Find Mean And Median

+

In this step, let’s try and understand the statistics module within Python.

+

Let’s create a simple list, and play around with a few of the functions which are present in the Statistics class.

+ +

Let’s say we have marks, having entries [1, 6, 9, 23, 2]. Let’s say you want to find the average mark in the list. What is the average called in statistics? It’s called mean.

+ +

There are other statistical functions which are present in here. Let’s say you want to find the median of marks. The median of a list is the entry that is placed in the middle, when you arrange the numbers in sorted order. Over here, the median seems to be 6. If there are even number of numbers (suppose there was a 7 also in marks) median(marks) returns the average of the two values in the center, 6 and 7. The result is 6.5.

+ +

If you want to get the higher of those, you can use median_high(), which will return 7. For the lower one, use median_low(), which gives back 6.

+ +

The other interesting function is variance(), which gives an estimate of how much these values vary.

+ +

Tip-3: collections Module - deque For Queue And Stack

+

In one of the previous tips, we understood the fact that a list can be used both as a queue and a stack. List is not the most efficient representation of a stack.

+

The best data structure to represent them is a deque. It’ a double-ended queue. That means you can remove values from the start, or at the end.

+

You can create a simple queue, by using a deque and passing it a list.

+ +

If you wanted to start using values from the right, do queue.pop(). You could also append a new value, by doing queue.append('Three'). If you look at the queue right now, it would have entries ['Zero', 'One', 'Three'].

+ +

You can even append at the start of the queue. The way you can do it is to call appendleft(). Now if you print the contents of queue, "Minus One" would be the one at the start of the queue.

+ +

The other operation is to popleft(), which returns the first value inside the queue, starting from the left.

+ +

Tip-4: date Module

+

In this quick tip, we look at how to handle dates in Python.

+

Let’s get started with importing the datetime module, which has most of the date and time features.

+

Let’s say we would want to get the value of today’s date.

+

How do you do that? datetime.datetime.today()

+ +

Let’s take this into a variable: today_date = datetime.datetime.today(). The structure is very simple, it’s year, month, day of the month, followed by hour, minute, second, and micro-seconds.

+ +

How do you get information from this structure?

+

To get year - today_date.year.

+

Few more examples:

+ +

How do you create a specific date?

+ +

You can also create a date with time by adding additional time attributes.

+ +

Now we looked at some of the basic things you can do with datetime, we’ll look at a few operations to manipulate the date.

+

We have a date, that is currently 2019, 5, 27.

+ +

We want to add to this, a specific number of days, or weeks, or things like that. How to do that?

+

That’s where a concept called timedelta is used.

+

We have a day variable which contains the value of the date. To this date, you can add a time delta, or remove a time delta.

+ +

An important thing to note, is that the original value of day is not modified.

+ +

You can add weeks and number of hours.

+ +

Tip-5: Methods And Arguments - The Basics

+

Methods in Python are very very powerful. There are a variety of things that you can pass to them. In this specific step, let’s focus on understanding all the different things that you can pass to a method: normal arguments, default argument, variable arguments, and keyword arguments.

+

Let’s create a very very simple method, and call this example_method().

+ +

*args represents variable arguments. **kwargs is called keyword argument. All we do in this method, is print all the values out.

+

Let’s look at how we can call this method. The idea behind what we do, is to understand all these parameters being passed in, how can you call this method with certain order of values, and what get passed to this method, in different ways.

+

What would happen if we just say example_method()?

+ +

It says “it’s missing one required positional argument”. You should definitely pass a value to mandatory_parameter.

+

Let’s say you call this with a value, say 15. What does it do?

+ +

Output

+
    mandatory_parameter = 15 <class 'int'>
+    default_parameter = Default <class 'str'>
+    args = () <class 'tuple'>
+    kwargs = {} <class 'dict'>
+
+

You can also use the named parameter to get the same result.

+ +

Let’s pass two parameters.

+ +

Output

+

+        mandatory_parameter = 25 <class 'int'>
+        default_parameter = Some String <class 'str'>
+        args = () <class 'tuple'>
+        kwargs = {} <class 'dict'>
+

Instead of the default values, default_parameter gets the Some String value.

+

Let’s say you want to pass more values.

+ +

Output

+
  mandatory_parameter = 25 <class 'int'>
+        default_parameter = String 1 <class 'str'>
+        args = ('String 2', 'String 3') <class 'tuple'>
+        kwargs = {} <class 'dict'>
+

Additional arguments are passed as variable arguments into args.

+

What if we have even more arguments?

+ +

Output

+

+        mandatory_parameter = 25 <class 'int'>
+        default_parameter = String 1 <class 'str'>
+        args = ('String 2', 'String 3', 'String 4', 'String 5') <class 'tuple'>
+        kwargs = {} <class 'dict'>
+
+

Same result : All additional arguments are passed as variable arguments into args.

+

Tip-6: Methods And Arguments - Keyword Arguments

+

In this step, let’s focus on the last argument: kwargs or keyword arguments.

+ +

Let’s pass a few key-value pairs to the method.

+ +

Output

+

+        mandatory_parameter = 25 <class 'int'>
+        default_parameter = String 1 <class 'str'>
+        args = ('String 2', 'String 3') <class 'tuple'>
+        kwargs = {'key1': 'a', 'key2': 'b'} <class 'dict'>
+

You can see the key value pairs are now part of keyword arguments - kwargs.

+

Let’s see what would happen if we don’t pass in any of the variable arguments.

+ +

Output

+

+        mandatory_parameter = 25 <class 'int'>
+        default_parameter = String 1 <class 'str'>
+        args = () <class 'tuple'>
+        kwargs = {'key1': 'a', 'key2': 'b'} <class 'dict'>
+

As expected, the variable arguments param args is empty.

+

You can also use named parameters: Result does not change.

+ +

One of the things we would recommend you to do, is now that you have this method, play around with it. Try to understand the different ways of calling it. Make sure that you are trying different combinations, and understand what is happening in the background.

+

I think having a good understanding of what are the possibilities, that you can do with your method signatures, is one of the most important things to be a good Python programmer.

+

Tip-7: Methods And Arguments - Unpacking Lists And Dictionaries

+

Welcome to another very useful tip about how to pass values to a method in Python.

+

Let’s say we have a simple list of values, example_list = [1,2,3]. We want to use the values from this list, as parameters to call a method. How can I do that?

+ +

Output

+
        mandatory_parameter = 1 <class 'int'>
+        default_parameter = 2 <class 'int'>
+        args = (3,) <class 'tuple'>
+        kwargs = {} <class 'dict'>
+

Is there a simpler way? Code below give you same result.

+
example_method(*example_list)
+

This cool concept is called unpacking. When you say *example_list, all the elements in the list are passed as individual arguments.

+

Let’s say you have keyword arguments to pass in, but they are all defined in a dictionary. You can use **example_dict.

+ +

Output

+

+        mandatory_parameter = 1 <class 'int'>
+        default_parameter = 2 <class 'int'>
+        args = (3,) <class 'tuple'>
+        kwargs = {'a': '1', 'b': '2'} <class 'dict'>
+

You can see that values in example_dict are picked by argument kwargs.

+

Summary

+

In this step, we learned that unpacking of data structures is a very useful feature in Python. When you have the parameter values that you would want to pass, in a list or a dictionary, you can use unpacking.

+

Tip-8: Creating Custom Modules

+

In this specific step, we will try and understand the concept of a module.

+

Let’s create a new Python file module_1.

+

A python file can contain methods and classes.

+ +

If you’re coming from an object oriented programming language like Java, where each class is defined in its own source file, you need to change how you think about it. When it comes to Python, a single source file can contain multiple classes.

+

The way you organize a module in Python, would be to have all of the things which are related to it in a single file. So if you have a group of classes which are related, you take them and put them in a single file.

+

Whatever code you have directly outside the boundary of a class or a method would automatically get executed. Here, method1() will be executed. ClassA().class_method_1() will be executed next.

+

You can reuse one module in another. We’re going to create a new file module_2.

+

And over here, you would want to start using the code from module_1.

+

The first thing to do is to import it, by saying import module_1 . Now, you can use all the features available in module_1, by doing things such as module_1.method_one(), or module_1.ClassA() . And on that ClassA() instance, you can call class_method_1().

+ +

When this code is run, you would see that the messages are shown twice. - Once from module_1 import - Once from module_2 execution

+

If you have any code that’s not within a class or a method, then that code is executed automatically.

+

How can we prevent code outside a class or a method from executing when it is imported?

+

You can update module_1 with an if condition

+
if __name__ == '__main__':
+    method_1()
+    ClassA().class_method_1()
+

Tip-9: Defining Equality For Classes

+

In this tip, we will be looking at how to compare objects in Python.

+

Let’s create a simple class, Student, and and let’s say it’s an empty class. Let’s create a couple of instances of it, student1 and student2. Are these two Students equal?

+ +

id(student1) gives you an indication of where it is stored in memory.

+ +

These two are different objects with different values returned by id.

+

You can use is to compare objects. With student1 is student2 , what we’re really comparing is where they are stored. Is it the same location? Is student1 the same object as student2?

+ +

The answer is No.

+

Let’s create a new variable student3 as shown below. You can see that student3 and student1 are referring to the same location. student1 is student3 returns True.

+ +

In Python, you can use == to check equality. The default implementation of == uses 'is'.

+ +

Let’s create the Student class again, but this time with a constructor. We are creating a simple class, which can have in it, a constructor accepting an id. We have also added in an implementation of def __eq__(self, other) comparing the id’s.

+ +

Let’s update the definitions of our students. If you look at these objects, student4 and student1 are referring to the same object, aren’t they!

+ +

All statements except for student1 is student4 return False.

+ +

Are student4 and student1 equal? They are pointing to the same object. They are definitely equal.

+ +

Is student2 == student1? False, because they have different ids.

+ +

Let’s see if student3 == student1 Interesting to note, because we have now provided our own implementation of ==.

+ +

If you are defining a class, and you would want equality for that class to be looking at the content of the class, then we would need to override the __eq__ method. When you compare objects using == , the __eq__ method would be called.

+ + diff --git a/README.md b/README.md index 232e1dbd..d881a603 100644 --- a/README.md +++ b/README.md @@ -2,21 +2,362 @@ **Python 3**, with **VSCode** as the IDE. -## Table of Contents -* [Chapter 01 - Getting Ready with Python](#chapter-01---getting-ready-with-python) -* [Chapter 02 - Introduction To Python Programming](#chapter-02---introduction-to-python-programming) -* [Chapter 03 - Introducing Methods](#chapter-03---introducing-methods) -* [Chapter 04 - Introduction To Python Platform](#chapter-04---introduction-to-python-platform) -* [Chapter 05 - Introduction To VSCode](#chapter-05---introduction-to-VSCode) -* [Chapter 06 - Introducing Data Types and Conditionals](#chapter-06---introducing-data-types-and-conditionals) -* [Chapter 07 - Introducing Loops](#chapter-07---introducing-loops) -* [Chapter 08 - Python Tips](#chapter-08---python-tips) -* [Chapter 09 - Introducing Object Oriented Programming](#chapter-09---introducing-object-oriented-programming) -* [Chapter 10 : Python Data Structures](#chapter-10---python-data-structures) -* [Chapter 11 - Object Oriented Programming Revisited](#chapter-11---object-oriented-programming-revisited) -* [Chapter 12 - Error Handling](#chapter-12---error-handling) -* [Chapter 13 - More Python Tips](#chapter-13---more-python-tips) +[![](https://storage.googleapis.com/replit/images/1539906614890_d3ab3e7d0acf7cc1d56b6c218bd6d344.pn)](https://storage.googleapis.com/replit/images/1539906614890_d3ab3e7d0acf7cc1d56b6c218bd6d344.pn) +[![](https://storage.googleapis.com/replit/images/1539906646554_941ec29791cd36653b2612f8368ab99e.pn)](https://storage.googleapis.com/replit/images/1539906646554_941ec29791cd36653b2612f8368ab99e.pn) +Python is a very popular coding language. Little people use it for serious projects, but it is still useful to learn. It was created in 1991 by `Guido van Rossum`. +Look at a few uses of python: + +* Desktop Applications +* Web Applications +* Complex Scientific Equations + +Let's look at a few reasons why it is useful: + +* Readable/Understandable Code +* Compatible with other systems/platforms +* Millions of useful modules + +These are just a few, you can find a bunch more by researching it. + +What we will be teaching you is specifically `python 3`. This is the most updated version, but the version 2 is still widely used. +Here we will be using replit, but there are multiple text editors you can find. + +* Emacs +* Komodo Edit +* Vim +* Sublime Text +* More at [Python Text Editors](https://realpython.com/python-ides-code-editors-guide/) + +Python syntax was made for readability, and easy editing. For example, the python language uses a `:` and indented code, while javascript and others generally use `{}` and indented code. + +Lets create a [python 3](https://repl.it/languages/python3) repl, and call it _Hello World_. Now you have a blank file called _main.py_. Now let us write our first line of code: + +_helloworld.py_ + + print('Hello world!') + +> Brian Kernighan actually wrote the first "Hello, World!" program as part of the documentation for the BCPL programming language developed by Martin Richards. + +Now, press the run button, which ~obviously~ runs the code. If you are not using replit, this will not work. You should research how to run a file with your text editor. + +If you look to your left at the console where hello world was just printed, you can see a `>`, `>>>`, or `$` depending on what you are using. After the prompt, try typing a line of code. + + Python 3.6.1 (default, Jun 21 2017, 18:48:35) + [GCC 4.9.2] on linux + Type "help", "copyright", "credits" or "license" for more information. + > print('Testing command line') + Testing command line + > print('Are you sure this works?') + Are you sure this works? + > + +The command line allows you to execute single lines of code at a time. It is often used when trying out a new function or method in the language. + +Another cool thing that you can generally do with all languages, are comments. In python, a comment starts with a `#`. The computer ignores all text starting after the `#`. + +_shortcom.py_ + + # Write some comments! + +If you have a huge comment, do **not** comment all the 350 lines, just put `'''` before it, and `'''` at the end. Technically, this is not a comment but a string, but the computer still ignores it, so we will use it. + +_longcom.py_ + + ''' + Dear PYer, + I am confused about how you said you could use triple quotes to make + SUPER + LONG + COMMENTS + ! + + I am wondering if this is true, + and if so, + I am wondering if this is correct. + + Could you help me with this? + + Thanks, + Random guy who used your tutorial. + ''' + print('Testing') + +Unlike many other languages, there is no `var`, `let`, or `const` to declare a variable in python. You simply go `name = 'value'`. + +_vars1.py_ + + x = 5 + y = 7 + z = x*y # 35 + print(z) # => 35 + +Remember, there is a difference between integers and strings. _Remember: String = `""`._ To convert between these two, you can put an int in a `str()` function, and a string in a `int()` function. There is also a less used one, called a float. Mainly, these are integers with decimals. Change them using the `float()` command. + +_vars2.py_ + + x = 5 + x = str(x) + b = '5' + b = int(b) + print('x = ', x, '; b = ', str(b), ';') # => x = 5; b = 5; + +Instead of using the `,` in the print function, you can put a `+` to combine the variables and string. + +There are many operators in python: + +* `+` +* `-` +* `/` +* `*` + These operators are the same in most languages, and allow for addition, subtraction, division, and multiplicaiton. + Now, we can look at a few more complicated ones: +* `%` +* `//` +* `**` +* `+=` +* `-=` +* `/=` +* `*=` + Research these if you want to find out more... + +_simpleops.py_ + + x = 4 + a = x + 1 + a = x - 1 + a = x * 2 + a = x / 2 + +You should already know everything shown above, as it is similar to other languages. If you continue down, you will see more complicated ones. + +_complexop.py_ + + a += 1 + a -= 1 + a *= 2 + a /= 2 + +The ones above are to edit the current value of the variable. +Sorry to JS users, as there is no `i++;` or anything. + +> Fun Fact: +> The python language was named after Monty Python. + +If you really want to know about the others, view [Py Operators](https://www.tutorialspoint.com/python/python_basic_operators.htm) + +Like the title? +Anyways, a `'` and a `"` both indicate a string, but **do not combine them!** + +_quotes.py_ + + x = 'hello' # Good + x = "hello" # Good + x = "hello' # ERRORRR!!! + +_slicing.py_ + +### String Slicing + +You can look at only certain parts of the string by slicing it, using `[num:num]`. +The first number stands for how far in you go from the front, and the second stands for how far in you go from the back. + + x = 'Hello everybody!' + x[1] # 'e' + x[-1] # '!' + x[5] # ' ' + x[1:] # 'ello everybody!' + x[:-1] # 'Hello everybod' + x[2:-3] # 'llo everyb' + +### Methods and Functions + +Here is a list of functions/methods we will go over: + +* `.strip()` +* `len()` +* `.lower()` +* `.upper()` +* `.replace()` +* `.split()` + +I will make you try these out yourself. See if you can figure out how they work. + +_strings.py_ + + x = " Testing, testing, testing, testing " + print(x.strip()) + print(len(x)) + print(x.lower()) + print(x.upper()) + print(x.replace('test', 'runn')) + print(x.split(',')) + +Good luck, see you when you come back! + +Input is a function that gathers input entered from the user in the command line. It takes one optional parameter, which is the users prompt. + +_inp.py_ + + print('Type something: ') + x = input() + print('Here is what you said: ', x) + +If you wanted to make it smaller, and look neater to the user, you could do... + +_inp2.py_ + + print('Here is what you said: ', input('Type something: ')) + +Running: +_inp.py_ + + Type something: + Hello World + Here is what you said: Hello World + +_inp2.py_ + + Type something: Hello World + Here is what you said: Hello World + +Python has created a lot of functions that are located in other .py files. You need to import these **modules** to gain access to the,, You may wonder why python did this. The purpose of separate modules is to make python faster. Instead of storing millions and millions of functions, , it only needs a few basic ones. To import a module, you must write `input `. Do not add the .py extension to the file name. In this example , we will be using a python created module named random. + +_module.py_ + + import random + +Now, I have access to all functions in the random.py file. To access a specific function in the module, you would do `.`. For example: + +_module2.py_ + + import random + print(random.randint(3,5)) # Prints a random number between 3 and 5 + +> Pro Tip: +> Do `from random import randint` to not have to do `random.randint()`, just `randint()` +> To import all functions from a module, you could do `from random import *` + +Loops allow you to repeat code over and over again. This is useful if you want to print Hi with a delay of one second 100 times. + +#### `for` Loop + +The for loop goes through a list of variables, making a seperate variable equal one of the list every time. +Let's say we wanted to create the example above. + +_loop.py_ + + from time import sleep + for i in range(100): + print('Hello') + sleep(.3) + +This will print Hello with a .3 second delay 100 times. This is just one way to use it, but it is usually used like this: + +_loop2.py_ + + import time + for number in range(100): + print(number) + time.sleep(.1) + +[![](https://storage.googleapis.com/replit/images/1539649280875_37d22e6d49e8e8fbc453631def345387.pn)](https://storage.googleapis.com/replit/images/1539649280875_37d22e6d49e8e8fbc453631def345387.pn) + +#### `while` Loop + +The while loop runs the code while something stays true. You would put `while `. Every time the loop runs, it evaluates if the expression is True. It it is, it runs the code, if not it continues outside of the loop. For example: + +_while.py_ + + while True: # Runs forever + print('Hello World!') + +Or you could do: + +_while2.py_ + + import random + position = '' + while position != 1: # will run at least once + position = random.randint(1, 10) + print(position) + +The if statement allows you to check if something is True. If so, it runs the code, if not, it continues on. It is kind of like a while loop, but it executes **only once**. An if statement is written: + +_if.py_ + + import random + num = random.randint(1, 10) + if num == 3: + print('num is 3. Hooray!!!') + if num > 5: + print('Num is greater than 5') + if num == 12: + print('Num is 12, which means that there is a problem with the python language, see if you can figure it out. Extra credit if you can figure it out!') + +Now, you may think that it would be better if you could make it print only one message. Not as many that are True. You can do that with an `elif` statement: + +_elif.py_ + + import random + num = random.randint(1, 10) + if num == 3: + print('Num is three, this is the only msg you will see.') + elif num > 2: + print('Num is not three, but is greater than 1') + +Now, you may wonder how to run code if none work. Well, there is a simple statement called `else:` + +_else.py_ + + import random + num = random.randint(1, 10) + if num == 3: + print('Num is three, this is the only msg you will see.') + elif num > 2: + print('Num is not three, but is greater than 1') + else: + print('No category') + +So far, you have only seen how to use functions other people have made. Let use the example that you want to print the a random number between 1 and 9, and print different text every time. +It is quite tiring to type: + +Characters: 389 + +_nofunc.py_ + + import random + print(random.randint(1, 9)) + print('Wow that was interesting.') + print(random.randint(1, 9)) + print('Look at the number above ^') + print(random.randint(1, 9)) + print('All of these have been interesting numbers.') + print(random.randint(1, 9)) + print("these random.randint's are getting annoying to type") + print(random.randint(1, 9)) + print('Hi') + print(random.randint(1, 9)) + print('j') + +Now with functions, you can seriously lower the amount of characters: + +Characters: 254 + +_functions.py_ + + import random + def r(t): + print(random.randint(1, 9)) + print(t) + r('Wow that was interesting.') + r('Look at the number above ^') + r('All of these have been interesting numbers.') + r("these random.randint's are getting annoying to type") + r('Hi') + r('j') + +[![](https://storage.googleapis.com/replit/images/1539906570970_88961cdd6d7c76c15c92cd79307dbb06.pn)](https://storage.googleapis.com/replit/images/1539906570970_88961cdd6d7c76c15c92cd79307dbb06.pn) ## Chapter 01 - Getting Ready with Python diff --git a/Readings/(Tutorial) Reading and Writing Files in Python.html b/Readings/(Tutorial) Reading and Writing Files in Python.html new file mode 100644 index 00000000..9899489f --- /dev/null +++ b/Readings/(Tutorial) Reading and Writing Files in Python.html @@ -0,0 +1,660 @@ + + + + + + + (Tutorial) Reading and Writing Files in Python + + + +

(Tutorial) Reading and Writing Files in Python

+
+

Learn how to read and write data into flat files, such as CSV, JSON, text files, and binary files in Python using io and os modules.

+
+

+

As a data scientist, you handle a lot of data daily. And this data could be from multiple sources like from databases, from Excel to flat files, from public websites like kaggle. Not just sources it could be in any file format like .csv, .txt, .parquet, etc. Before you start making sense of the data, you will need to know the basic three things: how to open, read and write data into flat files so that you can then perform analyses on them.

+

You would also learn about the following topics in this tutorial:

+
    +
  • Python file object
  • +
  • How to open a basic flat file like .csv, json, etc. and read data from a file
  • +
  • Write data to a file
  • +
  • You’ll also see some Python file object attributes
  • +
  • You would also dig into the Python os module
  • +
  • You would also learn about the NumPy library and how it can be used to import Image datasets
  • +
+

First, let’s understand the difference between flat files and non-flat files.

+

Flat Files vs. Non-Flat Files

+

Flat files are data files that contain records with no structured relationships between the records, and there’s also no structure for indexing like you typically find it in relational databases. These files can contain only basic formatting, have a small fixed number of fields, and can or can not have a file format.

+

+

Source

+

Though in both flat and non-flat files, the data is usually in a tabular row-column fashion.

+

A non-flat file is a file where an index is assigned to every record. The exact location of the record can be known using the index of that record. You would normally need some applications like a database management system to read this type of file.

+

XML is an example of a non-flat file.

+

A flat file can be a plain text file having a TSV, CSV format, or a binary file format. In the former case, the files usually contain one record per line:

+
    +
  • Comma Separated Values (CSV) files, which contain data values that are separated by , for example:

    +
    NAME,ADDRESS,EMAIL
    +ABC,CITY A,abc@xyz.com
    +LMN,CITY B,lmn@xyz.com
    +PQR,CITY C,pqr@xyz.com
  • +
  • Delimited files, which contain data values with a user-specified delimiter. This can be a \t tab or a symbol (#,&,||), for example:

    +
    NAME||ADDRESS||EMAIL
    +ABC||CITY A||abc@xyz.com
    +LMN||CITY B||lmn@xyz.com
    +PQR||CITY C||pqr@xyz.com
    +

    Let’s now understand how Python creates and reads these types of file formats having specific delimiters.

  • +
+

Python File Objects

+

Python has in-built functions to create, read, write, and manipulate accessible files. The io module is the default module for accessing files that can be used off the shelf without even importing it. Before you read, write, or manipulate the file, you need to make use of the module open(filename, access_mode) that returns a file object called “handle”. After which you can simply use this handle to read from or write to a file. Like everything else, files in Python are also treated as an object, which has its own attributes and methods.

+

An IOError exception is raised if, while opening the file, the operation fails. It could be due to various reasons like trying to read a file that is opened in write mode or accessing a file that is already closed.

+

As you already read before, there are two types of flat files, text and binary files:

+
    +
  • As you might have expected from reading the previous section, text files have an End-Of-Line (EOL) character to indicate each line’s termination. In Python, the new line character (\n) is the default EOL terminator.

  • +
  • Since binary files store data after converting it into a binary language (0s and 1s), there is no EOL character. This file type returns bytes. This file is used when dealing with non-text files such as images, .exe, or .pyc.

  • +
+

Let’s now understand the Python file objects in detail, along with necessary examples.

+

Open()

+

The built-in Python function open() has the following arguments: open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) The open() function has almost 8 parameters along with their default values for each argument as shown above.

+

You would be focusing on the first and second parameters for now, which are essential for reading and writing files. And go through other parameters one by one as the tutorial progresses.

+

Let’s understand the first argument, i.e., file.

+

file

+

file is a mandatory argument that you have to provide to the open function while rest all arguments are optional and use their default values.

+

To put it simply, the file argument represents the path where your file resides in your system.

+

If the path is in the current working directory, you can just provide the filename. If not then you have to provide the absolute path of the file, just like in the following examples: my_file_handle=open(“mynewtextfile.txt”) If the file resides in a directory other than the current directory, you have to provide the absolute path with the file name:

+
my_file_handle=open("D://test.txt")
+my_file_handle.read()
+
+
+"Welcome to DataCamp's Tutorial on Reading and Writing Files in Python!"
+

Make sure file name and path given is correct, otherwise you’ll get a FileNotFoundError:

+
my_file_handle=open("folder/test.txt")
+my_file_handle.read()
+
+
+---------------------------------------------------------------------------
+
+FileNotFoundError                         Traceback (most recent call last)
+
+<ipython-input-2-a0d1ea891918> in <module>
+----> 1 my_file_handle=open("folder/test.txt")
+      2 my_file_handle.read()
+
+
+FileNotFoundError: [Errno 2] No such file or directory: 'folder/test.txt'
+

Exception Handling in files

+

You can catch the exception with a try-finally block:

+
try:
+    my_file_handle=open("folder/test.txt")
+except IOError:
+    print("File not found or path is incorrect")
+finally:
+    print("exit")
+
+
+File not found or path is incorrect
+exit
+

Let’s understand the second argument of the open function, i.e., access modes.

+

Access Modes

+

Access modes define in which way you want to open a file, whether you want to open a file in:

+
    +
  • read-only mode
  • +
  • write-only mode
  • +
  • append mode
  • +
  • both read and write mode
  • +
+

Though a lot of access modes exist as shown in the below table, the most commonly used ones are read and write modes. It specifies where you want to start reading or writing in the file.

+

You use 'r', the default mode, to read the file. In other cases where you want to write or append, you use 'w' or 'a', respectively.

+

There are, of course, more access modes! Take a look at the following table:

+

+

As you have seen in the first section, there are two types of flat files. This is also why there’s an option to specify which format you want to open, such as text or binary. Of course, the former is the default. When you add 'b' to the access modes, you can read the file in binary format rather than the default text format. It is used when the file to be accessed is not in text format.

+

Reading from a file

+

Let’s try out all the reading methods for reading from a file, and you will also explore the access modes along with it! There are three ways to read from a file.

+
    +
  • read([n])
  • +
  • readline([n])
  • +
  • readlines()
  • +
+

Here n is the number of bytes to be read. If nothing is passed to n, then the complete file is considered to be read.

+

Create a file as below: 1st line 2nd line 3rd line 4th line 5th line Let’s understand what each read method does:

+
my_file=open("test1.txt","r")
+print(my_file.read())
+
+
+1st line
+2nd line
+3rd line
+4th line
+5th line
+

The read() method just outputs the entire file if the number of bytes (n) is not given in the argument. If you execute my_file.read(3), you will get back the first three characters of the file, as shown below:

+
my_file=open("test1.txt","r")
+print(my_file.read(3))
+
+
+1st
+

readline(n) outputs at most n bytes of a single line of a file. It does not read more than one line.

+
my_file.close()
+my_file=open("test1.txt","r")
+
+print(my_file.readline())
+
+print(my_file.readline(2))
+
+
+1st line
+
+2n
+

Closing Python Files with close()

+

Use the close() method with file handle to close the file. When you use this method, you clear all buffer and close the file.

+
my_file.close()
+

You can use a for loop to read the file line by line:

+
my_file=open("test1.txt","r")
+
+for line in my_file:
+    print(line)
+my_file.close()
+
+
+1st line
+
+2nd line
+
+3rd line
+
+4th line
+
+5th line
+

The readlines() method maintains a list of each line in the file which can be iterated using a for loop:

+
my_file=open("test1.txt","r")
+my_file.readlines()
+
+
+['1st line\n', '2nd line\n', '3rd line\n', '4th line\n', '5th line']
+

Writing to a file

+

You can use three methods to write to a file in Python:

+
    +
  • write(string) (for text) or write(byte_string) (for binary)
  • +
  • writelines(list)
  • +
+

Let’s create a new file. The following will create a new file in the specified folder because it does not exist. Remember to give correct path with correct filename; otherwise, you will get an error:

+

Create a notepad file and write some text in it. Make sure to save the file as .txt and save it to the working directory of Python.

+
new_file=open("newfile.txt",mode="w",encoding="utf-8")
+
+
+new_file.write("Writing to a new file\n")
+new_file.write("Writing to a new file\n")
+new_file.write("Writing to a new file\n")
+new_file.close()
+

Append Mode

+

Now let’s write a list to this file with a+ mode:

+
fruits=["Orange\n","Banana\n","Apple\n"]
+new_file=open("newfile.txt",mode="a+",encoding="utf-8")
+new_file.writelines(fruits)
+for line in new_file:
+    print(line)
+new_file.close()
+

Seek Method

+

Note that reading from a file does not print anything because the file cursor is at the end of the file. To set the cursor at the beginning, you can use the seek() method of file object:

+
cars=["Audi\n","Bentley\n","Toyota\n"]
+new_file=open("newfile.txt",mode="a+",encoding="utf-8")
+for car in cars:
+    new_file.write(car)
+print("Tell the byte at which the file cursor is:",new_file.tell())
+new_file.seek(0)
+for line in new_file:
+    print(line)
+
+
+Tell the byte at which the file cursor is: 115
+Writing to a new file
+
+Writing to a new file
+
+Writing to a new file
+
+Orange
+
+Banana
+
+Apple
+
+Audi
+
+Bentley
+
+Toyota
+

The tell() method of a file object tells at which byte the file cursor is located. In seek(offset,reference_point), the reference points are 0 (the beginning of the file and is the default), 1 (the current position of file), and 2 (the end of the file).

+

Let’s try out passing another reference point and offset and see the output:

+
new_file.seek(4,0)
+print(new_file.readline())
+new_file.close()
+
+
+ing to a new file
+

next Method

+

You are only left with the next() method, so let’s complete this section of the tutorial! Here you are using the same file created above with the name test1.txt.

+

End-relative seeks such as seek(-2,2) are not allowed if file mode does not include 'b', which indicates binary format. Only forward operations such as seek(0,2) are allowed when the file object is dealt with as a text file.

+
file=open("test1.txt","r")
+for index in range(5):
+    line=next(file)
+    print(line)
+file.close()
+
+
+1st line
+
+2nd line
+
+3rd line
+
+4th line
+
+5th line
+

Note: write() method doesn’t write data to a file, but to a buffer, it does, but only when the close() method is called. This latter method flushes the buffer and writes the content to the file. If you wish not to close the file using fileObject.flush() method to clear the buffer and write back to file.

+

Importing the Moby Dick Novel

+

Moby Dick is an 1851 novel by American writer Herman Melville. You’ll be working with the file moby_dick.txt. It is a text file that contains the opening sentences of Moby Dick, one of the great American novels! Here you’ll get experience opening a text file, printing its contents, and, finally, closing it.

+

You can download the moby dick text file from here.

+

You will do the following things:

+
    +
  • Open the moby_dick.txt file in read-only mode and store it in the variable file

  • +
  • Print the contents of the file

  • +
  • Check whether the file is closed

  • +
  • Close the file using the close() method

  • +
  • Check again whether the file is closed

    +

    file = open(‘moby_dick.txt’, ‘r’)

    +

    print(file.read()) print(‘’)

    +

    print(‘Is the file closed?:’, file.closed)

    +

    file.close() print(‘’)

    +

    print(‘Is the file closed?:’, file.closed)

    +

    CHAPTER 1. Loomings.

    +

    Call me Ishmael. Some years ago–never mind how long precisely–having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen and regulating the circulation. Whenever I find myself growing grim about the mouth; whenever it is a damp, drizzly November in my soul; whenever I find myself involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral I meet; and especially whenever my hypos get such an upper hand of me, that it requires a strong moral principle to prevent me from deliberately stepping into the street, and methodically knocking people’s hats off–then, I account it high time to get to sea as soon as I can. This is my substitute for pistol and ball. With a philosophical flourish Cato throws himself upon his sword; I quietly take to the ship. There is nothing surprising in this. If they but knew it, almost all men in their degree, some time or other, cherish very nearly the same feelings towards the ocean with me.

    +

    Is the file closed?: False

    +

    Is the file closed?: True

  • +
+

Reading the Moby Dick Novel using Context Manager

+

You can bind a file object by using a context manager construct, and you don’t need to worry about closing the file. The file can not be accessed outside the context manager and is deemed closed.

+

Let’s print the first three lines of the moby dick text file using the readline() method. Note that the file is opened by default in a read mode.

+
with open('moby_dick.txt') as file:
+    print(file.readline())
+    print(file.readline())
+    print(file.readline())
+
+
+CHAPTER 1. Loomings.
+
+
+
+Call me Ishmael. Some years ago--never mind how long precisely--having
+

Writing to a JSON File

+

You can also write your data to .json files.

+

Remember: Javascript Object Notation (JSON) has become a popular method for the exchange of structured information over a network and sharing information across platforms. It is basically text with some structure and saving it as .json tells how to read the structure; otherwise, it is just a plain text file. It stores data as key: value pairs. The structure can be simple to complex.

+

Take a look at the following simple JSON for countries and their capitals:

+
{
+"Algeria":"Algiers",
+"Andorra":"Andorra la Vella",
+"Nepal":"Kathmandu",
+"Netherlands":"Amsterdam",
+}
+

Since JSON consists of an array of key: value pairs as shown in below code cell, anything before : is called key and after : is called value. This is very similar to Python dictionaries, isn’t it! You can see that the data is separated by , and that curly braces define objects. Square brackets are used to define arrays in more complex JSON files, as you can see in the following excerpt:

+
{
+  "colors": [
+    {
+      "color": "black",
+      "category": "hue",
+      "type": "primary",
+      "code": {
+        "rgba": [255,255,255,1],
+        "hex": "#000"
+      }
+    },
+    {
+      "color": "white",
+      "category": "value",
+      "code": {
+        "rgba": [0,0,0,1],
+        "hex": "#FFF"
+      }
+    },
+    {
+      "color": "red",
+      "category": "hue",
+      "type": "primary",
+      "code": {
+        "rgba": [255,0,0,1],
+        "hex": "#FF0"
+      }
+    },
+    {
+      "color": "blue",
+      "category": "hue",
+      "type": "primary",
+      "code": {
+        "rgba": [0,0,255,1],
+        "hex": "#00F"
+      }
+    },
+    {
+      "color": "yellow",
+      "category": "hue",
+      "type": "primary",
+      "code": {
+        "rgba": [255,255,0,1],
+        "hex": "#FF0"
+      }
+    },
+    {
+      "color": "green",
+      "category": "hue",
+      "type": "secondary",
+      "code": {
+        "rgba": [0,255,0,1],
+        "hex": "#0F0"
+      }
+    },
+  ]
+}
+

Note that JSON files can hold different data types in one object as well!

+

When you read the file with read(), you read strings from a file. That means that when you read numbers, you would need to convert them to integers with data type conversion functions like int(). For more complex use cases, you can always use the JSON module.

+

If you have an object x, you can view its JSON string representation with a simple line of code:

+
import json
+my_data=["Reading and writing files in python",78546]
+json.dumps(my_data)
+
+
+'["Reading and writing files in python", 78546]'
+

To write the JSON in a file, you can use the .dump() method:

+
with open("jsonfile.json","w") as f:
+    json.dump(my_data,f)
+f.close()
+

Note: It is good practice to use the with-open method to open a file because it closes the file properly if any exception is raised on the way.

+

Let’s now open the JSON file you created using the dump method. If a JSON file is opened for reading, you can decode it with load(file) as follows:

+
with open("jsonfile.json","r") as f:
+    jsondata=json.load(f)
+    print(jsondata)
+f.close()
+
+
+['Reading and writing files in python', 78546]
+

Similarly, more complex dictionaries can be stored using the JSON module. You can find more information here.

+

Now, you will see some other parameters of the open() method, which you have already seen in the previous sections. Let’s start with buffering.

+

Buffering

+

A buffer holds a chunk of data from the operating system’s file stream until it is used upon which more data comes in, which is similar to video buffering.

+

Buffering is useful when you don’t know the size of the file you are working with if the file size is greater than computer memory then the processing unit will not function properly. The buffer size tells how much data can be held at a time until it is used. io.DEFAULT_BUFFER_SIZE can tell the default buffer size of your platform.

+

Optionally, you can pass an integer to buffering to set the buffering policy:

+
    +
  • 0 to switch off buffering (only allowed in binary mode)
  • +
  • 1 to select line buffering (only usable in text mode)
  • +
  • Any integer that is bigger than 1 to indicate the size in bytes of a fixed-size chunk buffer
  • +
  • Use negative values to set the buffering policy to the system default
  • +
+

When you don’t specify any policy, the default is:

+
    +
  • Binary files are buffered in fixed-size chunks
  • +
  • The size of the buffer is chosen depending on the underlying device’s “block size”. On many systems, the buffer will typically be 4096 or 8192 bytes long.
  • +
  • “Interactive” text files (files for which isatty() returns True) use line buffering. Other text files use the policy described above for binary files. Note that isatty() can be used to see if you’re connected to a Tele-TYpewriter(-like) device.

    +

    import io print(“Default buffer size:”,io.DEFAULT_BUFFER_SIZE) file=open(“test1.txt”,mode=“r”,buffering=5) print(file.line_buffering) file_contents=file.buffer for line in file_contents: print(line)

    +

    Default buffer size: 8192 False b’1st line’ b’2nd line’ b’3rd line’ b’4th line’ b’5th line’

  • +
+

Note that if you are using all arguments in the order that is specified in open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None), you don’t need to write argument name! If you skip arguments because you want to keep the default values, it’s better to write everything out in full.

+

Errors

+

An optional string that specifies how encoding and decoding errors are to be handled. This argument cannot be used in binary mode. A variety of standard error handlers are available (listed under Error Handlers).

+
file=open("test1.txt",mode="r",errors="strict")
+print(file.read())
+file.close()
+
+
+1st line
+2nd line
+3rd line
+4th line
+5th line
+

errors="strict" raises ValueErrorException if there is encoding error.

+

Newline

+

newline controls how universal newlines mode works (it only applies to text mode). It can be None, ’‘,’\n’, ‘\r’, and ‘\r\n’. In the example above, you see that passing None to newline translates '\r\n' to '\n'.

+
    +
  • None:universal newlines mode is enabled. Lines in the input can end in ‘\n’, ‘\r’, or ‘\r\n’, and these are translated into default line separator

  • +
  • " ":universal newlines mode is enabled, but line endings are returned not translated

  • +
  • ‘\n’,‘\r’, ‘\r\n’:Input lines are only terminated by the given string, and the line ending is not translated.

  • +
+

Note that universal newlines are a manner of interpreting text streams in which all of the following are recognized as ending a line: the Unix end-of-line convention ‘\n’, the Windows convention ‘\r\n’, and the old Macintosh convention ‘\r’.

+

Note also that os.linesep returns the system’s default line separator:

+
file=open("test1.txt",mode="r",newline="")
+file.read()
+
+
+'1st line\r\n2nd line\r\n3rd line\r\n4th line\r\n5th line'
+
+
+file=open("test1.txt",mode="r",newline=None)
+file.read()
+
+
+'1st line\n2nd line\n3rd line\n4th line\n5th line'
+
+
+file.close()
+

Encoding

+

Encoding represents the character encoding, which is the coding system that uses bits and byte to represent a character. This concept frequently pops up when you’re talking about data storage, data transmission, and computation.

+

As default encoding is operating system dependent for Microsoft Windows, it is cp1252 but UTF-8 in Linux. So when dealing with text files, it is a good practice to specify the character encoding. Note that the binary mode doesn’t take an encoding argument.

+

Earlier, you read that you can use the errors parameter to handle encoding and decoding error and that you use newline to deal with line endings. Now, try out the following code for these:

+
with open("test1.txt",mode="r") as file:
+    print("Default encoding:",file.encoding)
+    file.close()
+
+with open("test1.txt",mode="r",encoding="utf-8") as file:
+    print("New encoding:",file.encoding)
+    file.close()
+
+
+Default encoding: cp1252
+New encoding: utf-8
+

closefd

+

If closefd is False and a file descriptor, rather than a filename was given, the underlying file descriptor will be kept open when the file is closed. If a filename is given, closefd has to be set to True, which is the default. Otherwise, you’ll probably get an error. You use this argument to wrap an existing file descriptor into a real file object.

+

Note that a file descriptor is simply an integer assigned to a file object by the operating system so that Python can request I/O operations. The method .fileno() returns this integer.

+

If you have an integer file descriptor already open for an I/O channel you can wrap a file object around it as below:

+
file=open("test1.txt","r+")
+fd=file.fileno()
+print("File descriptor assigned:",fd)
+
+
+filedes_object=open(fd,"w")
+filedes_object.write("Data sciences\r\nPython")
+filedes_object.close()
+
+
+File descriptor assigned: 6
+

To prevent closing the underlying file object, you can use closefd=False:

+
file=open("test1.txt","r+")
+fd=file.fileno()
+print("File descriptor assigned:",fd)
+
+
+filedes_object=open(fd,"w",closefd=False)
+filedes_object.write("Hello")
+filedes_object.close()
+file.close()
+
+
+File descriptor assigned: 6
+

You have learned a lot about reading text files in Python, but as you have read repeatedly throughout this tutorial, these are not the only files that you can import: there are also binary files.

+

But what are these binary files exactly?

+

Binary files store data in 0's and 1's that are machine-readable. A byte is a collection of 8-bits. One character stores one byte in the memory that is 8-bits. For example, the binary representation of character ‘H’ is 01001000 and convert this 8-bit binary string into decimal gives you 72.

+
binary_file=open("binary_file.bin",mode="wb+")
+text="Hello 123"
+encoded=text.encode("utf-8")
+binary_file.write(encoded)
+binary_file.seek(0)
+binary_data=binary_file.read()
+print("binary:",binary_data)
+text=binary_data.decode("utf-8")
+print("Decoded data:",text)
+
+
+binary: b'Hello 123'
+Decoded data: Hello 123
+

When you open a file for reading in binary mode b, it returns bytes of data.

+

If you ever need to read or write text from a binary-mode file, make sure you remember to decode or encode it like above. You can access each byte through iteration like below, and it will return integer byte values (decimal of the 8-bit binary representation of each character) instead of byte strings:

+
for byte in binary_data:
+    print(byte)
+
+
+72
+101
+108
+108
+111
+32
+49
+50
+51
+

Python File Object Attributes

+

File attributes give information about the file and file state.

+

+
with open("test1.txt") as file:
+    print("Name of the file:",file.name)
+    print("Mode of the file:",file.mode)
+    print("Mode of the file:",file.encoding)
+    file.close()
+print("Closed?",file.closed)
+
+
+Name of the file: test1.txt
+Mode of the file: r
+Mode of the file: cp1252
+Closed? True
+

Other Methods of File object

+

+

Let’s try out all of these methods:

+
with open("mynewtextfile.txt","w+") as f:
+    f.write("We are learning python\nWe are learning python\nWe are learning python")
+    f.seek(0)
+    print(f.read())
+    print("Is readable:",f.readable())
+    print("Is writeable:",f.writable())
+    print("File no:",f.fileno())
+    print("Is connected to tty-like device:",f.isatty())
+    f.truncate(5)
+    f.flush()
+    f.seek(0)
+    print(f.read())
+f.close()
+
+
+We are learning python
+We are learning python
+We are learning python
+Is readable: True
+Is writeable: True
+File no: 8
+Is connected to tty-like device: False
+We ar
+

Handling files through the os module

+

The os module of Python allows you to perform Operating System dependent operations such as making a folder, listing contents of a folder, know about a process, end a process, etc. It has methods to view environment variables of the Operating System on which Python is working on and many more. Here is the Python documentation for the os module.

+

Let’s see some useful os module methods that can help you to handle files and folders in your program.

+

+

Let’s see some examples of these methods:

+
import os
+os.getcwd()
+
+
+'C:\\Users\\hda3kor\\Documents\\Reading_and_Writing_Files'
+
+
+os.makedirs("my_folder")
+
+
+---------------------------------------------------------------------------
+
+FileExistsError                           Traceback (most recent call last)
+
+<ipython-input-12-f469e8a88f1b> in <module>
+----> 1 os.makedirs("my_folder")
+
+
+C:\Program Files\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
+    219             return
+    220     try:
+--> 221         mkdir(name, mode)
+    222     except OSError:
+    223         # Cannot rely on checking for EEXIST, since the operating system
+
+
+FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'my_folder'
+

The next code chunk will create a folder named my_folder:

+
open("my_folder\\newfile.txt","w")
+print("Contents of folder my_folder\n",os.listdir("my_folder"))
+print("---------------------------------")
+print("Size of folder my_folder (in bytes)",os.path.getsize("my_folder"))
+print("Is file?",os.path.isfile("test1.txt"))
+print("Is folder?",os.path.isdir("my_folder"))
+os.chdir("my_folder")
+os.rename("newfile.txt","hello.txt")
+print("New Contents of folder my_folder\n",os.listdir("my_folder"))
+
+
+Contents of folder my_folder
+ ['hello.txt', 'newfile.txt']
+---------------------------------
+Size of folder my_folder (in bytes) 0
+Is file? True
+Is folder? True
+
+
+
+---------------------------------------------------------------------------
+
+FileExistsError                           Traceback (most recent call last)
+
+<ipython-input-13-6d2da66512fd> in <module>
+      6 print("Is folder?",os.path.isdir("my_folder"))
+      7 os.chdir("my_folder")
+----> 8 os.rename("newfile.txt","hello.txt")
+      9 print("New Contents of folder my_folder\n",os.listdir("my_folder"))
+
+
+FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'newfile.txt' -> 'hello.txt'
+

If you create a filename that already exists Python will give FileExistsError error. To delete a file use, you can use os.remove(filename):

+
os.getcwd()
+os.remove("hello.txt")
+

Importing flat files using NumPy

+

+

Numerical Python, or more commonly known as NumPy arrays, is the Python standard for storing numerical data. They are efficient, fast, and clean. They are widely used in linear algebra, statistics, machine learning, and deep learning. NumPy arrays act as a backbone for reading image datasets.

+

It is also useful for packages like Pandas and Scikit-learn. NumPy consists of a lot of built-in functions which can be leveraged to do data analysis, manipulation: efficiently and in an easier fashion.

+

MNIST data

+

The sample MNIST .csv dataset can be downloaded from here.

+

You can find more information about the MNIST dataset from here on the webpage of Yann LeCun.

+

You will first import the NumPy module and then use the loadtxt method to import the MNIST data, as shown below:

+
import numpy as np
+data = np.loadtxt('mnist.csv', delimiter=',')
+print(data)
+
+
+[[1. 0. 0. ... 0. 0. 0.]
+ [0. 0. 0. ... 0. 0. 0.]
+ [1. 0. 0. ... 0. 0. 0.]
+ ...
+ [2. 0. 0. ... 0. 0. 0.]
+ [0. 0. 0. ... 0. 0. 0.]
+ [5. 0. 0. ... 0. 0. 0.]]
+

If your dataset has a header with string values, you can use the skiprows parameter and skip the first row. Similarly, you can use the usecols parameter to read only some specific columns.

+

You can also pass in the dtype, i.e., datatype in which you want to import your data either integer, float, string, etc.

+

Note that NumPy arrays are capable of handling only one type of datatype, meaning it cannot have mixed data types in a single array.

+

Let’s check the number of rows and columns this dataset has:

+
data.shape
+
+
+(100, 785)
+

If you would like to learn more great ways to handle data in Python then check out this tutorial.

+

Conclusion

+

Congratulations on finishing the tutorial.

+

Now you know how to handle files in Python and their manipulation from creation to operating system level handling.

+

You might want to try experimenting with various NumPy functionalities that could be leveraged to understand numerical and imagery datasets. You could further analyze the dataset graphically using the Matplotlib plotting library.

+

If you want to learn more about importing files in Python, check out DataCamp’s Importing Data in Python course.

+

Source

+ + diff --git a/Readings/(Tutorial) Reading and Writing Files in Python.md b/Readings/(Tutorial) Reading and Writing Files in Python.md new file mode 100644 index 00000000..3da9b727 --- /dev/null +++ b/Readings/(Tutorial) Reading and Writing Files in Python.md @@ -0,0 +1,898 @@ +# (Tutorial) Reading and Writing Files in Python + +> Learn how to read and write data into flat files, such as CSV, JSON, text files, and binary files in Python using io and os modules. + +[![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1583330891/python_3_qgciu1.png)](https://www.datacamp.com/learn/python/) + +As a data scientist, you handle a lot of data daily. And this data could be from multiple sources like from databases, from Excel to flat files, from public websites like kaggle. Not just sources it could be in any file format like `.csv`, `.txt`, `.parquet`, etc. Before you start making sense of the data, you will need to know the basic three things: how to open, read and write data into flat files so that you can then perform analyses on them. + +You would also learn about the following topics in this tutorial: + +* Python file object +* How to `open` a basic flat file like `.csv`, `json`, etc. and `read` data from a file +* Write data to a file +* You'll also see some Python file object attributes +* You would also dig into the Python os module +* You would also learn about the `NumPy` library and how it can be used to import `Image` datasets + +First, let's understand the difference between flat files and non-flat files. + +Flat Files vs. Non-Flat Files +----------------------------- + +Flat files are data files that contain records with no structured relationships between the records, and there's also no structure for indexing like you typically find it in relational databases. These files can contain only basic formatting, have a small fixed number of fields, and can or can not have a file format. + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read6_ovzuw3.png) + +[Source](https://upload.wikimedia.org/wikipedia/commons/d/dd/Flat_File_Model.svg) + +Though in both flat and non-flat files, the data is usually in a tabular row-column fashion. + +A non-flat file is a file where an index is assigned to every record. The exact location of the record can be known using the index of that record. You would normally need some applications like a database management system to read this type of file. + +`XML` is an example of a `non-flat` file. + +A flat file can be a plain text file having a `TSV`, `CSV` format, or a binary file format. In the former case, the files usually contain one record per line: + +* Comma Separated Values (CSV) files, which contain data values that are separated by `,` for example: + + NAME,ADDRESS,EMAIL + ABC,CITY A,abc@xyz.com + LMN,CITY B,lmn@xyz.com + PQR,CITY C,pqr@xyz.com + + +* Delimited files, which contain data values with a user-specified delimiter. This can be a `\t` tab or a symbol (`#`,`&`,`||`), for example: + + NAME||ADDRESS||EMAIL + ABC||CITY A||abc@xyz.com + LMN||CITY B||lmn@xyz.com + PQR||CITY C||pqr@xyz.com + + + Let's now understand how Python creates and reads these types of file formats having specific delimiters. + +Python File Objects +------------------- + +Python has in-built functions to create, read, write, and manipulate accessible files. The `io` module is the default module for accessing files that can be used off the shelf without even importing it. Before you read, write, or manipulate the file, you need to make use of the module `open(filename, access_mode)` that returns a file object called "handle". After which you can simply use this handle to read from or write to a file. Like everything else, files in Python are also treated as an object, which has its own attributes and methods. + +An IOError exception is raised if, while opening the file, the operation fails. It could be due to various reasons like trying to read a file that is opened in write mode or accessing a file that is already closed. + +As you already read before, there are two types of flat files, text and binary files: + +* As you might have expected from reading the previous section, text files have an End-Of-Line (EOL) character to indicate each line's termination. In Python, the new line character (`\n`) is the default EOL terminator. + +* Since binary files store data after converting it into a binary language (0s and 1s), there is no EOL character. This file type returns bytes. This file is used when dealing with non-text files such as images, `.exe`, or `.pyc`. + + +Let's now understand the Python file objects in detail, along with necessary examples. + +### Open() + +The built-in Python function `open()` has the following arguments: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) The `open()` function has almost 8 parameters along with their default values for each argument as shown above. + +You would be focusing on the first and second parameters for now, which are essential for reading and writing files. And go through other parameters one by one as the tutorial progresses. + +Let's understand the first argument, i.e., `file`. + +### file + +`file` is a mandatory argument that you have to provide to the `open` function while rest all arguments are optional and use their default values. + +To put it simply, the `file` argument represents the path where your file resides in your system. + +If the path is in the current working directory, you can just provide the filename. If not then you have to provide the absolute path of the file, just like in the following examples: my\_file\_handle=open("mynewtextfile.txt") If the file resides in a directory other than the current directory, you have to provide the absolute path with the file name: + + my_file_handle=open("D://test.txt") + my_file_handle.read() + + + "Welcome to DataCamp's Tutorial on Reading and Writing Files in Python!" + + +Make sure file name and path given is correct, otherwise you'll get a `FileNotFoundError`: + + my_file_handle=open("folder/test.txt") + my_file_handle.read() + + + --------------------------------------------------------------------------- + + FileNotFoundError Traceback (most recent call last) + + in + ----> 1 my_file_handle=open("folder/test.txt") + 2 my_file_handle.read() + + + FileNotFoundError: [Errno 2] No such file or directory: 'folder/test.txt' + + +#### Exception Handling in files + +You can catch the exception with a try-finally block: + + try: + my_file_handle=open("folder/test.txt") + except IOError: + print("File not found or path is incorrect") + finally: + print("exit") + + + File not found or path is incorrect + exit + + +Let's understand the second argument of the `open` function, i.e., `access modes`. + +### Access Modes + +Access modes define in which way you want to open a file, whether you want to open a file in: + +* read-only mode +* write-only mode +* append mode +* both read and write mode + +Though a lot of access modes exist as shown in the below table, the most commonly used ones are read and write modes. It specifies where you want to start reading or writing in the file. + +You use `'r'`, the default mode, to read the file. In other cases where you want to write or append, you use `'w'` or `'a'`, respectively. + +There are, of course, more access modes! Take a look at the following table: + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read2_tdryms.png) + +As you have seen in the first section, there are two types of flat files. This is also why there's an option to specify which format you want to open, such as text or binary. Of course, the former is the default. When you add `'b'` to the access modes, you can read the file in binary format rather than the default text format. It is used when the file to be accessed is not in text format. + +#### Reading from a file + +Let's try out all the reading methods for reading from a file, and you will also explore the access modes along with it! There are three ways to read from a file. + +* `read([n])` +* `readline([n])` +* `readlines()` + +Here `n` is the number of bytes to be read. If nothing is passed to `n`, then the complete file is considered to be read. + +Create a file as below: 1st line 2nd line 3rd line 4th line 5th line Let's understand what each read method does: + + my_file=open("test1.txt","r") + print(my_file.read()) + + + 1st line + 2nd line + 3rd line + 4th line + 5th line + + +The `read()` method just outputs the entire file if the number of bytes (`n`) is not given in the argument. If you execute `my_file.read(3)`, you will get back the first three characters of the file, as shown below: + + my_file=open("test1.txt","r") + print(my_file.read(3)) + + + 1st + + +`readline(n)` outputs at most `n` bytes of a single line of a file. It does not read more than one line. + + my_file.close() + my_file=open("test1.txt","r") + + print(my_file.readline()) + + print(my_file.readline(2)) + + + 1st line + + 2n + + +### Closing Python Files with close() + +Use the `close()` method with file handle to close the file. When you use this method, you clear all buffer and close the file. + + my_file.close() + + +You can use a `for` loop to read the file line by line: + + my_file=open("test1.txt","r") + + for line in my_file: + print(line) + my_file.close() + + + 1st line + + 2nd line + + 3rd line + + 4th line + + 5th line + + +The `readlines()` method maintains a list of each line in the file which can be iterated using a for loop: + + my_file=open("test1.txt","r") + my_file.readlines() + + + ['1st line\n', '2nd line\n', '3rd line\n', '4th line\n', '5th line'] + + +### Writing to a file + +You can use three methods to write to a file in Python: + +* `write(string)` (for text) or `write(byte_string)` (for binary) +* `writelines(list)` + +Let's create a new file. The following will create a new file in the specified folder because it does not exist. `Remember` to give correct path with correct filename; otherwise, you will get an error: + +Create a notepad file and write some text in it. Make sure to save the file as `.txt` and save it to the working directory of Python. + + new_file=open("newfile.txt",mode="w",encoding="utf-8") + + + new_file.write("Writing to a new file\n") + new_file.write("Writing to a new file\n") + new_file.write("Writing to a new file\n") + new_file.close() + + +#### Append Mode + +Now let's write a list to this file with `a+` mode: + + fruits=["Orange\n","Banana\n","Apple\n"] + new_file=open("newfile.txt",mode="a+",encoding="utf-8") + new_file.writelines(fruits) + for line in new_file: + print(line) + new_file.close() + + +#### Seek Method + +Note that reading from a file does not print anything because the file cursor is at the end of the file. To set the cursor at the beginning, you can use the `seek()` method of file object: + + cars=["Audi\n","Bentley\n","Toyota\n"] + new_file=open("newfile.txt",mode="a+",encoding="utf-8") + for car in cars: + new_file.write(car) + print("Tell the byte at which the file cursor is:",new_file.tell()) + new_file.seek(0) + for line in new_file: + print(line) + + + Tell the byte at which the file cursor is: 115 + Writing to a new file + + Writing to a new file + + Writing to a new file + + Orange + + Banana + + Apple + + Audi + + Bentley + + Toyota + + +The `tell()` method of a file object tells at which byte the file cursor is located. In `seek(offset,reference_point)`, the reference points are `0` (the beginning of the file and is the default), `1` (the current position of file), and `2` (the end of the file). + +Let's try out passing another reference point and offset and see the output: + + new_file.seek(4,0) + print(new_file.readline()) + new_file.close() + + + ing to a new file + + +#### next Method + +You are only left with the `next()` method, so let's complete this section of the tutorial! Here you are using the same file created above with the name `test1.txt`. + +End-relative seeks such as `seek(-2,2)` are not allowed if file mode does not include `'b'`, which indicates binary format. Only forward operations such as `seek(0,2)` are allowed when the file object is dealt with as a text file. + + file=open("test1.txt","r") + for index in range(5): + line=next(file) + print(line) + file.close() + + + 1st line + + 2nd line + + 3rd line + + 4th line + + 5th line + + +**Note**: `write()` method doesn't write data to a file, but to a buffer, it does, but only when the `close()` method is called. This latter method flushes the buffer and writes the content to the file. If you wish not to close the file using `fileObject.flush()` method to clear the buffer and write back to file. + +### Importing the Moby Dick Novel + +Moby Dick is an 1851 novel by American writer Herman Melville. You'll be working with the file moby\_dick.txt. It is a text file that contains the opening sentences of Moby Dick, one of the great American novels! Here you'll get experience opening a text file, printing its contents, and, finally, closing it. + +You can download the moby dick text file from [here](https://github.com/wblakecannon/DataCamp/blob/master/05-importing-data-in-python-(part-1)/\_datasets/moby\_dick.txt). + +You will do the following things: + +* Open the moby\_dick.txt file in read-only mode and store it in the variable file + +* Print the contents of the file + +* Check whether the file is closed + +* Close the file using the close() method + +* Check again whether the file is closed + + + + file = open('moby_dick.txt', 'r') + + + print(file.read()) + print('\n') + + print('Is the file closed?:', file.closed) + + + file.close() + print('\n') + + print('Is the file closed?:', file.closed) + + + CHAPTER 1. Loomings. + + Call me Ishmael. Some years ago--never mind how long precisely--having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of + the world. It is a way I have of driving off the spleen and regulating the circulation. Whenever I find myself growing grim about the mouth; whenever it is a damp, drizzly November in my soul; whenever I find myself involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral I meet; and especially whenever my hypos get + such an upper hand of me, that it requires a strong moral principle to prevent me from deliberately stepping into the street, and methodically knocking people's hats off--then, I account it high time to get to sea as soon as I can. This is my substitute for pistol and ball. With a philosophical flourish Cato throws himself upon his sword; I quietly + take to the ship. There is nothing surprising in this. If they but knew it, almost all men in their degree, some time or other, cherish very nearly the same feelings towards the ocean with me. + + + Is the file closed?: False + + + Is the file closed?: True + + +#### Reading the Moby Dick Novel using Context Manager + +You can bind a file object by using a context manager construct, and you don't need to worry about closing the file. The file can not be accessed outside the context manager and is deemed closed. + +Let's print the first three lines of the moby dick text file using the `readline()` method. Note that the file is opened by default in a `read` mode. + + with open('moby_dick.txt') as file: + print(file.readline()) + print(file.readline()) + print(file.readline()) + + + CHAPTER 1. Loomings. + + + + Call me Ishmael. Some years ago--never mind how long precisely--having + + +#### Writing to a JSON File + +You can also write your data to `.json` files. + +Remember: Javascript Object Notation (JSON) has become a popular method for the exchange of structured information over a network and sharing information across platforms. It is basically text with some structure and saving it as `.json` tells how to read the structure; otherwise, it is just a plain text file. It stores data as key: value pairs. The structure can be simple to complex. + +Take a look at the following simple JSON for countries and their capitals: + + { + "Algeria":"Algiers", + "Andorra":"Andorra la Vella", + "Nepal":"Kathmandu", + "Netherlands":"Amsterdam", + } + + +Since JSON consists of an array of `key: value` pairs as shown in below code cell, anything before `:` is called key and after `:` is called value. This is very similar to Python dictionaries, isn't it! You can see that the data is separated by `,` and that curly braces define objects. Square brackets are used to define arrays in more complex JSON files, as you can see in the following excerpt: + + { + "colors": [ + { + "color": "black", + "category": "hue", + "type": "primary", + "code": { + "rgba": [255,255,255,1], + "hex": "#000" + } + }, + { + "color": "white", + "category": "value", + "code": { + "rgba": [0,0,0,1], + "hex": "#FFF" + } + }, + { + "color": "red", + "category": "hue", + "type": "primary", + "code": { + "rgba": [255,0,0,1], + "hex": "#FF0" + } + }, + { + "color": "blue", + "category": "hue", + "type": "primary", + "code": { + "rgba": [0,0,255,1], + "hex": "#00F" + } + }, + { + "color": "yellow", + "category": "hue", + "type": "primary", + "code": { + "rgba": [255,255,0,1], + "hex": "#FF0" + } + }, + { + "color": "green", + "category": "hue", + "type": "secondary", + "code": { + "rgba": [0,255,0,1], + "hex": "#0F0" + } + }, + ] + } + + +Note that JSON files can hold different data types in one object as well! + +When you read the file with `read()`, you read strings from a file. That means that when you read numbers, you would need to convert them to integers with data type conversion functions like `int()`. For more complex use cases, you can always use the `JSON` module. + +If you have an object `x`, you can view its JSON string representation with a simple line of code: + + + import json + my_data=["Reading and writing files in python",78546] + json.dumps(my_data) + + + '["Reading and writing files in python", 78546]' + + +To write the JSON in a file, you can use the `.dump()` method: + + with open("jsonfile.json","w") as f: + json.dump(my_data,f) + f.close() + + +Note: It is good practice to use the with-open method to open a file because it closes the file properly if any exception is raised on the way. + +Let's now open the `JSON` file you created using the `dump` method. If a `JSON` file is opened for reading, you can decode it with `load(file)` as follows: + + with open("jsonfile.json","r") as f: + jsondata=json.load(f) + print(jsondata) + f.close() + + + ['Reading and writing files in python', 78546] + + +Similarly, more complex dictionaries can be stored using the `JSON` module. You can find more information [here](https://docs.python.org/2/library/json.html#module-json). + +Now, you will see some other parameters of the `open()` method, which you have already seen in the previous sections. Let's start with `buffering`. + +### Buffering + +A buffer holds a chunk of data from the operating system's file stream until it is used upon which more data comes in, which is similar to video buffering. + +Buffering is useful when you don't know the size of the file you are working with if the file size is greater than computer memory then the processing unit will not function properly. The buffer size tells how much data can be held at a time until it is used. `io.DEFAULT_BUFFER_SIZE` can tell the default buffer size of your platform. + +Optionally, you can pass an integer to `buffering` to set the buffering policy: + +* `0` to switch off buffering (only allowed in binary mode) +* `1` to select line buffering (only usable in text mode) +* Any integer that is bigger than `1` to indicate the size in bytes of a fixed-size chunk buffer +* Use negative values to set the buffering policy to the system default + +When you don’t specify any policy, the default is: + +* Binary files are buffered in fixed-size chunks +* The size of the buffer is chosen depending on the underlying device’s “block size”. On many systems, the buffer will typically be 4096 or 8192 bytes long. +* “Interactive” text files (files for which `isatty()` returns `True`) use line buffering. Other text files use the policy described above for binary files. Note that `isatty()` can be used to see if you’re connected to a Tele-TYpewriter(-like) device. + + import io + print("Default buffer size:",io.DEFAULT_BUFFER_SIZE) + file=open("test1.txt",mode="r",buffering=5) + print(file.line_buffering) + file_contents=file.buffer + for line in file_contents: + print(line) + + + Default buffer size: 8192 + False + b'1st line\r\n' + b'2nd line\r\n' + b'3rd line\r\n' + b'4th line\r\n' + b'5th line' + + +**Note** that if you are using all arguments in the order that is specified in `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)`, you don't need to write argument name! If you skip arguments because you want to keep the default values, it’s better to write everything out in full. + +### Errors + +An optional string that specifies how encoding and decoding errors are to be handled. This argument cannot be used in binary mode. A variety of standard error handlers are available (listed under Error Handlers). + + file=open("test1.txt",mode="r",errors="strict") + print(file.read()) + file.close() + + + 1st line + 2nd line + 3rd line + 4th line + 5th line + + +`errors="strict"` raises `ValueErrorException` if there is encoding error. + +### Newline + +`newline` controls how universal newlines mode works (it only applies to text mode). It can be None, '', '\\n', '\\r', and '\\r\\n'. In the example above, you see that passing `None` to `newline` translates `'\r\n'` to `'\n'`. + +* **None**:universal newlines mode is enabled. Lines in the input can end in '\\n', '\\r', or '\\r\\n', and these are translated into default line separator + +* **" "**:universal newlines mode is enabled, but line endings are returned not translated + +* **'\\n','\\r', '\\r\\n'**:Input lines are only terminated by the given string, and the line ending is not translated. + + +Note that universal newlines are a manner of interpreting text streams in which all of the following are recognized as ending a line: the Unix end-of-line convention '\\n', the Windows convention '\\r\\n', and the old Macintosh convention '\\r'. + +Note also that `os.linesep` returns the system's default line separator: + + file=open("test1.txt",mode="r",newline="") + file.read() + + + '1st line\r\n2nd line\r\n3rd line\r\n4th line\r\n5th line' + + + file=open("test1.txt",mode="r",newline=None) + file.read() + + + '1st line\n2nd line\n3rd line\n4th line\n5th line' + + + file.close() + + +### Encoding + +`Encoding` represents the character encoding, which is the coding system that uses bits and byte to represent a character. This concept frequently pops up when you’re talking about data storage, data transmission, and computation. + +As default `encoding` is operating system dependent for Microsoft Windows, it is cp1252 but UTF-8 in Linux. So when dealing with text files, it is a good practice to specify the character encoding. Note that the binary mode doesn't take an encoding argument. + +Earlier, you read that you can use the `errors` parameter to handle encoding and decoding error and that you use `newline` to deal with line endings. Now, try out the following code for these: + + with open("test1.txt",mode="r") as file: + print("Default encoding:",file.encoding) + file.close() + + with open("test1.txt",mode="r",encoding="utf-8") as file: + print("New encoding:",file.encoding) + file.close() + + + Default encoding: cp1252 + New encoding: utf-8 + + +### closefd + +If `closefd` is `False` and a file descriptor, rather than a filename was given, the underlying file descriptor will be kept open when the file is closed. If a filename is given, `closefd` has to be set to `True`, which is the default. Otherwise, you’ll probably get an error. You use this argument to wrap an existing file descriptor into a real file object. + +Note that a file descriptor is simply an integer assigned to a file object by the operating system so that Python can request I/O operations. The method `.fileno()` returns this integer. + +If you have an integer file descriptor already open for an I/O channel you can wrap a file object around it as below: + + file=open("test1.txt","r+") + fd=file.fileno() + print("File descriptor assigned:",fd) + + + filedes_object=open(fd,"w") + filedes_object.write("Data sciences\r\nPython") + filedes_object.close() + + + File descriptor assigned: 6 + + +To prevent closing the underlying file object, you can use `closefd=False`: + + file=open("test1.txt","r+") + fd=file.fileno() + print("File descriptor assigned:",fd) + + + filedes_object=open(fd,"w",closefd=False) + filedes_object.write("Hello") + filedes_object.close() + file.close() + + + File descriptor assigned: 6 + + +You have learned a lot about reading text files in Python, but as you have read repeatedly throughout this tutorial, these are not the only files that you can import: there are also binary files. + +But what are these binary files exactly? + +Binary files store data in `0's` and `1's` that are machine-readable. A byte is a collection of 8-bits. One character stores one byte in the memory that is 8-bits. For example, the binary representation of character 'H' is `01001000` and convert this 8-bit binary string into decimal gives you `72`. + + binary_file=open("binary_file.bin",mode="wb+") + text="Hello 123" + encoded=text.encode("utf-8") + binary_file.write(encoded) + binary_file.seek(0) + binary_data=binary_file.read() + print("binary:",binary_data) + text=binary_data.decode("utf-8") + print("Decoded data:",text) + + + binary: b'Hello 123' + Decoded data: Hello 123 + + +When you open a file for reading in binary mode `b`, it returns bytes of data. + +If you ever need to read or write text from a binary-mode file, make sure you remember to decode or encode it like above. You can access each byte through iteration like below, and it will return integer byte values (decimal of the 8-bit binary representation of each character) instead of byte strings: + + for byte in binary_data: + print(byte) + + + 72 + 101 + 108 + 108 + 111 + 32 + 49 + 50 + 51 + + +### Python File Object Attributes + +File attributes give information about the file and file state. + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read3_yc0ljw.png) + + + with open("test1.txt") as file: + print("Name of the file:",file.name) + print("Mode of the file:",file.mode) + print("Mode of the file:",file.encoding) + file.close() + print("Closed?",file.closed) + + + Name of the file: test1.txt + Mode of the file: r + Mode of the file: cp1252 + Closed? True + + +### Other Methods of File object + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read4_r57cm1.png) + +Let's try out all of these methods: + + with open("mynewtextfile.txt","w+") as f: + f.write("We are learning python\nWe are learning python\nWe are learning python") + f.seek(0) + print(f.read()) + print("Is readable:",f.readable()) + print("Is writeable:",f.writable()) + print("File no:",f.fileno()) + print("Is connected to tty-like device:",f.isatty()) + f.truncate(5) + f.flush() + f.seek(0) + print(f.read()) + f.close() + + + We are learning python + We are learning python + We are learning python + Is readable: True + Is writeable: True + File no: 8 + Is connected to tty-like device: False + We ar + + +### Handling files through the `os` module + +The `os` module of Python allows you to perform Operating System dependent operations such as making a folder, listing contents of a folder, know about a process, end a process, etc. It has methods to view environment variables of the Operating System on which Python is working on and many more. [Here](https://docs.python.org/2/library/os.html) is the Python documentation for the `os` module. + +Let's see some useful `os` module methods that can help you to handle files and folders in your program. + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read5_a1ztyh.png) + +Let's see some examples of these methods: + + import os + os.getcwd() + + + 'C:\\Users\\hda3kor\\Documents\\Reading_and_Writing_Files' + + + os.makedirs("my_folder") + + + --------------------------------------------------------------------------- + + FileExistsError Traceback (most recent call last) + + in + ----> 1 os.makedirs("my_folder") + + + C:\Program Files\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok) + 219 return + 220 try: + --> 221 mkdir(name, mode) + 222 except OSError: + 223 # Cannot rely on checking for EEXIST, since the operating system + + + FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'my_folder' + + +The next code chunk will create a folder named my\_folder: + + open("my_folder\\newfile.txt","w") + print("Contents of folder my_folder\n",os.listdir("my_folder")) + print("---------------------------------") + print("Size of folder my_folder (in bytes)",os.path.getsize("my_folder")) + print("Is file?",os.path.isfile("test1.txt")) + print("Is folder?",os.path.isdir("my_folder")) + os.chdir("my_folder") + os.rename("newfile.txt","hello.txt") + print("New Contents of folder my_folder\n",os.listdir("my_folder")) + + + Contents of folder my_folder + ['hello.txt', 'newfile.txt'] + --------------------------------- + Size of folder my_folder (in bytes) 0 + Is file? True + Is folder? True + + + + --------------------------------------------------------------------------- + + FileExistsError Traceback (most recent call last) + + in + 6 print("Is folder?",os.path.isdir("my_folder")) + 7 os.chdir("my_folder") + ----> 8 os.rename("newfile.txt","hello.txt") + 9 print("New Contents of folder my_folder\n",os.listdir("my_folder")) + + + FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'newfile.txt' -> 'hello.txt' + + +If you create a filename that already exists Python will give `FileExistsError` error. To delete a file use, you can use `os.remove(filename)`: + + os.getcwd() + os.remove("hello.txt") + + +### Importing flat files using NumPy + +![](https://res.cloudinary.com/dyd911kmh/image/upload/f_auto,q_auto:best/v1590365454/read7_pcg8th.png) + +Numerical Python, or more commonly known as NumPy arrays, is the Python standard for storing numerical data. They are efficient, fast, and clean. They are widely used in linear algebra, statistics, machine learning, and deep learning. NumPy arrays act as a backbone for reading image datasets. + +It is also useful for packages like `Pandas` and `Scikit-learn`. NumPy consists of a lot of built-in functions which can be leveraged to do data analysis, manipulation: efficiently and in an easier fashion. + +#### MNIST data + +The sample MNIST `.csv` dataset can be downloaded from [here](https://github.com/wblakecannon/DataCamp/blob/master/05-importing-data-in-python-(part-1)/\_datasets/mnist\_kaggle\_some\_rows.csv). + +You can find more information about the MNIST dataset from [here](http://yann.lecun.com/exdb/mnist/) on the webpage of Yann LeCun. + +You will first import the NumPy module and then use the `loadtxt` method to import the MNIST data, as shown below: + + import numpy as np + data = np.loadtxt('mnist.csv', delimiter=',') + print(data) + + + [[1. 0. 0. ... 0. 0. 0.] + [0. 0. 0. ... 0. 0. 0.] + [1. 0. 0. ... 0. 0. 0.] + ... + [2. 0. 0. ... 0. 0. 0.] + [0. 0. 0. ... 0. 0. 0.] + [5. 0. 0. ... 0. 0. 0.]] + + +If your dataset has a header with string values, you can use the `skiprows` parameter and skip the first row. Similarly, you can use the `usecols` parameter to read only some specific columns. + +You can also pass in the `dtype`, i.e., datatype in which you want to import your data either integer, float, string, etc. + +**Note** that NumPy arrays are capable of handling only one type of datatype, meaning it cannot have mixed data types in a single array. + +Let's check the number of rows and columns this dataset has: + + data.shape + + + (100, 785) + + +If you would like to learn more great ways to handle data in Python then check out [this tutorial](https://www.datacamp.com/community/tutorials/pandas-tutorial-dataframe-python). + +Conclusion +---------- + +Congratulations on finishing the tutorial. + +Now you know how to handle files in Python and their manipulation from creation to operating system level handling. + +You might want to try experimenting with various NumPy functionalities that could be leveraged to understand numerical and imagery datasets. You could further analyze the dataset graphically using the Matplotlib plotting library. + +If you want to learn more about importing files in Python, check out DataCamp's [Importing Data in Python](https://www.datacamp.com/courses/importing-data-in-python-part-1) course. + + +[Source](https://www.datacamp.com/community/tutorials/reading-writing-files-python) \ No newline at end of file diff --git a/Readings/10 External Python packages you are going to love.html b/Readings/10 External Python packages you are going to love.html new file mode 100644 index 00000000..77263ae8 --- /dev/null +++ b/Readings/10 External Python packages you are going to love.html @@ -0,0 +1,80 @@ + + + + + + + 10 External Python packages you are going to love + + + +

10 External Python packages you are going to love

+
+

by Adam Goldschmidt 10 External Python packages you are going to lovePhoto by Brina Blum on UnsplashPython is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered. - Guido van RossumThis freedom that Guido talks

+
+
+10 External Python packages you are going to love
10 External Python packages you are going to love
+
+

by Adam Goldschmidt

+

+

Photo by Brina Blum on Unsplash

+
+

Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered. - Guido van Rossum

+
+

This freedom that Guido talks about is part of what makes Python so popular. That popularity, among other, is what attracts more and more developers to use the language - eventually leading to some really amazing open source projects.

+

I usually find myself project hunting on GitHub once a day. Throughout this article, I will try to cover 10 wonderful packages that you may or may not be familiar with. I will start from the less trendy and end up with… well, Flask.

+

Let’s begin!

+

+

Loguru — Logging made easy

+

+

This is a really awesome package I regularly use in my projects. It describes itself as “a library which aims to bring enjoyable logging in Python”. This package just lets you easily configure your logs out of the box.

+

All you have to do after installing is to import the module:

+
from loguru import logger
+

And you’re free to use it out of the box:

+
logger.debug("Hello, cool debugger")
+

The documentation is good and there are many customization options.

+

more-itertools

+

A variety of interesting methods that could sometimes come very useful, such as peekable:

+
>>> p = peekable(['a', 'b'])>>> p.peek()'a'>>> next(p)'a'
+

or chunked:

+
>>> list(chunked([1, 2, 3, 4, 5, 6], 3))[[1, 2, 3], [4, 5, 6]]
+

MonkeyType — Static type annotations generator

+
monkeytype run myscript.py
+

This package automatically generates type annotations for you, either in a stub file or in the source code itself, by collecting runtime types. Right, Python doesn’t enforce you to use annotations — but I believe they are very important for readability of the code (and sometimes for avoiding errors), which is also why there are 2 more packages in this list that are handling type annotations :)

+

Pyright — Static type checker

+

+

Exciting new package coming from Microsoft. The inital commit was just 17 days ago! This package is the competitor of Mypy (also on this list). To be honest, I haven’t yet had the chance to use it, but I definitely plan to. I currently use mypy as a type checker, but I’ll give this one a try!

+

requests-async — support for async/await syntax for requests

+

This is a new package I discovered the other day on GitHub, and it seems pretty promising. We all know the requests package, that lets us easily handle HTTP requests in our code. Well, this package implements async and await words for these requests:

+
import requests_async as requests​response = await requests.get('https://example.org')print(response.status_code)print(response.text)
+

Pretty cool right?

+

HTTPie — Modern command line cURL

+

+

Those of you who have used cURL before, must know it’s not that fun. Having to remember the parameters names, making sure your data is encapsulated… Well, HTTPie aims to make this much easier. Here’s one of their examples, of submitting form data:

+
http -f POST example.org hello=World
+

pipenv — Better packaging for Python

+

When I start a new project, I always create a new virtualenv and install some basic packages with pip. I then need to save these packages names in a file, be it setup.py or requirements.txt. Those of you who have worked with npm, know it’s much simpler there. All you need to do is write npm —save and the package name is saved in your package.json. That’s why I first created pypkgfreeze, a simple package to “freeze” the versions of your currently used pip packages into setup.py.

+

Anyway, pipenv is an interesting solution that aims to merge the two worlds - They describe it best in their repo page:

+

It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your Pipfile as you install/uninstall packages. It also generates the ever-important Pipfile.lock, which is used to produce deterministic builds.

+

You can try it out here.

+

mypy — Static type checker

+

As I said before, this is the package I currently use as my standard static type checker. It helps me keep my code readable and elegant (I think).

+

black

+

+

I have tried many Python formatters, and black is clearly my favourite. The syntax looks neat, and the command line runs quick and can either check the files or actually edit them - very useful for CI/CD. You can even try it here!

+

flask

+

Not sure if I have anything to write here that hasn’t been written before. You are probably familiar with this astonishing micro framework, and if you’re not.. you definitely should check it out.

+

Before you go…

+

Thanks for reading! You can follow my GitHub account for more cool repos. I tend to star every cool thing that I see :)

+

If you enjoyed this article, please hold down the clap button ? to help others find it. The longer you hold it, the more claps you give!

+

And do not hesitate to share your thoughts in the comments below.

+
+

Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

+

Source

+ + diff --git a/Readings/10 External Python packages you are going to love.md b/Readings/10 External Python packages you are going to love.md new file mode 100644 index 00000000..19d12fcf --- /dev/null +++ b/Readings/10 External Python packages you are going to love.md @@ -0,0 +1,114 @@ +# 10 External Python packages you are going to love + +> by Adam Goldschmidt 10 External Python packages you are going to lovePhoto by Brina Blum on UnsplashPython is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered. - Guido van RossumThis freedom that Guido talks + +![10 External Python packages you are going to love](https://cdn-media-1.freecodecamp.org/images/0*Metg2GPm6OTYWKZh) + +by Adam Goldschmidt + +![](https://cdn-media-1.freecodecamp.org/images/Tehd4MeGX2yYQUFUtdcWWNbUE7Qk9qFsZ9-Z) + +Photo by [Brina Blum](https://unsplash.com/@brina_blum?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral) + +> Python is an experiment in how much freedom programmers need. Too much freedom and nobody can read another’s code; too little and expressiveness is endangered. - Guido van Rossum + +This freedom that Guido talks about is part of what makes Python so popular. That popularity, among other, is what attracts more and more developers to use the language - eventually leading to some really amazing open source projects. + +I usually find myself project hunting on GitHub once a day. Throughout this article, I will try to cover 10 wonderful packages that you may or may not be familiar with. I will start from the less trendy and end up with… well, Flask. + +### Let’s begin! + +![](https://cdn-media-1.freecodecamp.org/images/oGpPuDrsAM6KYONzQCrIZXv1xAEIv-oVuIUT) + +#### [Loguru](https://github.com/Delgan/loguru) — Logging made easy + +![](https://cdn-media-1.freecodecamp.org/images/DWrohhPZvoWbH4s8apMbg8nXZOtf3m0lAhvk) + +This is a really awesome package I regularly use in my projects. It describes itself as “a library which aims to bring enjoyable logging in Python". This package just lets you easily configure your logs out of the box. + +All you have to do after installing is to import the module: + + from loguru import logger + +And you’re free to use it out of the box: + + logger.debug("Hello, cool debugger") + +The documentation is good and there are many customization options. + +#### [more-itertools](https://github.com/erikrose/more-itertools) + +A variety of interesting methods that could sometimes come very useful, such as `peekable`: + + >>> p = peekable(['a', 'b'])>>> p.peek()'a'>>> next(p)'a' + +or `chunked`: + + >>> list(chunked([1, 2, 3, 4, 5, 6], 3))[[1, 2, 3], [4, 5, 6]] + +#### [MonkeyType](https://github.com/Instagram/MonkeyType) — Static type annotations generator + + monkeytype run myscript.py + +This package automatically generates type annotations for you, either in a stub file or in the source code itself, by collecting runtime types. Right, Python doesn’t enforce you to use annotations — but I believe they are very important for readability of the code (and sometimes for avoiding errors), which is also why there are 2 more packages in this list that are handling type annotations :) + +#### [Pyright](https://github.com/Microsoft/pyright) — Static type checker + +![](https://cdn-media-1.freecodecamp.org/images/B5KVRNqA90q0PqVY18dvfvc7m7rbjYYVf1EP) + +Exciting new package coming from Microsoft. The inital commit was just 17 days ago! This package is the competitor of Mypy (also on this list). To be honest, I haven’t yet had the chance to use it, but I definitely plan to. I currently use mypy as a type checker, but I’ll give this one a try! + +#### [requests-async](https://github.com/encode/requests-async) — support for `async`/`await` syntax for `requests` + +This is a new package I discovered the other day on GitHub, and it seems pretty promising. We all know the [requests](https://github.com/kennethreitz/requests) package, that lets us easily handle HTTP requests in our code. Well, this package implements `async` and `await` words for these requests: + + import requests_async as requests​response = await requests.get('https://example.org')print(response.status_code)print(response.text) + +Pretty cool right? + +#### [HTTPie](https://github.com/jakubroztocil/httpie) — Modern command line cURL + +![](https://cdn-media-1.freecodecamp.org/images/UAD--5ZtcqjDRRKA4Y1oXEWzob6GTM94sXGa) + +Those of you who have used cURL before, must know it’s not that fun. Having to remember the parameters names, making sure your data is encapsulated… Well, HTTPie aims to make this much easier. Here’s one of their examples, of submitting form data: + + http -f POST example.org hello=World + +#### [pipenv](https://github.com/pypa/pipenv) — Better packaging for Python + +When I start a new project, I always create a new `virtualenv` and install some basic packages with `pip`. I then need to save these packages names in a file, be it `setup.py` or `requirements.txt`. Those of you who have worked with `npm`, know it's much simpler there. All you need to do is write `npm —save` and the package name is saved in your `package.json`. That's why I first created [pypkgfreeze](https://github.com/AdamGold/pypkgfreeze), a simple package to "freeze" the versions of your currently used `pip` packages into `setup.py`. + +Anyway, pipenv is an interesting solution that aims to merge the two worlds - They describe it best in their repo page: + +It automatically creates and manages a virtualenv for your projects, as well as adds/removes packages from your `Pipfile` as you install/uninstall packages. It also generates the ever-important `Pipfile.lock`, which is used to produce deterministic builds. + +You can try it out [here](https://rootnroll.com/d/pipenv/). + +#### [mypy](https://github.com/python/mypy) — Static type checker + +As I said before, this is the package I currently use as my standard static type checker. It helps me keep my code readable and elegant (I think). + +#### [black](https://github.com/ambv/black) + +![](https://cdn-media-1.freecodecamp.org/images/dQoUny7l5N6sWs2GCECZKHALf59t9398hNNp) + +I have tried many Python formatters, and `black` is clearly my favourite. The syntax looks neat, and the command line runs quick and can either check the files or actually edit them - very useful for CI/CD. You can even try it [here!](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/%5Bhttps://black.now.sh%5D(https://black.now.sh/)) + +#### [flask](https://github.com/pallets/flask) + +Not sure if I have anything to write here that hasn’t been written before. You are probably familiar with this astonishing micro framework, and if you’re not.. you definitely should check it out. + +### Before you go… + +Thanks for reading! You can follow my [GitHub](https://github.com/AdamGold) account for more cool repos. I tend to star every cool thing that I see :) + +If you enjoyed this article, please hold down the clap button ? to help others find it. The longer you hold it, the more claps you give! + +And do not hesitate to share your thoughts in the comments below. + +* * * + +Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn) + + +[Source](https://www.freecodecamp.org/news/these-python-packages-will-help-accelerate-your-development-process-d4b3f170b1ea/) diff --git a/Readings/30-python-snippets.html b/Readings/30-python-snippets.html new file mode 100644 index 00000000..aab8fb42 --- /dev/null +++ b/Readings/30-python-snippets.html @@ -0,0 +1,65 @@ + + + + + + + 30-python-snippets + + + +

30 Helpful Python Snippets That You Can Learn in 30 Seconds or Less

+
+

Short Python snippets that you can quickly learn and use in your work or personal needs

+
+

Fatos Morina

+
+Image for post
Image for post
+
+
+Image for post
Image for post
+
+

Photo by Jantine Doornbos on Unsplash

+

Python represents one of the most popular languages that many people use it in data science and machine learning, web development, scripting, automation, etc.

+

Part of the reason for this popularity is its simplicity and easiness to learn it.

+

If you are reading this, then it is highly likely that you already use Python or at least have an interest in it.

+

In this article, we will briefly see 30 short code snippets that you can understand and learn in 30 seconds or less.

+

The following method checks whether the given list has duplicate elements. It uses the property of set() which removes duplicate elements from the list.

+

This method can be used to check if two strings are anagrams. An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

+

This snippet can be used to check the memory usage of an object.

+

This method returns the length of a string in bytes.

+

This snippet can be used to print a string n times without having to use loops to do it.

+

This snippet simply uses the method title() to capitalize first letters of every word in a string.

+

This method chunks a list into smaller lists of a specified size.

+

This method removes falsy values (False, None, 0 and “") from a list by using filter().

+

This snippet can be used to transpose a 2D array.

+

You can do multiple comparisons with all kinds of operators in a single line.

+

This snippet can be used to turn a list of strings into a single string with each element from the list separated by commas.

+

This method gets vowels (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) found in a string.

+

This method can be used to turn the first letter of the given string into lowercase.

+

The following methods flatten a potentially deep list using recursion.

+

This method finds the difference between two iterables by keeping only the values that are in the first one.

+

The following method returns the difference between two lists after applying a given function to each element of both lists.

+

You can call multiple functions inside a single line.

+

The following method checks whether a list has duplicate values by using the fact that set() contains only unique elements.

+

The following method can be used to merge two dictionaries.

+

In Python 3.5 and above, you can also do it like the following:

+

The following method can be used to convert two lists into a dictionary.

+

This snippet shows that you can use enumerate to get both the values and the indexes of lists.

+

This snippet can be used to calculate the time it takes to execute a particular code.

+

You can have an else clause as part of a try/except block, which is executed if no exception is thrown.

+

This method returns the most frequent element that appears in a list.

+

This method checks whether a given string is a palindrome.

+

The following snippet shows how you can write a simple calculator without the need to use if-else conditions.

+

This snippet can be used to randomize the order of the elements in a list. Note that shuffle works in place, and returns None.

+

This method flattens a list similarly like [].concat(…arr) in JavaScript.

+

This is a really quick way for swapping two variables without having to use an additional one.

+

This snippet shows how you can get a default value in case a key you are looking for is not included in the dictionary.

+

Source

+ + diff --git a/Readings/30-python-snippets.md b/Readings/30-python-snippets.md new file mode 100644 index 00000000..772f1032 --- /dev/null +++ b/Readings/30-python-snippets.md @@ -0,0 +1,84 @@ +# 30 Helpful Python Snippets That You Can Learn in 30 Seconds or Less + +> Short Python snippets that you can quickly learn and use in your work or personal needs + +[![Fatos Morina](https://miro.medium.com/fit/c/56/56/1*K5svz0DwQPKGfnX0LJZozw.jpeg)](https://fatosmorina.medium.com/?source=post_page-----69bb49204172--------------------------------) + +![Image for post](https://miro.medium.com/max/60/0*a4SfQa9ogzbuspzy?q=20) + +![Image for post](https://miro.medium.com/max/9698/0*a4SfQa9ogzbuspzy) + +Photo by [Jantine Doornbos](https://unsplash.com/@jantined?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral) + +Python represents one of the most popular languages that many people use it in data science and machine learning, web development, scripting, automation, etc. + +Part of the reason for this popularity is its simplicity and easiness to learn it. + +If you are reading this, then it is highly likely that you already use Python or at least have an interest in it. + +In this article, we will briefly see 30 short code snippets that you can understand and learn in 30 seconds or less. + +The following method checks whether the given list has duplicate elements. It uses the property of _set()_ which removes duplicate elements from the list. + +This method can be used to check if two strings are anagrams. An anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once. + +This snippet can be used to check the memory usage of an object. + +This method returns the length of a string in bytes. + +This snippet can be used to print a string _n_ times without having to use loops to do it. + +This snippet simply uses the method _title()_ to capitalize first letters of every word in a string. + +This method chunks a list into smaller lists of a specified size. + +This method removes falsy values (False, None, 0 and “") from a list by using _filter()_. + +This snippet can be used to transpose a 2D array. + +You can do multiple comparisons with all kinds of operators in a single line. + +This snippet can be used to turn a list of strings into a single string with each element from the list separated by commas. + +This method gets vowels (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) found in a string. + +This method can be used to turn the first letter of the given string into lowercase. + +The following methods flatten a potentially deep list using recursion. + +This method finds the difference between two iterables by keeping only the values that are in the first one. + +The following method returns the difference between two lists after applying a given function to each element of both lists. + +You can call multiple functions inside a single line. + +The following method checks whether a list has duplicate values by using the fact that _set()_ contains only unique elements. + +The following method can be used to merge two dictionaries. + +In Python 3.5 and above, you can also do it like the following: + +The following method can be used to convert two lists into a dictionary. + +This snippet shows that you can use _enumerate_ to get both the values and the indexes of lists. + +This snippet can be used to calculate the time it takes to execute a particular code. + +You can have an _else_ clause as part of a _try/except_ block, which is executed if no exception is thrown. + +This method returns the most frequent element that appears in a list. + +This method checks whether a given string is a palindrome. + +The following snippet shows how you can write a simple calculator without the need to use if-else conditions. + +This snippet can be used to randomize the order of the elements in a list. Note that shuffle works in place, and returns _None_. + +This method flattens a list similarly like \[\].concat(…arr) in JavaScript. + +This is a really quick way for swapping two variables without having to use an additional one. + +This snippet shows how you can get a default value in case a key you are looking for is not included in the dictionary. + + +[Source](https://towardsdatascience.com/30-helpful-python-snippets-that-you-can-learn-in-30-seconds-or-less-69bb49204172) diff --git a/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.html b/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.html new file mode 100644 index 00000000..d3847ba1 --- /dev/null +++ b/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.html @@ -0,0 +1,205 @@ + + + + + + + A quick yet complete tour of lists in Python3 in just seven minutes + + + +

A quick yet complete tour of lists in Python3 in just seven minutes

+
+

by PALAKOLLU SRI MANIKANTA A quick yet complete tour of lists in Python3 in just seven minutesPhoto by Emma Matthews on UnsplashPython lists are not like arrays. They are bit different. When it comes to dealing with array’s we talk about a collection of homogeneous data elements. This is

+
+

by PALAKOLLU SRI MANIKANTA

+

+

Photo by Emma Matthews on Unsplash

+

Python lists are not like arrays. They are bit different. When it comes to dealing with array’s we talk about a collection of homogeneous data elements. This is not true in case of a list in python. Python List can store a heterogeneous collection of elements. This feature will help developers and programmers to work with lists in a more flexible manner. A List in python is one of the most powerful inbuilt data structures.

+

Lists in python can store Integers, Floating values, Strings, Boolean values, and complex values as well.

+

How to create a List in python

+

We can create a list in python in two ways

+
    +
  1. By declaring a variable with an empty square brace i.e []
  2. +
  3. By using list().
  4. +
+

Example

+
# Here first I'm creating a my todo list which is used to store my to-do activities.
+
+myTODOList = []
+
+# The above line will create a list object for me# I'm creating a another list which will store my general information.
+
+myGeneralInfo = list()
+
+# The above line will also create a list object for me# Getting the types of list objects
+
+print(type(myTODOList))print(type(myGeneralInfo))
+

Output

+

+

Output for the above few lines of code.

+

It’s amazing at this point you are able to create a new list object with most frequently used methods. Now we will move forward on how we can add new elements to our list and many more things. Let’s get started.

+

How to add Data to our list?

+

First of all, I would like to introduce the concept of Mutability. Mutability means the ability to change its behavior. Python lists are mutable in nature. We can add or delete elements from the list. This is one of the biggest advantages that attract programmers to work with lists when compared to other inbuilt data structures.

+

We can add elements to a list in two ways:

+
    +
  1. By using append()
  2. +
  3. By using insert()
  4. +
+

By using append()

+

With the help of the append method, we are able to add one element at a time. This method will help us to add elements at the end of the list only.

+
+

The syntax for the append function is —

+
+
+

listName.append(item/element)

+
+
# Adding Elements to the lists
+
+myTODOList.append('Wake up Early Morning')myTODOList.append('Go to Gym')myTODOList.append('Play Some Games')myTODOList.append('Get ready to go the college')myTODOList.append('Go to library')
+
+# Printing the entire list elements
+
+print(myTODOList)
+

Output

+

+

Output for the above line of code.

+

By using insert()

+

This insert method is used to add the elements at a specified position in the given list.

+
+

The syntax for the insert function is —

+
+
+

listName.insert(position, item/element)

+
+

insert() uses two parameters — position and list item. The position is where the element is needed to be kept in the list. These positions are generally called as indexes. Usually, the list index in python starts from 0. (i.e the first element index is 0 and the second element is 1 and the third element index is 2 and so on). From this, we can conclude that —

+
+

A list of n elements will have at most an index number of n-1 i.e A list with 5 elements will have maximum index value of 4.

+
+

Example

+
# Adding Elements to our list with the help of insert()
+
+myGeneralInfo.insert(0, 'Paid the Library Fee')myGeneralInfo.insert(1, 12000)myGeneralInfo.insert(2, True)myGeneralInfo.insert(3, 14+12j)myGeneralInfo.insert(4, 3.141521)
+
+# Printing the myGeneralInfo list information
+
+print(myGeneralInfo)
+

Output

+

+

Output for the above few lines of code.

+
+

myGeneralInfo is filled with some random information for illustration purposes only.

+
+

How to Access the List Elements

+

We can access the list of elements by using the following two ways:

+
    +
  1. By using an index operator.
  2. +
  3. By using slice operator
  4. +
+

By using an index operator

+

We can directly access our list elements with the help of the index operator.

+

Example

+
# Acessing the certain values from the list
+
+print(myTODOList[1])print(myTODOList[3])print(myTODOList[4])
+

Output

+

+

Output for the above program

+

By using Slice Operator

+

The slice operator is one of the most commonly used operators to access the list elements effectively. The syntax for the slice operator is:

+

listName[start: stop: step]

+

start — It indicates the index where the slice has to start. The default value is 0.

+

stop — It indicates the index where the slice has to end. The default value is the maximum allowed index of list i.e. length of the list.

+

step — Increment value. The default value is 1.

+

Example

+
# Getting the information using slice operator
+
+print(myTODOList[0:3])  # we don't need to specify the step value.print(myTODOList[2:4:1])print(myTODOList[0:4:2])
+

Output

+

+

Output for the above few lines of code.

+

Python lists are iterable objects. For any iterable object in python, we can write a for loop to print out all the data.

+

Example

+
# Iterating over the list
+
+for item in myGeneralInfo:      print(item)
+

+

Output for the above lines of code.

+

How to remove an element from the list

+

We can remove the list elements with the following two ways:

+
    +
  1. By using remove()
  2. +
  3. By using pop()
  4. +
+

By using remove()

+

remove() is used to remove the element that is specified to it. The syntax for remove() is:

+

listName.remove(item/element)

+
# Deleting the element from the list
+
+myGeneralInfo.remove(12000)myGeneralInfo.remove('Paid the Library Fee')
+
+# printing the result after deleting the elements
+
+print(myGeneralInfo)
+

+

After deleting the list elements the output would be as follows

+

By using pop()

+

It is an iterator method which is used to remove the single (or) multiple elements at a time. It deletes the elements from the back side. The syntax for the pop() method is:

+

listName.pop()

+
# printing the list items before deleting
+
+print('My TODO List Elements: ',myTODOList)print('My General list Elements: ',myGeneralInfo)
+
+# Deleting the list elements using pop()
+
+myTODOList.pop()myTODOList.pop()
+
+# Deleting the list elements completely
+
+for item in range(len(myGeneralInfo)):       myGeneralInfo.pop()
+
+# printing the results
+
+print('My TODO List Elements: ',myTODOList)print('My General list Elements: ',myGeneralInfo)
+

+

This is the way we can delete list elements using pop()

+
+

In the above program, we used the len() within the for loop. len() is used to give the length of the list i.e. number of elements present in the list.

+
+

Various Attributes and Functions on List Object

+

python dir() function is used to give the set of inbuilt attributes and methods that are associated with it.

+

Example

+
# Printing all the attributes and functions on the list object
+
+print(dir(myTODOList))
+

Output

+

+

Various Attributes and Methods on the list object

+

Various List Methods and their use:

+
    +
  1. append() — It will add an element to the end of the list.
  2. +
  3. clear() — It is used to remove all items from the list.
  4. +
  5. copy() — It is used to return another copy of the list.
  6. +
  7. count() — It is used to return the count of the number of items passed as an argument.
  8. +
  9. extend() — It will add all elements of a list to another list.
  10. +
  11. index() — It is used to return the index of the first matched item.
  12. +
  13. insert() — It is used to insert an item at the defined index.
  14. +
  15. pop() — It is used to remove and return an element at the given index.
  16. +
  17. remove() — It is used to remove an item from the list.
  18. +
  19. reverse() — It is used to reverse the order of items in the list.
  20. +
  21. sort() — It is used to sort items in a list in ascending order.
  22. +
+

When to use List Data Structure?

+

If you want to store multiple data objects, insertion order must be preserved. If you want to store duplicate values as well, then this data structure will be more helpful to perform such operations.

+

I covered pretty much everything that is required to perform any kind of operation on the list data structure.

+

Hope this helped you learn about Lists in python in a quick and easy way.

+

If you liked this article, please click on the clap and leave me feedback. Please share with your friends.

+

Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

+

Source

+ + diff --git a/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.md b/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.md new file mode 100644 index 00000000..008b1400 --- /dev/null +++ b/Readings/A quick yet complete tour of lists in Python3 in just seven minutes.md @@ -0,0 +1,260 @@ +# A quick yet complete tour of lists in Python3 in just seven minutes + +> by PALAKOLLU SRI MANIKANTA A quick yet complete tour of lists in Python3 in just seven minutesPhoto by Emma Matthews on UnsplashPython lists are not like arrays. They are bit different. When it comes to dealing with array’s we talk about a collection of homogeneous data elements. This is + +by PALAKOLLU SRI MANIKANTA + +![](https://cdn-media-1.freecodecamp.org/images/lwhO3Rgrh-Z4dbxN9PlzUHNAnHJKm9TC3YaS) + +Photo by [Emma Matthews](https://unsplash.com/@emmamatthews?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com/?utm_source=medium&utm_medium=referral) + +Python lists are not like arrays. They are bit different. When it comes to dealing with array’s we talk about a collection of homogeneous data elements. This is not true in case of a list in python. Python List can store a heterogeneous collection of elements. This feature will help developers and programmers to work with lists in a more flexible manner. A List in python is one of the most powerful inbuilt data structures. + +Lists in python can store Integers, Floating values, Strings, Boolean values, and complex values as well. + +#### How to create a List in python + +We can create a list in python in two ways + +1. By declaring a variable with an empty square brace i.e \[\] +2. By using list(). + +**Example** + + # Here first I'm creating a my todo list which is used to store my to-do activities. + + myTODOList = [] + + # The above line will create a list object for me# I'm creating a another list which will store my general information. + + myGeneralInfo = list() + + # The above line will also create a list object for me# Getting the types of list objects + + print(type(myTODOList))print(type(myGeneralInfo)) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/7qXRlOZ6ZFueYQAoN2P3q-CV0ardhjMRNyEc) + +Output for the above few lines of code. + +It’s amazing at this point you are able to create a new list object with most frequently used methods. Now we will move forward on how we can add new elements to our list and many more things. Let’s get started. + +#### How to add Data to our list? + +First of all, I would like to introduce the concept of Mutability. Mutability means the ability to change its behavior. Python lists are mutable in nature. We can add or delete elements from the list. This is one of the biggest advantages that attract programmers to work with lists when compared to other inbuilt data structures. + +We can add elements to a list in two ways: + +1. By using append() +2. By using insert() + +**By using append()** + +With the help of the append method, we are able to add one element at a time. This method will help us to add elements at the end of the list only. + +> The syntax for the append function is — + +> listName.append(item/element) + + # Adding Elements to the lists + + myTODOList.append('Wake up Early Morning')myTODOList.append('Go to Gym')myTODOList.append('Play Some Games')myTODOList.append('Get ready to go the college')myTODOList.append('Go to library') + + # Printing the entire list elements + + print(myTODOList) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/MjgtAQob6hxMqOY126H3fOOEkwzA-Yg6jN5a) + +Output for the above line of code. + +**By using insert()** + +This insert method is used to add the elements at a specified position in the given list. + +> The syntax for the insert function is — + +> listName.insert(position, item/element) + +insert() uses two parameters — position and list item. The position is where the element is needed to be kept in the list. These positions are generally called as indexes. Usually, the list index in python starts from 0. (i.e the first element index is 0 and the second element is 1 and the third element index is 2 and so on). From this, we can conclude that — + +> A list of n elements will have at most an index number of n-1 i.e A list with 5 elements will have maximum index value of 4. + +**Example** + + # Adding Elements to our list with the help of insert() + + myGeneralInfo.insert(0, 'Paid the Library Fee')myGeneralInfo.insert(1, 12000)myGeneralInfo.insert(2, True)myGeneralInfo.insert(3, 14+12j)myGeneralInfo.insert(4, 3.141521) + + # Printing the myGeneralInfo list information + + print(myGeneralInfo) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/18F43mmcZJKN3VZoBzfNSDdUgFmOtgBsFfcc) + +Output for the above few lines of code. + +> myGeneralInfo is filled with some random information for illustration purposes only. + +#### How to Access the List Elements + +We can access the list of elements by using the following two ways: + +1. By using an index operator. +2. By using slice operator + +**By using an index operator** + +We can directly access our list elements with the help of the index operator. + +**Example** + + # Acessing the certain values from the list + + print(myTODOList[1])print(myTODOList[3])print(myTODOList[4]) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/WuIkO4Zsn3kDVrgF4u-Q746ADPjTcKbQE09d) + +Output for the above program + +**By using Slice Operator** + +The slice operator is one of the most commonly used operators to access the list elements effectively. The syntax for the slice operator is: + +listName\[start: stop: step\] + +start — It indicates the index where the slice has to start. The default value is 0. + +stop — It indicates the index where the slice has to end. The default value is the maximum allowed index of list i.e. length of the list. + +step — Increment value. The default value is 1. + +**Example** + + # Getting the information using slice operator + + print(myTODOList[0:3]) # we don't need to specify the step value.print(myTODOList[2:4:1])print(myTODOList[0:4:2]) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/xkDOJNvzDYC4j0nSGGKAayqg2D10l5zjncW5) + +Output for the above few lines of code. + +Python lists are iterable objects. For any iterable object in python, we can write a for loop to print out all the data. + +**Example** + + # Iterating over the list + + for item in myGeneralInfo: print(item) + +![](https://cdn-media-1.freecodecamp.org/images/dEPU2NUaTN78qTCftaX8AaTtjmCQUACG5n2-) + +Output for the above lines of code. + +#### How to remove an element from the list + +We can remove the list elements with the following two ways: + +1. By using remove() +2. By using pop() + +**By using remove()** + +remove() is used to remove the element that is specified to it. The syntax for remove() is: + +listName.remove(item/element) + + # Deleting the element from the list + + myGeneralInfo.remove(12000)myGeneralInfo.remove('Paid the Library Fee') + + # printing the result after deleting the elements + + print(myGeneralInfo) + +![](https://cdn-media-1.freecodecamp.org/images/Yb8jVI4YWDj-MbWPHqUSqHKq0n0GIqxv3eN6) + +After deleting the list elements the output would be as follows + +**By using pop()** + +It is an iterator method which is used to remove the single (or) multiple elements at a time. It deletes the elements from the back side. The syntax for the pop() method is: + +listName.pop() + + # printing the list items before deleting + + print('My TODO List Elements: ',myTODOList)print('My General list Elements: ',myGeneralInfo) + + # Deleting the list elements using pop() + + myTODOList.pop()myTODOList.pop() + + # Deleting the list elements completely + + for item in range(len(myGeneralInfo)): myGeneralInfo.pop() + + # printing the results + + print('My TODO List Elements: ',myTODOList)print('My General list Elements: ',myGeneralInfo) + +![](https://cdn-media-1.freecodecamp.org/images/lpkTpT0NkF2ZrpzJaM61ykItaqtEfylrymIC) + +This is the way we can delete list elements using pop() + +> In the above program, we used the len() within the for loop. len() is used to give the length of the list i.e. number of elements present in the list. + +#### Various Attributes and Functions on List Object + +python dir() function is used to give the set of inbuilt attributes and methods that are associated with it. + +**Example** + + # Printing all the attributes and functions on the list object + + print(dir(myTODOList)) + +**Output** + +![](https://cdn-media-1.freecodecamp.org/images/lySJCcD9YPuSHj0xrkOd1QqM3aABCge1iCRs) + +Various Attributes and Methods on the list object + +#### Various List Methods and their use: + +1. **append() —** It will add an element to the end of the list. +2. **clear() —** It is used to remove all items from the list. +3. **copy() —** It is used to return another copy of the list. +4. **count() —** It is used to return the count of the number of items passed as an argument. +5. **extend() —** It will add all elements of a list to another list. +6. **index() —** It is used to return the index of the first matched item. +7. **insert() —** It is used to insert an item at the defined index. +8. **pop() —** It is used to remove and return an element at the given index. +9. **remove() —** It is used to remove an item from the list. +10. **reverse() —** It is used to reverse the order of items in the list. +11. **sort() —** It is used to sort items in a list in ascending order. + +#### When to use List Data Structure? + +If you want to store multiple data objects, insertion order must be preserved. If you want to store duplicate values as well, then this data structure will be more helpful to perform such operations. + +I covered pretty much everything that is required to perform any kind of operation on the list data structure. + +**Hope this helped you learn about Lists in python in a quick and easy way.** + +**If you liked this article, please click on the clap and leave me feedback. Please share with your friends.** + +Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn) + + +[Source](https://www.freecodecamp.org/news/a-quick-yet-complete-tour-of-lists-in-python3-in-just-seven-minutes-437e615110d0/) \ No newline at end of file diff --git a/Readings/An A-Z of useful Python tricks.html b/Readings/An A-Z of useful Python tricks.html new file mode 100644 index 00000000..c810e351 --- /dev/null +++ b/Readings/An A-Z of useful Python tricks.html @@ -0,0 +1,291 @@ + + + + + + + An A-Z of useful Python tricks + + + +

An A-Z of useful Python tricks

+
+

Python is one of the world’s most popular, in-demand programming languages. This is for many reasons: it’s easy to learnit’s super versatileit has a huge range of modules and librariesI use Python daily as an integral part of my job as a data scientist. Along the way,

+
+

Python is one of the world’s most popular, in-demand programming languages. This is for many reasons:

+
    +
  • it’s easy to learn
  • +
  • it’s super versatile
  • +
  • it has a huge range of modules and libraries
  • +
+

I use Python daily as an integral part of my job as a data scientist. Along the way, I’ve picked up a few useful tricks and tips.

+

Here, I’ve shared some of them in an A-Z format.

+

Most of these ‘tricks’ are things I’ve used or stumbled upon during my day-to-day work. Some I found while browsing the Python Standard Library docs. A few others I found searching through PyPi.

+

However, credit where it is due — I discovered four or five of them over at awesome-python.com. This is a curated list of hundreds of interesting Python tools and modules. It is worth browsing for inspiration!

+

all or any

+

One of the many reasons why Python is such a popular language is because it is readable and expressive.

+

It is often joked that Python is ‘executable pseudocode’. But when you can write code like this, it’s difficult to argue otherwise:

+
x = [True, True, False]
+if any(x):
+    print("At least one True")
+if all(x):
+    print("Not one False")
+if any(x) and not all(x):    
+    print("At least one True and one False")
+

bashplotlib

+

You want to plot graphs in the console?

+
$ pip install bashplotlib
+

You can have graphs in the console.

+

collections

+

Python has some great default datatypes, but sometimes they just won’t behave exactly how you’d like them to.

+

Luckily, the Python Standard Library offers the collections module. This handy add-on provides you with further datatypes.

+
from collections import OrderedDict, Counter
+
+
+x = OrderedDict(a=1, b=2, c=3)
+
+
+y = Counter("Hello World!")
+

dir

+

Ever wondered how you can look inside a Python object and see what attributes it has? Of course you have.

+

From the command line:

+
>>> dir()
+>>> dir("Hello World")
+>>> dir(dir)
+

This can be a really useful feature when running Python interactively, and for dynamically exploring objects and modules you are working with.

+

Read more here.

+

emoji

+

Yes, really.

+
$ pip install emoji
+

Don’t pretend you’re not gonna try it out…

+
from emoji import emojize
+print(emojize(":thumbs_up:"))
+

?

+

from __future__ import

+

One consequence of Python’s popularity is that there are always new versions under development. New versions mean new features — unless your version is out-of-date.

+

Fear not, however. The __future__ module lets you import functionality from future versions of Python. It’s literally like time travel, or magic, or something.

+
from __future__ import print_function
+print("Hello World!")
+

Why not have a go importing curly braces?

+

geopy

+

Geography can be a challenging terrain for programmers to navigate (ha, a pun!). But the geopy module makes it unnervingly easy.

+
$ pip install geopy
+

It works by abstracting the APIs of a range of different geocoding services. It enables you to obtain a place’s full street address, latitude, longitude, and even altitude.

+

There’s also a useful distance class. It calculates the distance between two locations in your favorite unit of measurement.

+
from geopy import GoogleV3
+
+place = "221b Baker Street, London"
+location = GoogleV3().geocode(place)
+print(location.address)
+print(location.location)
+

howdoi

+

Stuck on a coding problem and can’t remember that solution you saw before? Need to check StackOverflow, but don’t want to leave the terminal?

+

Then you need this useful command line tool.

+
$ pip install howdoi
+

Ask it whatever question you have, and it’ll do its best to return an answer.

+
$ howdoi vertical align css
+$ howdoi for loop in java
+$ howdoi undo commits in git
+

Be aware though — it scrapes code from top answers from StackOverflow. It might not always give the most helpful information…

+
$ howdoi exit vim
+

inspect

+

Python’s inspect module is great for understanding what is happening behind the scenes. You can even call its methods on itself!

+

The code sample below uses inspect.getsource() to print its own source code. It also uses inspect.getmodule() to print the module in which it was defined.

+

The last line of code prints out its own line number.

+
import inspect
+
+print(inspect.getsource(inspect.getsource))
+print(inspect.getmodule(inspect.getmodule))
+print(inspect.currentframe().f_lineno)
+

Of course, beyond these trivial uses, the inspect module can prove useful for understanding what your code is doing. You could also use it for writing self-documenting code.

+

Jedi

+

The Jedi library is an autocompletion and code analysis library. It makes writing code quicker and more productive.

+

Unless you’re developing your own IDE, you’ll probably be most interested in using Jedi as an editor plugin. Luckily, there are already loads available!

+

You may already be using Jedi, however. The IPython project makes use of Jedi for its code autocompletion functionality.

+

**kwargs

+

When learning any language, there are many milestones along the way. With Python, understanding the mysterious **kwargs syntax probably counts as one.

+

The double-asterisk in front of a dictionary object lets you pass the contents of that dictionary as named arguments to a function.

+

The dictionary’s keys are the argument names, and the values are the values passed to the function. You don’t even need to call it kwargs!

+
dictionary = {"a": 1, "b": 2}
+
+def someFunction(a, b):
+    print(a + b)
+    return
+    
+
+someFunction(**dictionary)
+someFunction(a=1, b=2)
+

This is useful when you want to write functions that can handle named arguments not defined in advance.

+

List comprehensions

+

One of my favourite things about programming in Python are its list comprehensions.

+

These expressions make it easy to write very clean code that reads almost like natural language.

+

You can read more about how to use them here.

+
numbers = [1,2,3,4,5,6,7]
+evens = [x for x in numbers if x % 2 is 0]
+odds = [y for y in numbers if y not in evens]
+
+cities = ['London', 'Dublin', 'Oslo']
+
+def visit(city):
+    print("Welcome to "+city)
+for city in cities:
+    visit(city)
+

map

+

Python supports functional programming through a number of inbuilt features. One of the most useful is the map() function — especially in combination with lambda functions.

+
x = [1, 2, 3]
+y = map(lambda x : x + 1 , x)
+

In the example above, map() applies a simple lambda function to each element in x. It returns a map object, which can be converted to some iterable object such as a list or tuple.

+

newspaper3k

+

If you haven’t seen it already, then be prepared to have your mind blown by Python’s newspaper module.

+

It lets you retrieve news articles and associated meta-data from a range of leading international publications. You can retrieve images, text and author names.

+

It even has some inbuilt NLP functionality.

+

So if you were thinking of using BeautifulSoup or some other DIY webscraping library for your next project, save yourself the time and effort and $ pip install newspaper3k instead.

+

Operator overloading

+

Python provides support for operator overloading, which is one of those terms that make you sound like a legit computer scientist.

+

It’s actually a simple concept. Ever wondered why Python lets you use the + operator to add numbers and also to concatenate strings? That’s operator overloading in action.

+

You can define objects which use Python’s standard operator symbols in their own specific way. This lets you use them in contexts relevant to the objects you’re working with.

+
class Thing:
+    def __init__(self, value):
+        self.__value = value
+    def __gt__(self, other):
+        return self.__value > other.__value
+    def __lt__(self, other):
+        return self.__value < other.__value
+
+something = Thing(100)
+nothing = Thing(0)
+
+
+something > nothing
+
+
+something < nothing
+
+
+something + nothing
+

pprint

+

Python’s default print function does its job. But try printing out any large, nested object, and the result is rather ugly.

+

Here’s where the Standard Library’s pretty-print module steps in. This prints out complex structured objects in an easy-to-read format.

+

A must-have for any Python developer who works with non-trivial data structures.

+
import requests
+import pprint
+
+url = 'https://randomuser.me/api/?results=1'
+users = requests.get(url).json()
+pprint.pprint(users)
+

Queue

+

Python supports multithreading, and this is facilitated by the Standard Library’s Queue module.

+

This module lets you implement queue data structures. These are data structures that let you add and retrieve entries according to a specific rule.

+

‘First in, first out’ (or FIFO) queues let you retrieve objects in the order they were added. ‘Last in, first out’ (LIFO) queues let you access the most recently added objects first.

+

Finally, priority queues let you retrieve objects according to the order in which they are sorted.

+

Here’s an example of how to use queues for multithreaded programming in Python.

+

__repr__

+

When defining a class or an object in Python, it is useful to provide an ‘official’ way of representing that object as a string. For example:

+
>>> file = open('file.txt', 'r')
+>>> print(file)
+<open file 'file.txt', mode 'r' at 0x10d30aaf0>
+

This makes debugging code a lot easier. Add it to your class definitions as below:

+
class someClass:
+    def __repr__(self):
+        return "<some description here>"
+        
+someInstance = someClass()
+
+
+print(someInstance)
+

sh

+

Python makes a great scripting language. Sometimes using the standard os and subprocess libraries can be a bit of a headache.

+

The sh library provides a neat alternative.

+

It lets you call any program as if it were an ordinary function — useful for automating workflows and tasks, all from within Python.

+
import sh
+sh.pwd()
+sh.mkdir('new_folder')
+sh.touch('new_file.txt')
+sh.whoami()
+sh.echo('This is great!')
+

Type hints

+

Python is a dynamically-typed language. You don’t need to specify datatypes when you define variables, functions, classes etc.

+

This allows for rapid development times. However, there are few things more annoying than a runtime error caused by a simple typing issue.

+

Since Python 3.5, you have the option to provide type hints when defining functions.

+
def addTwo(x : Int) -> Int:    return x + 2
+

You can also define type aliases:

+
from typing import List
+
+Vector = List[float]Matrix = List[Vector]
+
+def addMatrix(a : Matrix, b : Matrix) -> Matrix:
+    result = []
+    for i,row in enumerate(a):
+        result_row =[]
+        for j, col in enumerate(row):
+            result_row += [a[i][j] + b[i][j]]
+        result += [result_row]
+    return result
+
+x = [[1.0, 0.0], [0.0, 1.0]]
+y = [[2.0, 1.0], [0.0, -2.0]]
+z = addMatrix(x, y)
+

Although not compulsory, type annotations can make your code easier to understand.

+

They also allow you to use type checking tools to catch those stray TypeErrors before runtime. Probably worthwhile if you are working on large, complex projects!

+

uuid

+

A quick and easy way to generate Universally Unique IDs (or ‘UUIDs’) is through the Python Standard Library’s uuid module.

+
import uuid
+
+user_id = uuid.uuid4()
+print(user_id)
+

This creates a randomized 128-bit number that will almost certainly be unique.

+

In fact, there are over 2¹²² possible UUIDs that can be generated. That’s over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000).

+

The probability of finding duplicates in a given set is extremely low. Even with a trillion UUIDs, the probability of a duplicate existing is much, much less than one-in-a-billion.

+

Pretty good for two lines of code.

+

Virtual environments

+

This is probably my favorite Python thing of all.

+

Chances are you are working on multiple Python projects at any one time. Unfortunately, sometimes two projects will rely on different versions of the same dependency. Which do you install on your system?

+

Luckily, Python’s support for virtual environments lets you have the best of both worlds. From the command line:

+
python -m venv my-project
+source my-project/bin/activate
+pip install all-the-modules 
+

Now you can have standalone versions and installations of Python running on the same machine. Sorted!

+

wikipedia

+

Wikipedia has a great API that allows users programmatic access to an unrivalled body of completely free knowledge and information.

+

The wikipedia module makes accessing this API almost embarrassingly convenient.

+
import wikipedia
+
+result = wikipedia.page('freeCodeCamp')
+print(result.summary)
+
+for link in result.links:
+    print(link)
+

Like the real site, the module provides support for multiple languages, page disambiguation, random page retrieval, and even has a donate() method.

+

xkcd

+

Humour is a key feature of the Python language — after all, it is named after the British comedy sketch show Monty Python’s Flying Circus. Much of Python’s official documentation references the show’s most famous sketches.

+

The sense of humour isn’t restricted to the docs, though. Have a go running the line below:

+
import antigravity
+

Never change, Python. Never change.

+

YAML

+

YAML stands for ‘YAML Ain’t Markup Language’. It is a data formatting language, and is a superset of JSON.

+

Unlike JSON, it can store more complex objects and refer to its own elements. You can also write comments, making it particularly suited to writing configuration files.

+

The PyYAML module lets you use YAML with Python. Install with:

+
$ pip install pyyaml
+

And then import into your projects:

+
import yaml
+

PyYAML lets you store Python objects of any datatype, and instances of any user-defined classes also.

+

zip

+

One last trick for ya, and it really is a cool one. Ever needed to form a dictionary out of two lists?

+
keys = ['a', 'b', 'c']
+vals = [1, 2, 3]
+zipped = dict(zip(keys, vals))
+

The zip() inbuilt function takes a number of iterable objects and returns a list of tuples. Each tuple groups the elements of the input objects by their positional index.

+

You can also ‘unzip’ objects by calling *zip() on them.

+

Thanks for reading!

+

So there you have it, an A-Z of Python tricks — hopefully you’ve found something useful for your next project.

+

Python’s a very diverse and well-developed language, so there’s bound to be many features I haven’t got round to including.

+

Please share any of your own favorite Python tricks by leaving a response below!

+

Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

+

Source

+ + diff --git a/Readings/An A-Z of useful Python tricks.md b/Readings/An A-Z of useful Python tricks.md new file mode 100644 index 00000000..0ad78839 --- /dev/null +++ b/Readings/An A-Z of useful Python tricks.md @@ -0,0 +1,431 @@ +# An A-Z of useful Python tricks + +> Python is one of the world’s most popular, in-demand programming languages. This is for many reasons: it’s easy to learnit’s super versatileit has a huge range of modules and librariesI use Python daily as an integral part of my job as a data scientist. Along the way, + +Python is one of the world’s most popular, in-demand programming languages. This is for many reasons: + +* it’s easy to learn +* it’s super versatile +* it has a huge range of modules and libraries + +I use Python daily as an integral part of my job as a data scientist. Along the way, I’ve picked up a few useful tricks and tips. + +Here, I’ve shared some of them in an A-Z format. + +Most of these ‘tricks’ are things I’ve used or stumbled upon during my day-to-day work. Some I found while browsing the [Python Standard Library docs](https://docs.python.org/3/library/index.html). A few others I found searching through [PyPi](https://pypi.org/search/). + +However, credit where it is due — I discovered four or five of them over at [awesome-python.com](https://awesome-python.com/). This is a curated list of hundreds of interesting Python tools and modules. It is worth browsing for inspiration! + +#### all or any + +One of the many reasons why Python is such a popular language is because it is readable and expressive. + +It is often joked that Python is ‘[executable pseudocode](https://www.artima.com/intv/tippingP.html)’. But when you can write code like this, it’s difficult to argue otherwise: + + x = [True, True, False] + if any(x): + print("At least one True") + if all(x): + print("Not one False") + if any(x) and not all(x): + print("At least one True and one False") + +#### bashplotlib + +You want to plot graphs in the console? + + $ pip install bashplotlib + +You can have graphs in the console. + +#### collections + +Python has some great default datatypes, but sometimes they just won’t behave exactly how you’d like them to. + +Luckily, the Python Standard Library offers [the collections module](https://docs.python.org/3/library/collections.html). This handy add-on provides you with further datatypes. + + from collections import OrderedDict, Counter + + + x = OrderedDict(a=1, b=2, c=3) + + + y = Counter("Hello World!") + + + +#### dir + +Ever wondered how you can look inside a Python object and see what attributes it has? Of course you have. + +From the command line: + + >>> dir() + >>> dir("Hello World") + >>> dir(dir) + +This can be a really useful feature when running Python interactively, and for dynamically exploring objects and modules you are working with. + +Read more [here](https://docs.python.org/3/library/functions.html#dir). + +#### emoji + +Yes, [really](https://pypi.org/project/emoji/). + + $ pip install emoji + +Don’t pretend you’re not gonna try it out… + + from emoji import emojize + print(emojize(":thumbs_up:")) + +? + +#### from \_\_future\_\_ import + +One consequence of Python’s popularity is that there are always new versions under development. New versions mean new features — unless your version is out-of-date. + +Fear not, however. The [\_\_future\_\_ module](https://docs.python.org/2/library/__future__.html) lets you import functionality from future versions of Python. It’s literally like time travel, or magic, or something. + + from __future__ import print_function + print("Hello World!") + +Why not have a go [importing curly braces](https://stackoverflow.com/questions/17811855/syntax-error-not-a-chance)? + +#### geopy + +Geography can be a challenging terrain for programmers to navigate (ha, a pun!). But [the geopy module](https://geopy.readthedocs.io/en/latest/) makes it unnervingly easy. + + $ pip install geopy + +It works by abstracting the APIs of a range of different geocoding services. It enables you to obtain a place’s full street address, latitude, longitude, and even altitude. + +There’s also a useful distance class. It calculates the distance between two locations in your favorite unit of measurement. + + from geopy import GoogleV3 + + place = "221b Baker Street, London" + location = GoogleV3().geocode(place) + print(location.address) + print(location.location) + +#### howdoi + +Stuck on a coding problem and can’t remember that solution you saw before? Need to check StackOverflow, but don’t want to leave the terminal? + +Then you need [this useful command line tool](https://github.com/gleitz/howdoi). + + $ pip install howdoi + +Ask it whatever question you have, and it’ll do its best to return an answer. + + $ howdoi vertical align css + $ howdoi for loop in java + $ howdoi undo commits in git + +Be aware though — it scrapes code from top answers from StackOverflow. It might not always give the most helpful information… + + $ howdoi exit vim + +#### inspect + +Python’s [inspect module](https://docs.python.org/3/library/inspect.html) is great for understanding what is happening behind the scenes. You can even call its methods on itself! + +The code sample below uses `inspect.getsource()` to print its own source code. It also uses `inspect.getmodule()` to print the module in which it was defined. + +The last line of code prints out its own line number. + + import inspect + + print(inspect.getsource(inspect.getsource)) + print(inspect.getmodule(inspect.getmodule)) + print(inspect.currentframe().f_lineno) + +Of course, beyond these trivial uses, the inspect module can prove useful for understanding what your code is doing. You could also use it for writing self-documenting code. + +#### Jedi + +The Jedi library is an autocompletion and code analysis library. It makes writing code quicker and more productive. + +Unless you’re developing your own IDE, you’ll probably be most interested in [using Jedi as an editor plugin](https://jedi.readthedocs.io/en/latest/docs/usage.html). Luckily, there are already loads available! + +You may already be using Jedi, however. The IPython project makes use of Jedi for its code autocompletion functionality. + +#### \*\*kwargs + +When learning any language, there are many milestones along the way. With Python, understanding the mysterious `**kwargs` syntax probably counts as one. + +The double-asterisk in front of a dictionary object lets you pass the contents of that dictionary as [named arguments to a function](https://docs.python.org/3/tutorial/controlflow.html#keyword-arguments). + +The dictionary’s keys are the argument names, and the values are the values passed to the function. You don’t even need to call it `kwargs`! + + dictionary = {"a": 1, "b": 2} + + def someFunction(a, b): + print(a + b) + return + + + someFunction(**dictionary) + someFunction(a=1, b=2) + +This is useful when you want to write functions that can handle named arguments not defined in advance. + +#### List comprehensions + +One of my favourite things about programming in Python are its [list comprehensions](https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions). + +These expressions make it easy to write very clean code that reads almost like natural language. + +You can read more about how to use them [here](https://www.learnpython.org/en/List_Comprehensions). + + numbers = [1,2,3,4,5,6,7] + evens = [x for x in numbers if x % 2 is 0] + odds = [y for y in numbers if y not in evens] + + cities = ['London', 'Dublin', 'Oslo'] + + def visit(city): + print("Welcome to "+city) + for city in cities: + visit(city) + +#### map + +Python supports functional programming through a number of inbuilt features. One of the most useful is the `map()` function — especially in combination with [lambda functions](https://docs.python.org/3/tutorial/controlflow.html#lambda-expressions). + + x = [1, 2, 3] + y = map(lambda x : x + 1 , x) + + +In the example above, `map()` applies a simple lambda function to each element in `x`. It returns a map object, which can be converted to some iterable object such as a list or tuple. + +#### newspaper3k + +If you haven’t seen it already, then be prepared to have your mind blown by [Python’s newspaper module](https://pypi.org/project/newspaper3k/). + +It lets you retrieve news articles and associated meta-data from a range of leading international publications. You can retrieve images, text and author names. + +It even has some [inbuilt NLP functionality](https://newspaper.readthedocs.io/en/latest/user_guide/quickstart.html#performing-nlp-on-an-article). + +So if you were thinking of using BeautifulSoup or some other DIY webscraping library for your next project, save yourself the time and effort and `$ pip install newspaper3k` instead. + +#### Operator overloading + +Python provides support for [operator overloading](https://docs.python.org/3/reference/datamodel.html#special-method-names), which is one of those terms that make you sound like a legit computer scientist. + +It’s actually a simple concept. Ever wondered why Python lets you use the `+` operator to add numbers and also to concatenate strings? That’s operator overloading in action. + +You can define objects which use Python’s standard operator symbols in their own specific way. This lets you use them in contexts relevant to the objects you’re working with. + + class Thing: + def __init__(self, value): + self.__value = value + def __gt__(self, other): + return self.__value > other.__value + def __lt__(self, other): + return self.__value < other.__value + + something = Thing(100) + nothing = Thing(0) + + + something > nothing + + + something < nothing + + + something + nothing + +#### pprint + +Python’s default `print` function does its job. But try printing out any large, nested object, and the result is rather ugly. + +Here’s where the [Standard Library’s pretty-print module](https://docs.python.org/3/library/pprint.html) steps in. This prints out complex structured objects in an easy-to-read format. + +A must-have for any Python developer who works with non-trivial data structures. + + import requests + import pprint + + url = 'https://randomuser.me/api/?results=1' + users = requests.get(url).json() + pprint.pprint(users) + +#### Queue + +Python supports multithreading, and this is facilitated by the Standard Library’s Queue module. + +This module lets you implement queue data structures. These are data structures that let you add and retrieve entries according to a specific rule. + +‘First in, first out’ (or FIFO) queues let you retrieve objects in the order they were added. ‘Last in, first out’ (LIFO) queues let you access the most recently added objects first. + +Finally, priority queues let you retrieve objects according to the order in which they are sorted. + +[Here’s an example of how to use queues](https://www.tutorialspoint.com/python3/python_multithreading.htm) for multithreaded programming in Python. + +#### \_\_repr\_\_ + +When defining a class or an object in Python, it is useful to provide an ‘official’ way of representing that object as a string. For example: + + >>> file = open('file.txt', 'r') + >>> print(file) + + +This makes debugging code a lot easier. Add it to your class definitions as below: + + class someClass: + def __repr__(self): + return "" + + someInstance = someClass() + + + print(someInstance) + +#### sh + +Python makes a great scripting language. Sometimes using the standard os and subprocess libraries can be a bit of a headache. + +The [sh library](http://amoffat.github.io/sh/) provides a neat alternative. + +It lets you call any program as if it were an ordinary function — useful for automating workflows and tasks, all from within Python. + + import sh + sh.pwd() + sh.mkdir('new_folder') + sh.touch('new_file.txt') + sh.whoami() + sh.echo('This is great!') + +#### Type hints + +Python is a dynamically-typed language. You don’t need to specify datatypes when you define variables, functions, classes etc. + +This allows for rapid development times. However, there are few things more annoying than a runtime error caused by a simple typing issue. + +[Since Python 3.5](https://docs.python.org/3/library/typing.html), you have the option to provide type hints when defining functions. + + def addTwo(x : Int) -> Int: return x + 2 + +You can also define type aliases: + + from typing import List + + Vector = List[float]Matrix = List[Vector] + + def addMatrix(a : Matrix, b : Matrix) -> Matrix: + result = [] + for i,row in enumerate(a): + result_row =[] + for j, col in enumerate(row): + result_row += [a[i][j] + b[i][j]] + result += [result_row] + return result + + x = [[1.0, 0.0], [0.0, 1.0]] + y = [[2.0, 1.0], [0.0, -2.0]] + z = addMatrix(x, y) + +Although not compulsory, type annotations can make your code easier to understand. + +They also allow you to use type checking tools to catch those stray TypeErrors before runtime. Probably worthwhile if you are working on large, complex projects! + +#### uuid + +A quick and easy way to generate Universally Unique IDs (or ‘UUIDs’) is through the [Python Standard Library’s uuid module](https://docs.python.org/3/library/uuid.html). + + import uuid + + user_id = uuid.uuid4() + print(user_id) + +This creates a randomized 128-bit number that will almost certainly be unique. + +In fact, there are over 2¹²² possible UUIDs that can be generated. That’s over five undecillion (or 5,000,000,000,000,000,000,000,000,000,000,000,000). + +The probability of finding duplicates in a given set is extremely low. Even with a trillion UUIDs, the probability of a duplicate existing is much, much less than one-in-a-billion. + +Pretty good for two lines of code. + +#### Virtual environments + +This is probably my favorite Python thing of all. + +Chances are you are working on multiple Python projects at any one time. Unfortunately, sometimes two projects will rely on different versions of the same dependency. Which do you install on your system? + +Luckily, Python’s [support for virtual environments](https://docs.python.org/3/tutorial/venv.html) lets you have the best of both worlds. From the command line: + + python -m venv my-project + source my-project/bin/activate + pip install all-the-modules + +Now you can have standalone versions and installations of Python running on the same machine. Sorted! + +#### wikipedia + +Wikipedia has a great API that allows users programmatic access to an unrivalled body of completely free knowledge and information. + +The [wikipedia module](https://wikipedia.readthedocs.io/en/latest/quickstart.html) makes accessing this API almost embarrassingly convenient. + + import wikipedia + + result = wikipedia.page('freeCodeCamp') + print(result.summary) + + for link in result.links: + print(link) + +Like the real site, the module provides support for multiple languages, page disambiguation, random page retrieval, and even has a `donate()` method. + +#### xkcd + +Humour is a key feature of the Python language — after all, it is named after the British comedy sketch show [Monty Python’s Flying Circus](https://en.wikipedia.org/wiki/Monty_Python%27s_Flying_Circus). Much of Python’s official documentation references the show’s most famous sketches. + +The sense of humour isn’t restricted to the docs, though. Have a go running the line below: + + import antigravity + +Never change, Python. Never change. + +#### YAML + +YAML stands for ‘[YAML Ain’t Markup Language](http://yaml.org/)’. It is a data formatting language, and is a superset of JSON. + +Unlike JSON, it can store more complex objects and refer to its own elements. You can also write comments, making it particularly suited to writing configuration files. + +The [PyYAML module](https://pyyaml.org/wiki/PyYAMLDocumentation) lets you use YAML with Python. Install with: + + $ pip install pyyaml + +And then import into your projects: + + import yaml + +PyYAML lets you store Python objects of any datatype, and instances of any user-defined classes also. + +#### zip + +One last trick for ya, and it really is a cool one. Ever needed to form a dictionary out of two lists? + + keys = ['a', 'b', 'c'] + vals = [1, 2, 3] + zipped = dict(zip(keys, vals)) + +The `zip()` inbuilt function takes a number of iterable objects and returns a list of tuples. Each tuple groups the elements of the input objects by their positional index. + +You can also ‘unzip’ objects by calling `*zip()` on them. + +#### Thanks for reading! + +So there you have it, an A-Z of Python tricks — hopefully you’ve found something useful for your next project. + +Python’s a very diverse and well-developed language, so there’s bound to be many features I haven’t got round to including. + +Please share any of your own favorite Python tricks by leaving a response below! + +Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn) + + +[Source](https://www.freecodecamp.org/news/an-a-z-of-useful-python-tricks-b467524ee747/) \ No newline at end of file diff --git a/Readings/Automate-Boring-Stuff-with-Python.html b/Readings/Automate-Boring-Stuff-with-Python.html new file mode 100644 index 00000000..961228ea --- /dev/null +++ b/Readings/Automate-Boring-Stuff-with-Python.html @@ -0,0 +1,470 @@ + + + + + + + Automate-Boring-Stuff-with-Python + + + +

Automate the Boring Stuff with Python

+
+

Variables are a fine way to store data while your program is running, but if you want your data to persist even after your program has finished, you need to save it to a file. You can think of a file’s contents as a single string value, potentially gigabytes in size. In this chapter, you will learn how to use Python to create, read, and save files on the hard drive.

+
+

Variables are a fine way to store data while your program is running, but if you want your data to persist even after your program has finished, you need to save it to a file. You can think of a file’s contents as a single string value, potentially gigabytes in size. In this chapter, you will learn how to use Python to create, read, and save files on the hard drive.

+

A file has two key properties: a filename (usually written as one word) and a path. The path specifies the location of a file on the computer. For example, there is a file on my Windows 7 laptop with the filename project.docx in the path C:\Users\asweigart\Documents. The part of the filename after the last period is called the file’s extension and tells you a file’s type. project.docx is a Word document, and Users, asweigart, and Documents all refer to folders (also called directories). Folders can contain files and other folders. For example, project.docx is in the Documents folder, which is inside the asweigart folder, which is inside the Users folder. Figure 8-1 shows this folder organization.

+
+A file in a hierarchy of folders
A file in a hierarchy of folders
+
+

Figure 8-1. A file in a hierarchy of folders

+

The C:\ part of the path is the root folder, which contains all other folders. On Windows, the root folder is named C:\ and is also called the C: drive. On OS X and Linux, the root folder is /. In this book, I’ll be using the Windows-style root folder, C:\. If you are entering the interactive shell examples on OS X or Linux, enter / instead.

+

Additional volumes, such as a DVD drive or USB thumb drive, will appear differently on different operating systems. On Windows, they appear as new, lettered root drives, such as D:\ or E:\. On OS X, they appear as new folders under the /Volumes folder. On Linux, they appear as new folders under the /mnt (“mount”) folder. Also note that while folder names and filenames are not case sensitive on Windows and OS X, they are case sensitive on Linux.

+

Backslash on Windows and Forward Slash on OS X and Linux

+

On Windows, paths are written using backslashes (\) as the separator between folder names. OS X and Linux, however, use the forward slash (/) as their path separator. If you want your programs to work on all operating systems, you will have to write your Python scripts to handle both cases.

+

Fortunately, this is simple to do with the os.path.join() function. If you pass it the string values of individual file and folder names in your path, os.path.join() will return a string with a file path using the correct path separators. Enter the following into the interactive shell:

+

>>> import os >>> os.path.join(‘usr’, ‘bin’, ‘spam’) ‘usr\\bin\\spam’

+

I’m running these interactive shell examples on Windows, so os.path.join('usr', 'bin', 'spam') returned 'usr\\bin\\spam'. (Notice that the backslashes are doubled because each backslash needs to be escaped by another backslash character.) If I had called this function on OS X or Linux, the string would have been 'usr/bin/spam'.

+

The os.path.join() function is helpful if you need to create strings for filenames. These strings will be passed to several of the file-related functions introduced in this chapter. For example, the following example joins names from a list of filenames to the end of a folder’s name:

+

>>> myFiles = [‘accounts.txt’, ‘details.csv’, ‘invite.docx’] >>> for filename in myFiles: print(os.path.join(‘C:\\Users\\asweigart’, filename)) C:\Users\asweigart\accounts.txt C:\Users\asweigart\details.csv C:\Users\asweigart\invite.docx

+

The Current Working Directory

+

Every program that runs on your computer has a current working directory, or cwd. Any filenames or paths that do not begin with the root folder are assumed to be under the current working directory. You can get the current working directory as a string value with the os.getcwd() function and change it with os.chdir(). Enter the following into the interactive shell:

+

>>> import os >>> os.getcwd() ‘C:\\Python34’ >>> os.chdir(‘C:\\Windows\\System32’) >>> os.getcwd() ‘C:\\Windows\\System32’

+

Here, the current working directory is set to C:\Python34, so the filename project.docx refers to C:\Python34\project.docx. When we change the current working directory to C:\Windows, project.docx is interpreted as C:\ Windows\project.docx.

+

Python will display an error if you try to change to a directory that does not exist.

+

>>> os.chdir(‘C:\\ThisFolderDoesNotExist’) Traceback (most recent call last): File “<pyshell#18>”, line 1, in os.chdir(‘C:\\ThisFolderDoesNotExist’) FileNotFoundError: [WinError 2] The system cannot find the file specified: ‘C:\\ThisFolderDoesNotExist’

+

Note

+

While folder is the more modern name for directory, note that current working directory (or just working directory_) is the standard term, not current working folder._

+

Absolute vs. Relative Paths

+

There are two ways to specify a file path.

+
    +
  • An absolute path, which always begins with the root folder

  • +
  • A relative path, which is relative to the program’s current working directory

  • +
+

There are also the dot (.) and dot-dot (..) folders. These are not real folders but special names that can be used in a path. A single period (“dot”) for a folder name is shorthand for “this directory.” Two periods (“dot-dot”) means “the parent folder.”

+

Figure 8-2 is an example of some folders and files. When the current working directory is set to C:\bacon, the relative paths for the other folders and files are set as they are in the figure.

+
+The relative paths for folders and files in the working directory C:
The relative paths for folders and files in the working directory C:
+
+

Figure 8-2. The relative paths for folders and files in the working directory C:\bacon

+

The .\ at the start of a relative path is optional. For example, .\spam.txt and spam.txt refer to the same file.

+

Creating New Folders with os.makedirs()

+

Your programs can create new folders (directories) with the os.makedirs() function. Enter the following into the interactive shell:

+

>>> import os >>> os.makedirs(‘C:\\delicious\\walnut\\waffles’)

+

This will create not just the C:\delicious folder but also a walnut folder inside C:\delicious and a waffles folder inside C:\delicious\walnut. That is, os.makedirs() will create any necessary intermediate folders in order to ensure that the full path exists. Figure 8-3 shows this hierarchy of folders.

+
+The result of os.makedirs(‘C:\delicious \walnut\waffles’)
The result of os.makedirs(‘C:\delicious \walnut\waffles’)
+
+

Figure 8-3. The result of os.makedirs('C:\\delicious \\walnut\\waffles')

+

The os.path module contains many helpful functions related to filenames and file paths. For instance, you’ve already used os.path.join() to build paths in a way that will work on any operating system. Since os.path is a module inside the os module, you can import it by simply running import os. Whenever your programs need to work with files, folders, or file paths, you can refer to the short examples in this section. The full documentation for the os.path module is on the Python website at http://docs.python.org/3/library/os.path.html.

+

Note

+

Most of the examples that follow in this section will require the os module, so remember to import it at the beginning of any script you write and any time you restart IDLE. Otherwise, you’ll get a NameError: name 'os' is not defined error message.

+

Handling Absolute and Relative Paths

+

The os.path module provides functions for returning the absolute path of a relative path and for checking whether a given path is an absolute path.

+
    +
  • Calling os.path.abspath(path) will return a string of the absolute path of the argument. This is an easy way to convert a relative path into an absolute one.

  • +
  • Calling os.path.isabs(path) will return True if the argument is an absolute path and False if it is a relative path.

  • +
  • Calling os.path.relpath(path, start) will return a string of a relative path from the start path to path. If start is not provided, the current working directory is used as the start path.

  • +
+

Try these functions in the interactive shell:

+

>>> os.path.abspath(‘.’) ‘C:\\Python34’ >>> os.path.abspath(‘.\\Scripts’) ‘C:\\Python34\\Scripts’ >>> os.path.isabs(‘.’) False >>> os.path.isabs(os.path.abspath(‘.’)) True

+

Since C:\Python34 was the working directory when os.path.abspath() was called, the “single-dot” folder represents the absolute path 'C:\\Python34'.

+

Note

+

Since your system probably has different files and folders on it than mine, you won’t be able to follow every example in this chapter exactly. Still, try to follow along using folders that exist on your computer.

+

Enter the following calls to os.path.relpath() into the interactive shell:

+

>>> os.path.relpath(‘C:\\Windows’, ‘C:\\’) ‘Windows’ >>> os.path.relpath(‘C:\\Windows’, ‘C:\\spam\\eggs’) ‘..\\..\\Windows’ >>> os.getcwd() ‘C:\\Python34’

+

Calling os.path.dirname(path) will return a string of everything that comes before the last slash in the path argument. Calling os.path.basename(path) will return a string of everything that comes after the last slash in the path argument. The dir name and base name of a path are outlined in Figure 8-4.

+
+The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash.
The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash.
+
+

Figure 8-4. The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash.

+

For example, enter the following into the interactive shell:

+

>>> path = ‘C:\\Windows\\System32\\calc.exe’ >>> os.path.basename(path) ‘calc.exe’ >>> os.path.dirname(path) ‘C:\\Windows\\System32’

+

If you need a path’s dir name and base name together, you can just call os.path.split() to get a tuple value with these two strings, like so:

+

>>> calcFilePath = ‘C:\\Windows\\System32\\calc.exe’ >>> os.path.split(calcFilePath) (‘C:\\Windows\\System32’, ‘calc.exe’)

+

Notice that you could create the same tuple by calling os.path.dirname() and os.path.basename() and placing their return values in a tuple.

+

>>> (os.path.dirname(calcFilePath), os.path.basename(calcFilePath)) (‘C:\\Windows\\System32’, ‘calc.exe’)

+

But os.path.split() is a nice shortcut if you need both values.

+

Also, note that os.path.split() does not take a file path and return a list of strings of each folder. For that, use the split() string method and split on the string in os.sep. Recall from earlier that the os.sep variable is set to the correct folder-separating slash for the computer running the program.

+

For example, enter the following into the interactive shell:

+

>>> calcFilePath.split(os.path.sep) [‘C:’, ‘Windows’, ‘System32’, ‘calc.exe’]

+

On OS X and Linux systems, there will be a blank string at the start of the returned list:

+

>>> ‘/usr/bin’.split(os.path.sep) [’‘, ’usr’, ‘bin’]

+

The split() string method will work to return a list of each part of the path. It will work on any operating system if you pass it os.path.sep.

+

Finding File Sizes and Folder Contents

+

Once you have ways of handling file paths, you can then start gathering information about specific files and folders. The os.path module provides functions for finding the size of a file in bytes and the files and folders inside a given folder.

+
    +
  • Calling os.path.getsize(path) will return the size in bytes of the file in the path argument.

  • +
  • Calling os.listdir(path) will return a list of filename strings for each file in the path argument. (Note that this function is in the os module, not os.path.)

  • +
+

Here’s what I get when I try these functions in the interactive shell:

+

>>> os.path.getsize(‘C:\\Windows\\System32\\calc.exe’) 776192 >>> os.listdir(‘C:\\Windows\\System32’) [‘0409’, ‘12520437.cpx’, ‘12520850.cpx’, ‘5U877.ax’, ‘aaclient.dll’, –snip-- ‘xwtpdui.dll’, ‘xwtpw32.dll’, ‘zh-CN’, ‘zh-HK’, ‘zh-TW’, ‘zipfldr.dll’]

+

As you can see, the calc.exe program on my computer is 776,192 bytes in size, and I have a lot of files in C:\Windows\system32. If I want to find the total size of all the files in this directory, I can use os.path.getsize() and os.listdir() together.

+

>>> totalSize = 0 >>> for filename in os.listdir(‘C:\\Windows\\System32’): totalSize = totalSize + os.path.getsize(os.path.join(‘C:\\Windows\\System32’, filename))

+
+
+
+

print(totalSize) 1117846456

+
+
+
+

As I loop over each filename in the C:\Windows\System32 folder, the totalSize variable is incremented by the size of each file. Notice how when I call os.path.getsize(), I use os.path.join() to join the folder name with the current filename. The integer that os.path.getsize() returns is added to the value of totalSize. After looping through all the files, I print totalSize to see the total size of the C:\Windows\System32 folder.

+

Many Python functions will crash with an error if you supply them with a path that does not exist. The os.path module provides functions to check whether a given path exists and whether it is a file or folder.

+
    +
  • Calling os.path.exists(path) will return True if the file or folder referred to in the argument exists and will return False if it does not exist.

  • +
  • Calling os.path.isfile(path) will return True if the path argument exists and is a file and will return False otherwise.

  • +
  • Calling os.path.isdir(path) will return True if the path argument exists and is a folder and will return False otherwise.

  • +
+

Here’s what I get when I try these functions in the interactive shell:

+

>>> os.path.exists(‘C:\\Windows’) True >>> os.path.exists(‘C:\\some_made_up_folder’) False >>> os.path.isdir(‘C:\\Windows\\System32’) True >>> os.path.isfile(‘C:\\Windows\\System32’) False >>> os.path.isdir(‘C:\\Windows\\System32\\calc.exe’) False >>> os.path.isfile(‘C:\\Windows\\System32\\calc.exe’) True

+

You can determine whether there is a DVD or flash drive currently attached to the computer by checking for it with the os.path.exists() function. For instance, if I wanted to check for a flash drive with the volume named D:\ on my Windows computer, I could do that with the following:

+

>>> os.path.exists(‘D:\\’) False

+

Oops! It looks like I forgot to plug in my flash drive.

+

Once you are comfortable working with folders and relative paths, you’ll be able to specify the location of files to read and write. The functions covered in the next few sections will apply to plaintext files. Plaintext files contain only basic text characters and do not include font, size, or color information. Text files with the .txt extension or Python script files with the .py extension are examples of plaintext files. These can be opened with Windows’s Notepad or OS X’s TextEdit application. Your programs can easily read the contents of plaintext files and treat them as an ordinary string value.

+

Binary files are all other file types, such as word processing documents, PDFs, images, spreadsheets, and executable programs. If you open a binary file in Notepad or TextEdit, it will look like scrambled nonsense, like in Figure 8-5.

+
+The Windows calc.exe program opened in Notepad
The Windows calc.exe program opened in Notepad
+
+

Figure 8-5. The Windows calc.exe program opened in Notepad

+

Since every different type of binary file must be handled in its own way, this book will not go into reading and writing raw binary files directly. Fortunately, many modules make working with binary files easier—you will explore one of them, the shelve module, later in this chapter.

+

There are three steps to reading or writing files in Python.

+
    +
  1. Call the open() function to return a File object.

  2. +
  3. Call the read() or write() method on the File object.

  4. +
  5. Close the file by calling the close() method on the File object.

  6. +
+

Opening Files with the open() Function

+

To open a file with the open() function, you pass it a string path indicating the file you want to open; it can be either an absolute or relative path. The open() function returns a File object.

+

Try it by creating a text file named hello.txt using Notepad or TextEdit. Type Hello world! as the content of this text file and save it in your user home folder. Then, if you’re using Windows, enter the following into the interactive shell:

+

>>> helloFile = open(‘C:\\Users\\your_home_folder\\hello.txt’)

+

If you’re using OS X, enter the following into the interactive shell instead:

+

>>> helloFile = open(‘/Users/your_home_folder/hello.txt’)

+

Make sure to replace your_home_folder with your computer username. For example, my username is asweigart, so I’d enter 'C:\\Users\\asweigart\\ hello.txt' on Windows.

+

Both these commands will open the file in “reading plaintext” mode, or read mode for short. When a file is opened in read mode, Python lets you only read data from the file; you can’t write or modify it in any way. Read mode is the default mode for files you open in Python. But if you don’t want to rely on Python’s defaults, you can explicitly specify the mode by passing the string value 'r' as a second argument to open(). So open('/Users/asweigart/ hello.txt', 'r') and open('/Users/asweigart/hello.txt') do the same thing.

+

The call to open() returns a File object. A File object represents a file on your computer; it is simply another type of value in Python, much like the lists and dictionaries you’re already familiar with. In the previous example, you stored the File object in the variable helloFile. Now, whenever you want to read from or write to the file, you can do so by calling methods on the File object in helloFile.

+

Reading the Contents of Files

+

Now that you have a File object, you can start reading from it. If you want to read the entire contents of a file as a string value, use the File object’s read() method. Let’s continue with the hello.txt File object you stored in helloFile. Enter the following into the interactive shell:

+

>>> helloContent = helloFile.read() >>> helloContent ‘Hello world!’

+

If you think of the contents of a file as a single large string value, the read() method returns the string that is stored in the file.

+

Alternatively, you can use the readlines() method to get a list of string values from the file, one string for each line of text. For example, create a file named sonnet29.txt in the same directory as hello.txt and write the following text in it:

+

When, in disgrace with fortune and men’s eyes, I all alone beweep my outcast state, And trouble deaf heaven with my bootless cries, And look upon myself and curse my fate,

+

Make sure to separate the four lines with line breaks. Then enter the following into the interactive shell:

+

>>> sonnetFile = open(‘sonnet29.txt’) >>> sonnetFile.readlines() [When, in disgrace with fortune and men’s eyes,\n’, ’ I all alone beweep my outcast state,\n’, And trouble deaf heaven with my bootless cries,\n’, And look upon myself and curse my fate,’]

+

Note that each of the string values ends with a newline character, \n, except for the last line of the file. A list of strings is often easier to work with than a single large string value.

+

Python allows you to write content to a file in a way similar to how the print() function “writes” strings to the screen. You can’t write to a file you’ve opened in read mode, though. Instead, you need to open it in “write plaintext” mode or “append plaintext” mode, or write mode and append mode for short.

+

Write mode will overwrite the existing file and start from scratch, just like when you overwrite a variable’s value with a new value. Pass 'w' as the second argument to open() to open the file in write mode. Append mode, on the other hand, will append text to the end of the existing file. You can think of this as appending to a list in a variable, rather than overwriting the variable altogether. Pass 'a' as the second argument to open() to open the file in append mode.

+

If the filename passed to open() does not exist, both write and append mode will create a new, blank file. After reading or writing a file, call the close() method before opening the file again.

+

Let’s put these concepts together. Enter the following into the interactive shell:

+

>>> baconFile = open(‘bacon.txt’, ‘w’) >>> baconFile.write(‘Hello world!\n’) 13 >>> baconFile.close() >>> baconFile = open(‘bacon.txt’, ‘a’) >>> baconFile.write(‘Bacon is not a vegetable.’) 25 >>> baconFile.close() >>> baconFile = open(‘bacon.txt’) >>> content = baconFile.read() >>> baconFile.close() >>> print(content) Hello world! Bacon is not a vegetable.

+

First, we open bacon.txt in write mode. Since there isn’t a bacon.txt yet, Python creates one. Calling write() on the opened file and passing write() the string argument 'Hello world! /n' writes the string to the file and returns the number of characters written, including the newline. Then we close the file.

+

To add text to the existing contents of the file instead of replacing the string we just wrote, we open the file in append mode. We write 'Bacon is not a vegetable.' to the file and close it. Finally, to print the file contents to the screen, we open the file in its default read mode, call read(), store the resulting File object in content, close the file, and print content.

+

Note that the write() method does not automatically add a newline character to the end of the string like the print() function does. You will have to add this character yourself.

+

You can save variables in your Python programs to binary shelf files using the shelve module. This way, your program can restore data to variables from the hard drive. The shelve module will let you add Save and Open features to your program. For example, if you ran a program and entered some configuration settings, you could save those settings to a shelf file and then have the program load them the next time it is run.

+

Enter the following into the interactive shell:

+

>>> import shelve >>> shelfFile = shelve.open(‘mydata’) >>> cats = [‘Zophie’, ‘Pooka’, ‘Simon’] >>> shelfFile[‘cats’] = cats >>> shelfFile.close()

+

To read and write data using the shelve module, you first import shelve. Call shelve.open() and pass it a filename, and then store the returned shelf value in a variable. You can make changes to the shelf value as if it were a dictionary. When you’re done, call close() on the shelf value. Here, our shelf value is stored in shelfFile. We create a list cats and write shelfFile['cats'] = cats to store the list in shelfFile as a value associated with the key 'cats' (like in a dictionary). Then we call close() on shelfFile.

+

After running the previous code on Windows, you will see three new files in the current working directory: mydata.bak, mydata.dat, and mydata.dir. On OS X, only a single mydata.db file will be created.

+

These binary files contain the data you stored in your shelf. The format of these binary files is not important; you only need to know what the shelve module does, not how it does it. The module frees you from worrying about how to store your program’s data to a file.

+

Your programs can use the shelve module to later reopen and retrieve the data from these shelf files. Shelf values don’t have to be opened in read or write mode—they can do both once opened. Enter the following into the interactive shell:

+

>>> shelfFile = shelve.open(‘mydata’) >>> type(shelfFile) <class ‘shelve.DbfilenameShelf’> >>> shelfFile[‘cats’] [‘Zophie’, ‘Pooka’, ‘Simon’] >>> shelfFile.close()

+

Here, we open the shelf files to check that our data was stored correctly. Entering shelfFile['cats'] returns the same list that we stored earlier, so we know that the list is correctly stored, and we call close().

+

Just like dictionaries, shelf values have keys() and values() methods that will return list-like values of the keys and values in the shelf. Since these methods return list-like values instead of true lists, you should pass them to the list() function to get them in list form. Enter the following into the interactive shell:

+

>>> shelfFile = shelve.open(‘mydata’) >>> list(shelfFile.keys()) [‘cats’] >>> list(shelfFile.values()) [[‘Zophie’, ‘Pooka’, ‘Simon’]] >>> shelfFile.close()

+

Plaintext is useful for creating files that you’ll read in a text editor such as Notepad or TextEdit, but if you want to save data from your Python programs, use the shelve module.

+

Recall from Pretty Printing that the pprint.pprint() function will “pretty print” the contents of a list or dictionary to the screen, while the pprint.pformat() function will return this same text as a string instead of printing it. Not only is this string formatted to be easy to read, but it is also syntactically correct Python code. Say you have a dictionary stored in a variable and you want to save this variable and its contents for future use. Using pprint.pformat() will give you a string that you can write to .py file. This file will be your very own module that you can import whenever you want to use the variable stored in it.

+

For example, enter the following into the interactive shell:

+

>>> import pprint >>> cats = [{‘name’: ‘Zophie’, ‘desc’: ‘chubby’}, {‘name’: ‘Pooka’, ‘desc’: ‘fluffy’}] >>> pprint.pformat(cats) “[{‘desc’: ‘chubby’, ‘name’: ‘Zophie’}, {‘desc’: ‘fluffy’, ‘name’: ‘Pooka’}]” >>> fileObj = open(‘myCats.py’, ‘w’) >>> fileObj.write(‘cats =’ + pprint.pformat(cats) + ‘\n’) 83 >>> fileObj.close()

+

Here, we import pprint to let us use pprint.pformat(). We have a list of dictionaries, stored in a variable cats. To keep the list in cats available even after we close the shell, we use pprint.pformat() to return it as a string. Once we have the data in cats as a string, it’s easy to write the string to a file, which we’ll call myCats.py.

+

The modules that an import statement imports are themselves just Python scripts. When the string from pprint.pformat() is saved to a .py file, the file is a module that can be imported just like any other.

+

And since Python scripts are themselves just text files with the .py file extension, your Python programs can even generate other Python programs. You can then import these files into scripts.

+

>>> import myCats >>> myCats.cats [{‘name’: ‘Zophie’, ‘desc’: ‘chubby’}, {‘name’: ‘Pooka’, ‘desc’: ‘fluffy’}] >>> myCats.cats[0] {‘name’: ‘Zophie’, ‘desc’: ‘chubby’} >>> myCats.cats[0][‘name’] ‘Zophie’

+

The benefit of creating a .py file (as opposed to saving variables with the shelve module) is that because it is a text file, the contents of the file can be read and modified by anyone with a simple text editor. For most applications, however, saving data using the shelve module is the preferred way to save variables to a file. Only basic data types such as integers, floats, strings, lists, and dictionaries can be written to a file as simple text. File objects, for example, cannot be encoded as text.

+

Say you’re a geography teacher with 35 students in your class and you want to give a pop quiz on US state capitals. Alas, your class has a few bad eggs in it, and you can’t trust the students not to cheat. You’d like to randomize the order of questions so that each quiz is unique, making it impossible for anyone to crib answers from anyone else. Of course, doing this by hand would be a lengthy and boring affair. Fortunately, you know some Python.

+

Here is what the program does:

+
    +
  • Creates 35 different quizzes.

  • +
  • Creates 50 multiple-choice questions for each quiz, in random order.

  • +
  • Provides the correct answer and three random wrong answers for each question, in random order.

  • +
  • Writes the quizzes to 35 text files.

  • +
  • Writes the answer keys to 35 text files.

  • +
+

This means the code will need to do the following:

+
    +
  • Store the states and their capitals in a dictionary.

  • +
  • Call open(), write(), and close() for the quiz and answer key text files.

  • +
  • Use random.shuffle() to randomize the order of the questions and multiple-choice options.

  • +
+

Step 1: Store the Quiz Data in a Dictionary

+

The first step is to create a skeleton script and fill it with your quiz data. Create a file named randomQuizGenerator.py, and make it look like the following:

+

#! python3 # randomQuizGenerator.py - Creates quizzes with questions and answers in # random order, along with the answer key.

+

❶ import random

+

# The quiz data. Keys are states and values are their capitals. ❷ capitals = {‘Alabama’: ‘Montgomery’, ‘Alaska’: ‘Juneau’, ‘Arizona’: ‘Phoenix’, ‘Arkansas’: ‘Little Rock’, ‘California’: ‘Sacramento’, ‘Colorado’: ‘Denver’, ‘Connecticut’: ‘Hartford’, ‘Delaware’: ‘Dover’, ‘Florida’: ‘Tallahassee’, ‘Georgia’: ‘Atlanta’, ‘Hawaii’: ‘Honolulu’, ‘Idaho’: ‘Boise’, ‘Illinois’: ‘Springfield’, ‘Indiana’: ‘Indianapolis’, ‘Iowa’: ‘Des Moines’, ‘Kansas’: ‘Topeka’, ‘Kentucky’: ‘Frankfort’, ‘Louisiana’: ‘Baton Rouge’, ‘Maine’: ‘Augusta’, ‘Maryland’: ‘Annapolis’, ‘Massachusetts’: ‘Boston’, ‘Michigan’: ‘Lansing’, ‘Minnesota’: ‘Saint Paul’, ‘Mississippi’: ‘Jackson’, ‘Missouri’: ‘Jefferson City’, ‘Montana’: ‘Helena’, ‘Nebraska’: ‘Lincoln’, ‘Nevada’: ‘Carson City’, ‘New Hampshire’: ‘Concord’, ‘New Jersey’: ‘Trenton’, ‘New Mexico’: ‘Santa Fe’, ‘New York’: ‘Albany’, ‘North Carolina’: ‘Raleigh’, ‘North Dakota’: ‘Bismarck’, ‘Ohio’: ‘Columbus’, ‘Oklahoma’: ‘Oklahoma City’, ‘Oregon’: ‘Salem’, ‘Pennsylvania’: ‘Harrisburg’, ‘Rhode Island’: ‘Providence’, ‘South Carolina’: ‘Columbia’, ‘South Dakota’: ‘Pierre’, ‘Tennessee’: ‘Nashville’, ‘Texas’: ‘Austin’, ‘Utah’: ‘Salt Lake City’, ‘Vermont’: ‘Montpelier’, ‘Virginia’: ‘Richmond’, ‘Washington’: ‘Olympia’, ‘West Virginia’: ‘Charleston’, ‘Wisconsin’: ‘Madison’, ‘Wyoming’: ‘Cheyenne’}

+

# Generate 35 quiz files. ❸ for quizNum in range(35): # TODO: Create the quiz and answer key files.

+
   # TODO: Write out the header for the quiz.
+
+   # TODO: Shuffle the order of the states.
+
+   # TODO: Loop through all 50 states, making a question for each.
+

Since this program will be randomly ordering the questions and answers, you’ll need to import the random module ❶ to make use of its functions. The capitals variable ❷ contains a dictionary with US states as keys and their capitals as values. And since you want to create 35 quizzes, the code that actually generates the quiz and answer key files (marked with TODO comments for now) will go inside a for loop that loops 35 times ❸. (This number can be changed to generate any number of quiz files.)

+

Step 2: Create the Quiz File and Shuffle the Question Order

+

Now it’s time to start filling in those TODOs.

+

The code in the loop will be repeated 35 times—once for each quiz—so you have to worry about only one quiz at a time within the loop. First you’ll create the actual quiz file. It needs to have a unique filename and should also have some kind of standard header in it, with places for the student to fill in a name, date, and class period. Then you’ll need to get a list of states in randomized order, which can be used later to create the questions and answers for the quiz.

+

Add the following lines of code to randomQuizGenerator.py:

+

#! python3 # randomQuizGenerator.py - Creates quizzes with questions and answers in # random order, along with the answer key.

+

snip--

+

# Generate 35 quiz files. for quizNum in range(35): # Create the quiz and answer key files.quizFile = open(‘capitalsquiz%s.txt’ % (quizNum + 1), ‘w’)answerKeyFile = open(‘capitalsquiz_answers%s.txt’ % (quizNum + 1), ‘w’)

+
   **\# Write out the header for the quiz.**
+

quizFile.write(‘Name:\n\nDate:\n\nPeriod:\n\n’) quizFile.write((’ ’ * 20) + ‘State Capitals Quiz (Form %s)’ % (quizNum + 1)) quizFile.write(‘\n\n’)

+
   **\# Shuffle the order of the states.**
+   **states = list(capitals.keys())**
+

random.shuffle(states)

+
   # TODO: Loop through all 50 states, making a question for each.
+

The filenames for the quizzes will be capitalsquiz.txt, where is a unique number for the quiz that comes from quizNum, the for loop’s counter. The answer key for capitalsquiz.txt will be stored in a text file named capitalsquiz_answers.txt. Each time through the loop, the %s placeholder in 'capitalsquiz%s.txt' and 'capitalsquiz_answers%s.txt' will be replaced by (quizNum + 1), so the first quiz and answer key created will be capitalsquiz1.txt and capitalsquiz_answers1.txt. These files will be created with calls to the open() function at ❶ and ❷, with 'w' as the second argument to open them in write mode.

+

The write() statements at ❸ create a quiz header for the student to fill out. Finally, a randomized list of US states is created with the help of the random.shuffle() function ❹, which randomly reorders the values in any list that is passed to it.

+

Step 3: Create the Answer Options

+

Now you need to generate the answer options for each question, which will be multiple choice from A to D. You’ll need to create another for loop—this one to generate the content for each of the 50 questions on the quiz. Then there will be a third for loop nested inside to generate the multiple-choice options for each question. Make your code look like the following:

+

#! python3 # randomQuizGenerator.py - Creates quizzes with questions and answers in # random order, along with the answer key.

+

snip--

+
   **\# Loop through all 50 states, making a question for each.**
+   **for questionNum in range(50):**
+
+       **\# Get right and wrong answers.**
+

correctAnswer = capitals[states[questionNum]]wrongAnswers = list(capitals.values())del wrongAnswers[wrongAnswers.index(correctAnswer)]wrongAnswers = random.sample(wrongAnswers, 3)answerOptions = wrongAnswers + [correctAnswer]random.shuffle(answerOptions)

+
       **\# TODO: Write the question and answer options to the quiz file.**
+
+       **\# TODO: Write the answer key to a file.**
+

The correct answer is easy to get—it’s stored as a value in the capitals dictionary ❶. This loop will loop through the states in the shuffled states list, from states[0] to states[49], find each state in capitals, and store that state’s corresponding capital in correctAnswer.

+

The list of possible wrong answers is trickier. You can get it by duplicating all the values in the capitals dictionary ❷, deleting the correct answer ❸, and selecting three random values from this list ❹. The random.sample() function makes it easy to do this selection. Its first argument is the list you want to select from; the second argument is the number of values you want to select. The full list of answer options is the combination of these three wrong answers with the correct answers ❺. Finally, the answers need to be randomized ❻ so that the correct response isn’t always choice D.

+

Step 4: Write Content to the Quiz and Answer Key Files

+

All that is left is to write the question to the quiz file and the answer to the answer key file. Make your code look like the following:

+

#! python3 # randomQuizGenerator.py - Creates quizzes with questions and answers in # random order, along with the answer key.

+

snip-- # Loop through all 50 states, making a question for each. for questionNum in range(50): –snip--

+
       **\# Write the question and the answer options to the quiz file.**
+       **quizFile.write('%s. What is the capital of %s?\\n' % (questionNum + 1,**
+           **states\[questionNum\]))**
+

for i in range(4):quizFile.write(’ %s. %s\n’ % (‘ABCD’[i], answerOptions[i])) quizFile.write(‘\n’)

+
       **\# Write the answer key to a file.**
+

answerKeyFile.write(‘%s. %s\n’ % (questionNum + 1, ‘ABCD’[ answerOptions.index(correctAnswer)])) quizFile.close() answerKeyFile.close()

+

A for loop that goes through integers 0 to 3 will write the answer options in the answerOptions list ❶. The expression 'ABCD'[i] at ❷ treats the string 'ABCD' as an array and will evaluate to 'A','B', 'C', and then 'D' on each respective iteration through the loop.

+

In the final line ❸, the expression answerOptions.index(correctAnswer) will find the integer index of the correct answer in the randomly ordered answer options, and 'ABCD'[answerOptions.index(correctAnswer)] will evaluate to the correct answer’s letter to be written to the answer key file.

+

After you run the program, this is how your capitalsquiz1.txt file will look, though of course your questions and answer options may be different from those shown here, depending on the outcome of your random.shuffle() calls:

+

Name:

+

Date:

+

Period:

+
                State Capitals Quiz (Form 1)
+
    +
  1. What is the capital of West Virginia? A. Hartford B. Santa Fe C. Harrisburg D. Charleston

  2. +
  3. What is the capital of Colorado? A. Raleigh B. Harrisburg C. Denver D. Lincoln

  4. +
+

snip--

+

The corresponding capitalsquiz_answers1.txt text file will look like this:

+

1. D 2. C 3. A 4. C –snip--

+

Say you have the boring task of filling out many forms in a web page or software with several text fields. The clipboard saves you from typing the same text over and over again. But only one thing can be on the clipboard at a time. If you have several different pieces of text that you need to copy and paste, you have to keep highlighting and copying the same few things over and over again.

+

You can write a Python program to keep track of multiple pieces of text. This “multiclipboard” will be named mcb.pyw (since “mcb” is shorter to type than “multiclipboard”). The .pyw extension means that Python won’t show a Terminal window when it runs this program. (See Appendix B for more details.)

+

The program will save each piece of clipboard text under a keyword. For example, when you run py mcb.pyw save spam, the current contents of the clipboard will be saved with the keyword spam. This text can later be loaded to the clipboard again by running py mcb.pyw spam. And if the user forgets what keywords they have, they can run py mcb.pyw list to copy a list of all keywords to the clipboard.

+

Here’s what the program does:

+
    +
  • The command line argument for the keyword is checked.

  • +
  • If the argument is save, then the clipboard contents are saved to the keyword.

  • +
  • If the argument is list, then all the keywords are copied to the clipboard.

  • +
  • Otherwise, the text for the keyword is copied to the clipboard.

  • +
+

This means the code will need to do the following:

+
    +
  • Read the command line arguments from sys.argv.

  • +
  • Read and write to the clipboard.

  • +
  • Save and load to a shelf file.

  • +
+

If you use Windows, you can easily run this script from the Run… window by creating a batch file named mcb.bat with the following content:

+

@pyw.exe C:\Python34\mcb.pyw %*

+

Step 1: Comments and Shelf Setup

+

Let’s start by making a skeleton script with some comments and basic setup. Make your code look like the following:

+

#! python3 # mcb.pyw - Saves and loads pieces of text to the clipboard. ❶ # Usage: py.exe mcb.pyw save - Saves clipboard to keyword. # py.exe mcb.pyw - Loads keyword to clipboard. # py.exe mcb.pyw list - Loads all keywords to clipboard.

+

❷ import shelve, pyperclip, sys

+

❸ mcbShelf = shelve.open(‘mcb’)

+

# TODO: Save clipboard content.

+

# TODO: List keywords and load content.

+

mcbShelf.close()

+

It’s common practice to put general usage information in comments at the top of the file ❶. If you ever forget how to run your script, you can always look at these comments for a reminder. Then you import your modules ❷. Copying and pasting will require the pyperclip module, and reading the command line arguments will require the sys module. The shelve module will also come in handy: Whenever the user wants to save a new piece of clipboard text, you’ll save it to a shelf file. Then, when the user wants to paste the text back to their clipboard, you’ll open the shelf file and load it back into your program. The shelf file will be named with the prefix mcb ❸.

+

Step 2: Save Clipboard Content with a Keyword

+

The program does different things depending on whether the user wants to save text to a keyword, load text into the clipboard, or list all the existing keywords. Let’s deal with that first case. Make your code look like the following:

+

#! python3 # mcb.pyw - Saves and loads pieces of text to the clipboard. –snip--

+

# Save clipboard content.if len(sys.argv) == 3 and sys.argv[1].lower() == ‘save’:mcbShelf[sys.argv[2]] = pyperclip.paste() elif len(sys.argv) == 2: ❸ # TODO: List keywords and load content.

+

mcbShelf.close()

+

If the first command line argument (which will always be at index 1 of the sys.argv list) is 'save' ❶, the second command line argument is the keyword for the current content of the clipboard. The keyword will be used as the key for mcbShelf, and the value will be the text currently on the clipboard ❷.

+

If there is only one command line argument, you will assume it is either 'list' or a keyword to load content onto the clipboard. You will implement that code later. For now, just put a TODO comment there ❸.

+

Step 3: List Keywords and Load a Keyword’s Content

+

Finally, let’s implement the two remaining cases: The user wants to load clipboard text in from a keyword, or they want a list of all available keywords. Make your code look like the following:

+

#! python3 # mcb.pyw - Saves and loads pieces of text to the clipboard. –snip--

+

# Save clipboard content. if len(sys.argv) == 3 and sys.argv[1].lower() == ‘save’: mcbShelf[sys.argv[2]] = pyperclip.paste() elif len(sys.argv) == 2: # List keywords and load content.if sys.argv[1].lower() == ‘list’:pyperclip.copy(str(list(mcbShelf.keys()))) elif sys.argv[1] in mcbShelf:pyperclip.copy(mcbShelf[sys.argv[1]])

+

mcbShelf.close()

+

If there is only one command line argument, first let’s check whether it’s 'list' ❶. If so, a string representation of the list of shelf keys will be copied to the clipboard ❷. The user can paste this list into an open text editor to read it.

+

Otherwise, you can assume the command line argument is a keyword. If this keyword exists in the mcbShelf shelf as a key, you can load the value onto the clipboard ❸.

+

And that’s it! Launching this program has different steps depending on what operating system your computer uses. See Appendix B for details for your operating system.

+

Recall the password locker program you created in Chapter 6 that stored the passwords in a dictionary. Updating the passwords required changing the source code of the program. This isn’t ideal because average users don’t feel comfortable changing source code to update their software. Also, every time you modify the source code to a program, you run the risk of accidentally introducing new bugs. By storing the data for a program in a different place than the code, you can make your programs easier for others to use and more resistant to bugs.

+

Files are organized into folders (also called directories), and a path describes the location of a file. Every program running on your computer has a current working directory, which allows you to specify file paths relative to the current location instead of always typing the full (or absolute) path. The os.path module has many functions for manipulating file paths.

+

Your programs can also directly interact with the contents of text files. The open() function can open these files to read in their contents as one large string (with the read() method) or as a list of strings (with the readlines() method). The open() function can open files in write or append mode to create new text files or add to existing text files, respectively.

+

In previous chapters, you used the clipboard as a way of getting large amounts of text into a program, rather than typing it all in. Now you can have your programs read files directly from the hard drive, which is a big improvement, since files are much less volatile than the clipboard.

+

In the next chapter, you will learn how to handle the files themselves, by copying them, deleting them, renaming them, moving them, and more.

+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

+Q: +

+
+

+

    +
  1. What is a relative path relative to? +

    +
+ +

+Q: +

+
+

+

    +
  1. What does an absolute path start with? +

    +
+ +

+Q: +

+
+

+

    +
  1. What do the os.getcwd() and os.chdir() functions do? +

    +
+ +

+Q: +

+
+

+

    +
  1. What are the . and .. folders? +

    +
+ +

+Q: +

+
+

+

    +
  1. In C:.txt, which part is the dir name, and which part is the base name? +

    +
+ +

+Q: +

+
+

+

    +
  1. What are the three “mode” arguments that can be passed to the open() function? +

    +
+ +

+Q: +

+
+

+

    +
  1. What happens if an existing file is opened in write mode? +

    +
+ +

+Q: +

+
+

+

    +
  1. What is the difference between the read() and readlines() methods? +

    +
+ +

+Q: +

+
+

+

    +
  1. What data structure does a shelf value resemble? +

    +
+ + + + + + + + + +

For practice, design and write the following programs.

+

Extending the Multiclipboard

+

Extend the multiclipboard program in this chapter so that it has a delete <keyword> command line argument that will delete a keyword from the shelf. Then add a delete command line argument that will delete all keywords.

+

Create a Mad Libs program that reads in text files and lets the user add their own text anywhere the word ADJECTIVE, NOUN, ADVERB, or VERB appears in the text file. For example, a text file may look like this:

+

The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was unaffected by these events.

+

The program would find these occurrences and prompt the user to replace them.

+

Enter an adjective: silly Enter a noun: chandelier Enter a verb: screamed Enter a noun: pickup truck

+

The following text file would then be created:

+

The silly panda walked to the chandelier and then screamed. A nearby pickup truck was unaffected by these events.

+

The results should be printed to the screen and saved to a new text file.

+

Write a program that opens all ._txt_ files in a folder and searches for any line that matches a user-supplied regular expression. The results should be printed to the screen.

+

Source

+ + diff --git a/Readings/Automate-Boring-Stuff-with-Python.md b/Readings/Automate-Boring-Stuff-with-Python.md new file mode 100644 index 00000000..ad1787ad --- /dev/null +++ b/Readings/Automate-Boring-Stuff-with-Python.md @@ -0,0 +1,748 @@ +# Automate the Boring Stuff with Python + +> Variables are a fine way to store data while your program is running, but if you want your data to persist even after your program has finished, you need to save it to a file. You can think of a file’s contents as a single string value, potentially gigabytes in size. In this chapter, you will learn how to use Python to create, read, and save files on the hard drive. + +Variables are a fine way to store data while your program is running, but if you want your data to persist even after your program has finished, you need to save it to a file. You can think of a file’s contents as a single string value, potentially gigabytes in size. In this chapter, you will learn how to use Python to create, read, and save files on the hard drive. + +A file has two key properties: a _filename_ (usually written as one word) and a _path_. The path specifies the location of a file on the computer. For example, there is a file on my Windows 7 laptop with the filename _project.docx_ in the path _C:\\Users\\asweigart\\Documents_. The part of the filename after the last period is called the file’s _extension_ and tells you a file’s type. _project.docx_ is a Word document, and _Users_, _asweigart_, and _Documents_ all refer to _folders_ (also called _directories_). Folders can contain files and other folders. For example, _project.docx_ is in the _Documents_ folder, which is inside the _asweigart_ folder, which is inside the _Users_ folder. [Figure 8-1](#calibre_link-82 "Figure 8-1. A file in a hierarchy of folders") shows this folder organization. + +![A file in a hierarchy of folders](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/images/000027.jpg) + +Figure 8-1. A file in a hierarchy of folders + +The _C:\\_ part of the path is the _root folder_, which contains all other folders. On Windows, the root folder is named _C:\\_ and is also called the _C: drive_. On OS X and Linux, the root folder is _/_. In this book, I’ll be using the Windows-style root folder, _C:\\_. If you are entering the interactive shell examples on OS X or Linux, enter `/` instead. + +Additional _volumes_, such as a DVD drive or USB thumb drive, will appear differently on different operating systems. On Windows, they appear as new, lettered root drives, such as _D:\\_ or _E:\\_. On OS X, they appear as new folders under the _/Volumes_ folder. On Linux, they appear as new folders under the _/mnt_ (“mount”) folder. Also note that while folder names and filenames are not case sensitive on Windows and OS X, they are case sensitive on Linux. + +Backslash on Windows and Forward Slash on OS X and Linux +-------------------------------------------------------- + +On Windows, paths are written using backslashes (_\\_) as the separator between folder names. OS X and Linux, however, use the forward slash (_/_) as their path separator. If you want your programs to work on all operating systems, you will have to write your Python scripts to handle both cases. + +Fortunately, this is simple to do with the `os.path.join()` function. If you pass it the string values of individual file and folder names in your path, `os.path.join()` will return a string with a file path using the correct path separators. Enter the following into the interactive shell: + +\>>> **import os** +>>> **os.path.join('usr', 'bin', 'spam')** +'usr\\\\bin\\\\spam' + +I’m running these interactive shell examples on Windows, so `os.path.join('usr', 'bin', 'spam')` returned `'usr\\bin\\spam'`. (Notice that the backslashes are doubled because each backslash needs to be escaped by another backslash character.) If I had called this function on OS X or Linux, the string would have been `'usr/bin/spam'`. + +The os.path.join() function is helpful if you need to create strings for filenames. These strings will be passed to several of the file-related functions introduced in this chapter. For example, the following example joins names from a list of filenames to the end of a folder’s name: + +\>>> **myFiles = \['accounts.txt', 'details.csv', 'invite.docx'\]** +>>> **for filename in myFiles:** + print(os.path.join('C:\\\\Users\\\\asweigart', filename)) +C:\\Users\\asweigart\\accounts.txt +C:\\Users\\asweigart\\details.csv +C:\\Users\\asweigart\\invite.docx + +The Current Working Directory +----------------------------- + +Every program that runs on your computer has a _current working directory_, or _cwd_. Any filenames or paths that do not begin with the root folder are assumed to be under the current working directory. You can get the current working directory as a string value with the `os.getcwd()` function and change it with `os.chdir()`. Enter the following into the interactive shell: + +\>>> **import os** +>>> **os.getcwd()** +'C:\\\\Python34' +>>> **os.chdir('C:\\\\Windows\\\\System32')** +>>> **os.getcwd()** +'C:\\\\Windows\\\\System32' + +Here, the current working directory is set to _C:\\Python34_, so the filename _project.docx_ refers to _C:\\Python34\\project.docx_. When we change the current working directory to _C:\\Windows_, _project.docx_ is interpreted as _C:\\ Windows\\project.docx_. + +Python will display an error if you try to change to a directory that does not exist. + +\>>> **os.chdir('C:\\\\ThisFolderDoesNotExist')** +Traceback (most recent call last): + File "", line 1, in + os.chdir('C:\\\\ThisFolderDoesNotExist') +FileNotFoundError: \[WinError 2\] The system cannot find the file specified: +'C:\\\\ThisFolderDoesNotExist' + +### Note + +_While folder is the more modern name for directory, note that_ current working directory _(or just_ working directory_) is the standard term, not current working folder._ + +Absolute vs. Relative Paths +--------------------------- + +There are two ways to specify a file path. + +* An _absolute path_, which always begins with the root folder + +* A _relative path_, which is relative to the program’s current working directory + + +There are also the _dot_ (`.`) and _dot-dot_ (`..`) folders. These are not real folders but special names that can be used in a path. A single period (“dot”) for a folder name is shorthand for “this directory.” Two periods (“dot-dot”) means “the parent folder.” + +[Figure 8-2](#calibre_link-83 "Figure 8-2. The relative paths for folders and files in the working directory C:\bacon") is an example of some folders and files. When the current working directory is set to _C:\\bacon_, the relative paths for the other folders and files are set as they are in the figure. + +![The relative paths for folders and files in the working directory C:\bacon](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/images/000032.jpg) + +Figure 8-2. The relative paths for folders and files in the working directory _C:\\bacon_ + +The _.\\_ at the start of a relative path is optional. For example, _.\\spam.txt_ and _spam.txt_ refer to the same file. + +Creating New Folders with os.makedirs() +--------------------------------------- + +Your programs can create new folders (directories) with the `os.makedirs()` function. Enter the following into the interactive shell: + +\>>> **import os** +>>> **os.makedirs('C:\\\\delicious\\\\walnut\\\\waffles')** + +This will create not just the _C:\\delicious_ folder but also a _walnut_ folder inside _C:\\delicious_ and a _waffles_ folder inside _C:\\delicious\\walnut_. That is, `os.makedirs()` will create any necessary intermediate folders in order to ensure that the full path exists. [Figure 8-3](#calibre_link-84 "Figure 8-3. The result of os.makedirs('C:\\delicious \\walnut\\waffles')") shows this hierarchy of folders. + +![The result of os.makedirs('C:\\delicious \\walnut\\waffles')](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/images/000036.jpg) + +Figure 8-3. The result of `os.makedirs('C:\\delicious \\walnut\\waffles')` + +The `os.path` module contains many helpful functions related to filenames and file paths. For instance, you’ve already used `os.path.join()` to build paths in a way that will work on any operating system. Since `os.path` is a module inside the `os` module, you can import it by simply running `import os`. Whenever your programs need to work with files, folders, or file paths, you can refer to the short examples in this section. The full documentation for the `os.path` module is on the Python website at _[http://docs.python.org/3/library/os.path.html](http://docs.python.org/3/library/os.path.html)_. + +### Note + +_Most of the examples that follow in this section will require the_ `os` _module, so remember to import it at the beginning of any script you write and any time you restart IDLE. Otherwise, you’ll get a_ `NameError: name 'os' is not defined` _error message._ + +Handling Absolute and Relative Paths +------------------------------------ + +The `os.path` module provides functions for returning the absolute path of a relative path and for checking whether a given path is an absolute path. + +* Calling `os.path.abspath(`_`path`_`)` will return a string of the absolute path of the argument. This is an easy way to convert a relative path into an absolute one. + +* Calling `os.path.isabs(`_`path`_`)` will return `True` if the argument is an absolute path and `False` if it is a relative path. + +* Calling `os.path.relpath(`_`path, start`_`)` will return a string of a relative path from the _`start`_ path to _`path`_. If _`start`_ is not provided, the current working directory is used as the start path. + + +Try these functions in the interactive shell: + +\>>> **os.path.abspath('.')** +'C:\\\\Python34' +>>> **os.path.abspath('.\\\\Scripts')** +'C:\\\\Python34\\\\Scripts' +>>> **os.path.isabs('.')** +False +>>> **os.path.isabs(os.path.abspath('.'))** +True + +Since _C:\\Python34_ was the working directory when `os.path.abspath()` was called, the “single-dot” folder represents the absolute path `'C:\\Python34'`. + +### Note + +_Since your system probably has different files and folders on it than mine, you won’t be able to follow every example in this chapter exactly. Still, try to follow along using folders that exist on your computer._ + +Enter the following calls to `os.path.relpath()` into the interactive shell: + +\>>> **os.path.relpath('C:\\\\Windows', 'C:\\\\')** +'Windows' +>>> **os.path.relpath('C:\\\\Windows', 'C:\\\\spam\\\\eggs')** +'..\\\\..\\\\Windows' +>>> **os.getcwd()** 'C:\\\\Python34' + +Calling `os.path.dirname(`_`path`_`)` will return a string of everything that comes before the last slash in the `path` argument. Calling `os.path.basename(`_`path`_`)` will return a string of everything that comes after the last slash in the `path` argument. The dir name and base name of a path are outlined in [Figure 8-4](#calibre_link-85 "Figure 8-4. The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash."). + +![The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash.](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/images/000041.png) + +Figure 8-4. The base name follows the last slash in a path and is the same as the filename. The dir name is everything before the last slash. + +For example, enter the following into the interactive shell: + +\>>> **path = 'C:\\\\Windows\\\\System32\\\\calc.exe'** +>>> **os.path.basename(path)** +'calc.exe' +>>> **os.path.dirname(path)** +'C:\\\\Windows\\\\System32' + +If you need a path’s dir name and base name together, you can just call `os.path.split()` to get a tuple value with these two strings, like so: + +\>>> **calcFilePath = 'C:\\\\Windows\\\\System32\\\\calc.exe'** +>>> **os.path.split(calcFilePath)** +('C:\\\\Windows\\\\System32', 'calc.exe') + +Notice that you could create the same tuple by calling `os.path.dirname()` and `os.path.basename()` and placing their return values in a tuple. + +\>>> **(os.path.dirname(calcFilePath), os.path.basename(calcFilePath))** +('C:\\\\Windows\\\\System32', 'calc.exe') + +But `os.path.split()` is a nice shortcut if you need both values. + +Also, note that `os.path.split()` does _not_ take a file path and return a list of strings of each folder. For that, use the `split()` string method and split on the string in `os.sep`. Recall from earlier that the `os.sep` variable is set to the correct folder-separating slash for the computer running the program. + +For example, enter the following into the interactive shell: + +\>>> **calcFilePath.split(os.path.sep)** +\['C:', 'Windows', 'System32', 'calc.exe'\] + +On OS X and Linux systems, there will be a blank string at the start of the returned list: + +\>>> **'/usr/bin'.split(os.path.sep)** +\['', 'usr', 'bin'\] + +The `split()` string method will work to return a list of each part of the path. It will work on any operating system if you pass it `os.path.sep`. + +Finding File Sizes and Folder Contents +-------------------------------------- + +Once you have ways of handling file paths, you can then start gathering information about specific files and folders. The `os.path` module provides functions for finding the size of a file in bytes and the files and folders inside a given folder. + +* Calling `os.path.getsize(`_`path`_`)` will return the size in bytes of the file in the _`path`_ argument. + +* Calling `os.listdir(`_`path`_`)` will return a list of filename strings for each file in the _`path`_ argument. (Note that this function is in the `os` module, not `os.path`.) + + +Here’s what I get when I try these functions in the interactive shell: + +\>>> **os.path.getsize('C:\\\\Windows\\\\System32\\\\calc.exe')** +776192 +>>> **os.listdir('C:\\\\Windows\\\\System32')** +\['0409', '12520437.cpx', '12520850.cpx', '5U877.ax', 'aaclient.dll', +--_snip_\-- +'xwtpdui.dll', 'xwtpw32.dll', 'zh-CN', 'zh-HK', 'zh-TW', 'zipfldr.dll'\] + +As you can see, the _calc.exe_ program on my computer is 776,192 bytes in size, and I have a lot of files in _C:\\Windows\\system32_. If I want to find the total size of all the files in this directory, I can use `os.path.getsize()` and `os.listdir()` together. + +\>>> **totalSize = 0** +>>> **for filename in os.listdir('C:\\\\Windows\\\\System32'):** + **totalSize = totalSize + os.path.getsize(os.path.join('C:\\\\Windows\\\\System32', filename))** + +>>> **print(totalSize)** +1117846456 + +As I loop over each filename in the _C:\\Windows\\System32_ folder, the `totalSize` variable is incremented by the size of each file. Notice how when I call `os.path.getsize()`, I use `os.path.join()` to join the folder name with the current filename. The integer that `os.path.getsize()` returns is added to the value of `totalSize`. After looping through all the files, I print `totalSize` to see the total size of the _C:\\Windows\\System32_ folder. + +Many Python functions will crash with an error if you supply them with a path that does not exist. The `os.path` module provides functions to check whether a given path exists and whether it is a file or folder. + +* Calling `os.path.exists(`_`path`_`)` will return `True` if the file or folder referred to in the argument exists and will return `False` if it does not exist. + +* Calling `os.path.isfile(`_`path`_`)` will return `True` if the path argument exists and is a file and will return `False` otherwise. + +* Calling `os.path.isdir(`_`path`_`)` will return `True` if the path argument exists and is a folder and will return `False` otherwise. + + +Here’s what I get when I try these functions in the interactive shell: + +\>>> **os.path.exists('C:\\\\Windows')** +True +>>> **os.path.exists('C:\\\\some\_made\_up\_folder')** +False +>>> **os.path.isdir('C:\\\\Windows\\\\System32')** +True +>>> **os.path.isfile('C:\\\\Windows\\\\System32')** +False +>>> **os.path.isdir('C:\\\\Windows\\\\System32\\\\calc.exe')** +False +>>> **os.path.isfile('C:\\\\Windows\\\\System32\\\\calc.exe')** +True + +You can determine whether there is a DVD or flash drive currently attached to the computer by checking for it with the `os.path.exists()` function. For instance, if I wanted to check for a flash drive with the volume named _D:\\_ on my Windows computer, I could do that with the following: + +\>>> **os.path.exists('D:\\\\')** +False + +Oops! It looks like I forgot to plug in my flash drive. + +Once you are comfortable working with folders and relative paths, you’ll be able to specify the location of files to read and write. The functions covered in the next few sections will apply to plaintext files. _Plaintext files_ contain only basic text characters and do not include font, size, or color information. Text files with the _.txt_ extension or Python script files with the _.py_ extension are examples of plaintext files. These can be opened with Windows’s Notepad or OS X’s TextEdit application. Your programs can easily read the contents of plaintext files and treat them as an ordinary string value. + +_Binary files_ are all other file types, such as word processing documents, PDFs, images, spreadsheets, and executable programs. If you open a binary file in Notepad or TextEdit, it will look like scrambled nonsense, like in [Figure 8-5](#calibre_link-86 "Figure 8-5. The Windows calc.exe program opened in Notepad"). + +![The Windows calc.exe program opened in Notepad](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/images/000046.jpg) + +Figure 8-5. The Windows `calc.exe` program opened in Notepad + +Since every different type of binary file must be handled in its own way, this book will not go into reading and writing raw binary files directly. Fortunately, many modules make working with binary files easier—you will explore one of them, the `shelve` module, later in this chapter. + +There are three steps to reading or writing files in Python. + +1. Call the `open()` function to return a `File` object. + +2. Call the `read()` or `write()` method on the `File` object. + +3. Close the file by calling the `close()` method on the `File` object. + + +Opening Files with the open() Function +-------------------------------------- + +To open a file with the `open()` function, you pass it a string path indicating the file you want to open; it can be either an absolute or relative path. The `open()` function returns a `File` object. + +Try it by creating a text file named _hello.txt_ using Notepad or TextEdit. Type **`Hello world!`** as the content of this text file and save it in your user home folder. Then, if you’re using Windows, enter the following into the interactive shell: + +\>>> **helloFile = open('C:\\\\Users\\\\**_**your\_home\_folder**_**\\\\hello.txt')** + +If you’re using OS X, enter the following into the interactive shell instead: + +\>>> **helloFile = open('/Users/**_**your\_home\_folder**_**/hello.txt')** + +Make sure to replace _`your_home_folder`_ with your computer username. For example, my username is _asweigart_, so I’d enter `'C:\\Users\\asweigart\\ hello.txt'` on Windows. + +Both these commands will open the file in “reading plaintext” mode, or _read mode_ for short. When a file is opened in read mode, Python lets you only read data from the file; you can’t write or modify it in any way. Read mode is the default mode for files you open in Python. But if you don’t want to rely on Python’s defaults, you can explicitly specify the mode by passing the string value `'r'` as a second argument to `open()`. So `open('/Users/asweigart/ hello.txt', 'r')` and `open('/Users/asweigart/hello.txt')` do the same thing. + +The call to `open()` returns a `File` object. A `File` object represents a file on your computer; it is simply another type of value in Python, much like the lists and dictionaries you’re already familiar with. In the previous example, you stored the `File` object in the variable `helloFile`. Now, whenever you want to read from or write to the file, you can do so by calling methods on the `File` object in `helloFile`. + +Reading the Contents of Files +----------------------------- + +Now that you have a `File` object, you can start reading from it. If you want to read the entire contents of a file as a string value, use the `File` object’s `read()` method. Let’s continue with the _hello.txt_ `File` object you stored in `helloFile`. Enter the following into the interactive shell: + +\>>> **helloContent = helloFile.read()** +>>> **helloContent** +'Hello world!' + +If you think of the contents of a file as a single large string value, the `read()` method returns the string that is stored in the file. + +Alternatively, you can use the `readlines()` method to get a _list_ of string values from the file, one string for each line of text. For example, create a file named _sonnet29.txt_ in the same directory as _hello.txt_ and write the following text in it: + +When, in disgrace with fortune and men's eyes, +I all alone beweep my outcast state, +And trouble deaf heaven with my bootless cries, +And look upon myself and curse my fate, + +Make sure to separate the four lines with line breaks. Then enter the following into the interactive shell: + +\>>> **sonnetFile = open('sonnet29.txt')** +>>> **sonnetFile.readlines()** +\[When, in disgrace with fortune and men's eyes,\\n', ' I all alone beweep my +outcast state,\\n', And trouble deaf heaven with my bootless cries,\\n', And +look upon myself and curse my fate,'\] + +Note that each of the string values ends with a newline character, `\n`, except for the last line of the file. A list of strings is often easier to work with than a single large string value. + +Python allows you to write content to a file in a way similar to how the `print()` function “writes” strings to the screen. You can’t write to a file you’ve opened in read mode, though. Instead, you need to open it in “write plaintext” mode or “append plaintext” mode, or _write mode_ and _append mode_ for short. + +Write mode will overwrite the existing file and start from scratch, just like when you overwrite a variable’s value with a new value. Pass `'w'` as the second argument to `open()` to open the file in write mode. Append mode, on the other hand, will append text to the end of the existing file. You can think of this as appending to a list in a variable, rather than overwriting the variable altogether. Pass `'a'` as the second argument to `open()` to open the file in append mode. + +If the filename passed to `open()` does not exist, both write and append mode will create a new, blank file. After reading or writing a file, call the `close()` method before opening the file again. + +Let’s put these concepts together. Enter the following into the interactive shell: + +\>>> **baconFile = open('bacon.txt', 'w')** +>>> **baconFile.write('Hello world!\\n')** +13 +>>> **baconFile.close()** +>>> **baconFile = open('bacon.txt', 'a')** +>>> **baconFile.write('Bacon is not a vegetable.')** +25 +>>> **baconFile.close()** +>>> **baconFile = open('bacon.txt')** +>>> **content = baconFile.read()** +>>> **baconFile.close()** +>>> **print(content)** +Hello world! +Bacon is not a vegetable. + +First, we open _bacon.txt_ in write mode. Since there isn’t a _bacon.txt_ yet, Python creates one. Calling `write()` on the opened file and passing `write()` the string argument `'Hello world! /n'` writes the string to the file and returns the number of characters written, including the newline. Then we close the file. + +To add text to the existing contents of the file instead of replacing the string we just wrote, we open the file in append mode. We write `'Bacon is not a vegetable.'` to the file and close it. Finally, to print the file contents to the screen, we open the file in its default read mode, call `read()`, store the resulting `File` object in `content`, close the file, and print `content`. + +Note that the `write()` method does not automatically add a newline character to the end of the string like the `print()` function does. You will have to add this character yourself. + +You can save variables in your Python programs to binary shelf files using the `shelve` module. This way, your program can restore data to variables from the hard drive. The `shelve` module will let you add Save and Open features to your program. For example, if you ran a program and entered some configuration settings, you could save those settings to a shelf file and then have the program load them the next time it is run. + +Enter the following into the interactive shell: + +\>>> **import shelve** +>>> **shelfFile = shelve.open('mydata')** +>>> **cats = \['Zophie', 'Pooka', 'Simon'\]** +>>> **shelfFile\['cats'\] = cats** +>>> **shelfFile.close()** + +To read and write data using the `shelve` module, you first import `shelve`. Call `shelve.open()` and pass it a filename, and then store the returned shelf value in a variable. You can make changes to the shelf value as if it were a dictionary. When you’re done, call `close()` on the shelf value. Here, our shelf value is stored in `shelfFile`. We create a list `cats` and write `shelfFile['cats'] = cats` to store the list in `shelfFile` as a value associated with the key `'cats'` (like in a dictionary). Then we call `close()` on `shelfFile`. + +After running the previous code on Windows, you will see three new files in the current working directory: _mydata.bak_, _mydata.dat_, and _mydata.dir_. On OS X, only a single _mydata.db_ file will be created. + +These binary files contain the data you stored in your shelf. The format of these binary files is not important; you only need to know what the `shelve` module does, not how it does it. The module frees you from worrying about how to store your program’s data to a file. + +Your programs can use the `shelve` module to later reopen and retrieve the data from these shelf files. Shelf values don’t have to be opened in read or write mode—they can do both once opened. Enter the following into the interactive shell: + +\>>> **shelfFile = shelve.open('mydata')** +>>> **type(shelfFile)** + +>>> **shelfFile\['cats'\]** +\['Zophie', 'Pooka', 'Simon'\] +>>> **shelfFile.close()** + +Here, we open the shelf files to check that our data was stored correctly. Entering `shelfFile['cats']` returns the same list that we stored earlier, so we know that the list is correctly stored, and we call `close()`. + +Just like dictionaries, shelf values have `keys()` and `values()` methods that will return list-like values of the keys and values in the shelf. Since these methods return list-like values instead of true lists, you should pass them to the `list()` function to get them in list form. Enter the following into the interactive shell: + +\>>> **shelfFile = shelve.open('mydata')** +>>> **list(shelfFile.keys())** +\['cats'\] +>>> **list(shelfFile.values())** +\[\['Zophie', 'Pooka', 'Simon'\]\] +>>> **shelfFile.close()** + +Plaintext is useful for creating files that you’ll read in a text editor such as Notepad or TextEdit, but if you want to save data from your Python programs, use the `shelve` module. + +Recall from [Pretty Printing](#calibre_link-87 "Pretty Printing") that the `pprint.pprint()` function will “pretty print” the contents of a list or dictionary to the screen, while the `pprint.pformat()` function will return this same text as a string instead of printing it. Not only is this string formatted to be easy to read, but it is also syntactically correct Python code. Say you have a dictionary stored in a variable and you want to save this variable and its contents for future use. Using `pprint.pformat()` will give you a string that you can write to _.py_ file. This file will be your very own module that you can import whenever you want to use the variable stored in it. + +For example, enter the following into the interactive shell: + +\>>> **import pprint** +>>> **cats = \[{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}\]** +>>> **pprint.pformat(cats)** +"\[{'desc': 'chubby', 'name': 'Zophie'}, {'desc': 'fluffy', 'name': 'Pooka'}\]" +>>> **fileObj = open('myCats.py', 'w')** +>>> **fileObj.write('cats = ' + pprint.pformat(cats) + '\\n')** +83 +>>> **fileObj.close()** + +Here, we import `pprint` to let us use `pprint.pformat()`. We have a list of dictionaries, stored in a variable `cats`. To keep the list in `cats` available even after we close the shell, we use `pprint.pformat()` to return it as a string. Once we have the data in `cats` as a string, it’s easy to write the string to a file, which we’ll call _myCats.py_. + +The modules that an `import` statement imports are themselves just Python scripts. When the string from `pprint.pformat()` is saved to a _.py_ file, the file is a module that can be imported just like any other. + +And since Python scripts are themselves just text files with the _.py_ file extension, your Python programs can even generate other Python programs. You can then import these files into scripts. + +\>>> **import myCats** +>>> **myCats.cats** +\[{'name': 'Zophie', 'desc': 'chubby'}, {'name': 'Pooka', 'desc': 'fluffy'}\] +>>> **myCats.cats\[0\]** +{'name': 'Zophie', 'desc': 'chubby'} +>>> **myCats.cats\[0\]\['name'\]** +'Zophie' + +The benefit of creating a _.py_ file (as opposed to saving variables with the `shelve` module) is that because it is a text file, the contents of the file can be read and modified by anyone with a simple text editor. For most applications, however, saving data using the `shelve` module is the preferred way to save variables to a file. Only basic data types such as integers, floats, strings, lists, and dictionaries can be written to a file as simple text. `File` objects, for example, cannot be encoded as text. + +Say you’re a geography teacher with 35 students in your class and you want to give a pop quiz on US state capitals. Alas, your class has a few bad eggs in it, and you can’t trust the students not to cheat. You’d like to randomize the order of questions so that each quiz is unique, making it impossible for anyone to crib answers from anyone else. Of course, doing this by hand would be a lengthy and boring affair. Fortunately, you know some Python. + +Here is what the program does: + +* Creates 35 different quizzes. + +* Creates 50 multiple-choice questions for each quiz, in random order. + +* Provides the correct answer and three random wrong answers for each question, in random order. + +* Writes the quizzes to 35 text files. + +* Writes the answer keys to 35 text files. + + +This means the code will need to do the following: + +* Store the states and their capitals in a dictionary. + +* Call `open()`, `write()`, and `close()` for the quiz and answer key text files. + +* Use `random.shuffle()` to randomize the order of the questions and multiple-choice options. + + +Step 1: Store the Quiz Data in a Dictionary +------------------------------------------- + +The first step is to create a skeleton script and fill it with your quiz data. Create a file named _randomQuizGenerator.py_, and make it look like the following: + + #! python3 + # randomQuizGenerator.py - Creates quizzes with questions and answers in + # random order, along with the answer key. + +❶ import random + + # The quiz data. Keys are states and values are their capitals. +❷ capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix', + 'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver', + 'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee', + 'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois': + 'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas': + 'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine': + 'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan': + 'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri': + 'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada': + 'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 'New + Mexico': 'Santa Fe', 'New York': 'Albany', 'North Carolina': 'Raleigh', + 'North Dakota': 'Bismarck', 'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City', + 'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence', + 'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee': + 'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont': + 'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 'West + Virginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'} + + # Generate 35 quiz files. +❸ for quizNum in range(35): + # TODO: Create the quiz and answer key files. + + # TODO: Write out the header for the quiz. + + # TODO: Shuffle the order of the states. + + # TODO: Loop through all 50 states, making a question for each. + +Since this program will be randomly ordering the questions and answers, you’ll need to import the `random` module ❶ to make use of its functions. The `capitals` variable ❷ contains a dictionary with US states as keys and their capitals as values. And since you want to create 35 quizzes, the code that actually generates the quiz and answer key files (marked with `TODO` comments for now) will go inside a `for` loop that loops 35 times ❸. (This number can be changed to generate any number of quiz files.) + +Step 2: Create the Quiz File and Shuffle the Question Order +----------------------------------------------------------- + +Now it’s time to start filling in those `TODO`s. + +The code in the loop will be repeated 35 times—once for each quiz—so you have to worry about only one quiz at a time within the loop. First you’ll create the actual quiz file. It needs to have a unique filename and should also have some kind of standard header in it, with places for the student to fill in a name, date, and class period. Then you’ll need to get a list of states in randomized order, which can be used later to create the questions and answers for the quiz. + +Add the following lines of code to _randomQuizGenerator.py_: + + #! python3 + # randomQuizGenerator.py - Creates quizzes with questions and answers in + # random order, along with the answer key. + + --_snip_\-- + + # Generate 35 quiz files. + for quizNum in range(35): + **\# Create the quiz and answer key files.** +❶ **quizFile = open('capitalsquiz%s.txt' % (quizNum + 1), 'w')** +❷ **answerKeyFile = open('capitalsquiz\_answers%s.txt' % (quizNum + 1), 'w')** + + **\# Write out the header for the quiz.** +❸ **quizFile.write('Name:\\n\\nDate:\\n\\nPeriod:\\n\\n')** + **quizFile.write((' ' \* 20) + 'State Capitals Quiz (Form %s)' % (quizNum + 1))** + **quizFile.write('\\n\\n')** + + **\# Shuffle the order of the states.** + **states = list(capitals.keys())** +❹ **random.shuffle(states)** + + # TODO: Loop through all 50 states, making a question for each. + +The filenames for the quizzes will be _capitalsquiz.txt_, where __ is a unique number for the quiz that comes from `quizNum`, the `for` loop’s counter. The answer key for _capitalsquiz.txt_ will be stored in a text file named _capitalsquiz\_answers.txt_. Each time through the loop, the `%s` placeholder in `'capitalsquiz%s.txt'` and `'capitalsquiz_answers%s.txt'` will be replaced by `(quizNum + 1)`, so the first quiz and answer key created will be _capitalsquiz1.txt_ and _capitalsquiz\_answers1.txt_. These files will be created with calls to the `open()` function at ❶ and ❷, with `'w'` as the second argument to open them in write mode. + +The `write()` statements at ❸ create a quiz header for the student to fill out. Finally, a randomized list of US states is created with the help of the `random.shuffle()` function ❹, which randomly reorders the values in any list that is passed to it. + +Step 3: Create the Answer Options +--------------------------------- + +Now you need to generate the answer options for each question, which will be multiple choice from A to D. You’ll need to create another `for` loop—this one to generate the content for each of the 50 questions on the quiz. Then there will be a third `for` loop nested inside to generate the multiple-choice options for each question. Make your code look like the following: + + #! python3 + # randomQuizGenerator.py - Creates quizzes with questions and answers in + # random order, along with the answer key. + + --_snip_\-- + + **\# Loop through all 50 states, making a question for each.** + **for questionNum in range(50):** + + **\# Get right and wrong answers.** +❶ **correctAnswer = capitals\[states\[questionNum\]\]** +❷ **wrongAnswers = list(capitals.values())** +❸ **del wrongAnswers\[wrongAnswers.index(correctAnswer)\]** +❹ **wrongAnswers = random.sample(wrongAnswers, 3)** +❺ **answerOptions = wrongAnswers + \[correctAnswer\]** +❻ **random.shuffle(answerOptions)** + + **\# TODO: Write the question and answer options to the quiz file.** + + **\# TODO: Write the answer key to a file.** + +The correct answer is easy to get—it’s stored as a value in the `capitals` dictionary ❶. This loop will loop through the states in the shuffled `states` list, from `states[0]` to `states[49]`, find each state in `capitals`, and store that state’s corresponding capital in `correctAnswer`. + +The list of possible wrong answers is trickier. You can get it by duplicating _all_ the values in the `capitals` dictionary ❷, deleting the correct answer ❸, and selecting three random values from this list ❹. The `random.sample()` function makes it easy to do this selection. Its first argument is the list you want to select from; the second argument is the number of values you want to select. The full list of answer options is the combination of these three wrong answers with the correct answers ❺. Finally, the answers need to be randomized ❻ so that the correct response isn’t always choice D. + +Step 4: Write Content to the Quiz and Answer Key Files +------------------------------------------------------ + +All that is left is to write the question to the quiz file and the answer to the answer key file. Make your code look like the following: + + #! python3 + # randomQuizGenerator.py - Creates quizzes with questions and answers in + # random order, along with the answer key. + + --_snip_\-- + # Loop through all 50 states, making a question for each. + for questionNum in range(50): + --_snip_\-- + + **\# Write the question and the answer options to the quiz file.** + **quizFile.write('%s. What is the capital of %s?\\n' % (questionNum + 1,** + **states\[questionNum\]))** +❶ **for i in range(4):** +❷ **quizFile.write(' %s. %s\\n' % ('ABCD'\[i\], answerOptions\[i\]))** + **quizFile.write('\\n')** + + **\# Write the answer key to a file.** +❸ **answerKeyFile.write('%s. %s\\n' % (questionNum + 1, 'ABCD'\[** + **answerOptions.index(correctAnswer)\]))** + **quizFile.close()** + **answerKeyFile.close()** + +A `for` loop that goes through integers `0` to `3` will write the answer options in the `answerOptions` list ❶. The expression `'ABCD'[i]` at ❷ treats the string `'ABCD'` as an array and will evaluate to `'A'`,`'B'`, `'C'`, and then `'D'` on each respective iteration through the loop. + +In the final line ❸, the expression `answerOptions.index(correctAnswer)` will find the integer index of the correct answer in the randomly ordered answer options, and `'ABCD'[answerOptions.index(correctAnswer)]` will evaluate to the correct answer’s letter to be written to the answer key file. + +After you run the program, this is how your _capitalsquiz1.txt_ file will look, though of course your questions and answer options may be different from those shown here, depending on the outcome of your `random.shuffle()` calls: + +Name: + +Date: + +Period: + + State Capitals Quiz (Form 1) + +1. What is the capital of West Virginia? + A. Hartford + B. Santa Fe + C. Harrisburg + D. Charleston + +2. What is the capital of Colorado? + A. Raleigh + B. Harrisburg + C. Denver + D. Lincoln + +--_snip_\-- + +The corresponding _capitalsquiz\_answers1.txt_ text file will look like this: + +1\. D +2. C +3. A +4. C +--_snip_\-- + +Say you have the boring task of filling out many forms in a web page or software with several text fields. The clipboard saves you from typing the same text over and over again. But only one thing can be on the clipboard at a time. If you have several different pieces of text that you need to copy and paste, you have to keep highlighting and copying the same few things over and over again. + +You can write a Python program to keep track of multiple pieces of text. This “multiclipboard” will be named _mcb.pyw_ (since “mcb” is shorter to type than “multiclipboard”). The _.pyw_ extension means that Python won’t show a Terminal window when it runs this program. (See Appendix B for more details.) + +The program will save each piece of clipboard text under a keyword. For example, when you run `py mcb.pyw save spam`, the current contents of the clipboard will be saved with the keyword _spam_. This text can later be loaded to the clipboard again by running `py mcb.pyw spam`. And if the user forgets what keywords they have, they can run `py mcb.pyw list` to copy a list of all keywords to the clipboard. + +Here’s what the program does: + +* The command line argument for the keyword is checked. + +* If the argument is `save`, then the clipboard contents are saved to the keyword. + +* If the argument is `list`, then all the keywords are copied to the clipboard. + +* Otherwise, the text for the keyword is copied to the clipboard. + + +This means the code will need to do the following: + +* Read the command line arguments from `sys.argv`. + +* Read and write to the clipboard. + +* Save and load to a shelf file. + + +If you use Windows, you can easily run this script from the Run... window by creating a batch file named _mcb.bat_ with the following content: + +@pyw.exe C:\\Python34\\mcb.pyw %\* + +Step 1: Comments and Shelf Setup +-------------------------------- + +Let’s start by making a skeleton script with some comments and basic setup. Make your code look like the following: + + #! python3 + # mcb.pyw - Saves and loads pieces of text to the clipboard. +❶ # Usage: py.exe mcb.pyw save - Saves clipboard to keyword. + # py.exe mcb.pyw - Loads keyword to clipboard. + # py.exe mcb.pyw list - Loads all keywords to clipboard. + +❷ import shelve, pyperclip, sys + +❸ mcbShelf = shelve.open('mcb') + + # TODO: Save clipboard content. + + # TODO: List keywords and load content. + + mcbShelf.close() + +It’s common practice to put general usage information in comments at the top of the file ❶. If you ever forget how to run your script, you can always look at these comments for a reminder. Then you import your modules ❷. Copying and pasting will require the `pyperclip` module, and reading the command line arguments will require the `sys` module. The `shelve` module will also come in handy: Whenever the user wants to save a new piece of clipboard text, you’ll save it to a shelf file. Then, when the user wants to paste the text back to their clipboard, you’ll open the shelf file and load it back into your program. The shelf file will be named with the prefix _mcb_ ❸. + +Step 2: Save Clipboard Content with a Keyword +--------------------------------------------- + +The program does different things depending on whether the user wants to save text to a keyword, load text into the clipboard, or list all the existing keywords. Let’s deal with that first case. Make your code look like the following: + + #! python3 + # mcb.pyw - Saves and loads pieces of text to the clipboard. + --_snip_\-- + + **\# Save clipboard content.** +❶ **if len(sys.argv) == 3 and sys.argv\[1\].lower() == 'save':** +❷ **mcbShelf\[sys.argv\[2\]\] = pyperclip.paste()** + **elif len(sys.argv) == 2:** +❸ # TODO: List keywords and load content. + + mcbShelf.close() + +If the first command line argument (which will always be at index `1` of the `sys.argv` list) is `'save'` ❶, the second command line argument is the keyword for the current content of the clipboard. The keyword will be used as the key for `mcbShelf`, and the value will be the text currently on the clipboard ❷. + +If there is only one command line argument, you will assume it is either `'list'` or a keyword to load content onto the clipboard. You will implement that code later. For now, just put a `TODO` comment there ❸. + +Step 3: List Keywords and Load a Keyword’s Content +-------------------------------------------------- + +Finally, let’s implement the two remaining cases: The user wants to load clipboard text in from a keyword, or they want a list of all available keywords. Make your code look like the following: + + #! python3 + # mcb.pyw - Saves and loads pieces of text to the clipboard. + --_snip_\-- + + # Save clipboard content. + if len(sys.argv) == 3 and sys.argv\[1\].lower() == 'save': + mcbShelf\[sys.argv\[2\]\] = pyperclip.paste() + elif len(sys.argv) == 2: + **\# List keywords and load content.** +❶ **if sys.argv\[1\].lower() == 'list':** +❷ **pyperclip.copy(str(list(mcbShelf.keys())))** + **elif sys.argv\[1\] in mcbShelf:** +❸ **pyperclip.copy(mcbShelf\[sys.argv\[1\]\])** + + mcbShelf.close() + +If there is only one command line argument, first let’s check whether it’s `'list'` ❶. If so, a string representation of the list of shelf keys will be copied to the clipboard ❷. The user can paste this list into an open text editor to read it. + +Otherwise, you can assume the command line argument is a keyword. If this keyword exists in the `mcbShelf` shelf as a key, you can load the value onto the clipboard ❸. + +And that’s it! Launching this program has different steps depending on what operating system your computer uses. See Appendix B for details for your operating system. + +Recall the password locker program you created in [Chapter 6](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/chapter6 "Chapter 6. Manipulating Strings") that stored the passwords in a dictionary. Updating the passwords required changing the source code of the program. This isn’t ideal because average users don’t feel comfortable changing source code to update their software. Also, every time you modify the source code to a program, you run the risk of accidentally introducing new bugs. By storing the data for a program in a different place than the code, you can make your programs easier for others to use and more resistant to bugs. + +Files are organized into folders (also called directories), and a path describes the location of a file. Every program running on your computer has a current working directory, which allows you to specify file paths relative to the current location instead of always typing the full (or absolute) path. The `os.path` module has many functions for manipulating file paths. + +Your programs can also directly interact with the contents of text files. The `open()` function can open these files to read in their contents as one large string (with the `read()` method) or as a list of strings (with the `readlines()` method). The `open()` function can open files in write or append mode to create new text files or add to existing text files, respectively. + +In previous chapters, you used the clipboard as a way of getting large amounts of text into a program, rather than typing it all in. Now you can have your programs read files directly from the hard drive, which is a big improvement, since files are much less volatile than the clipboard. + +In the next chapter, you will learn how to handle the files themselves, by copying them, deleting them, renaming them, moving them, and more. + +

Q:

1. What is a relative path relative to?

Q:

2. What does an absolute path start with?

Q:

3. What do the os.getcwd() and os.chdir() functions do?

Q:

4. What are the . and .. folders?

Q:

5. In C:\bacon\eggs\spam.txt, which part is the dir name, and which part is the base name?

Q:

6. What are the three “mode” arguments that can be passed to the open() function?

Q:

7. What happens if an existing file is opened in write mode?

Q:

8. What is the difference between the read() and readlines() methods?

Q:

9. What data structure does a shelf value resemble?

+ +For practice, design and write the following programs. + +Extending the Multiclipboard +---------------------------- + +Extend the multiclipboard program in this chapter so that it has a `delete ` command line argument that will delete a keyword from the shelf. Then add a `delete` command line argument that will delete _all_ keywords. + +Create a Mad Libs program that reads in text files and lets the user add their own text anywhere the word _ADJECTIVE_, _NOUN_, _ADVERB_, or _VERB_ appears in the text file. For example, a text file may look like this: + +The ADJECTIVE panda walked to the NOUN and then VERB. A nearby NOUN was +unaffected by these events. + +The program would find these occurrences and prompt the user to replace them. + +Enter an adjective: +**silly** +Enter a noun: +**chandelier** +Enter a verb: +**screamed** +Enter a noun: +**pickup truck** + +The following text file would then be created: + +The silly panda walked to the chandelier and then screamed. A nearby pickup +truck was unaffected by these events. + +The results should be printed to the screen and saved to a new text file. + +Write a program that opens all ._txt_ files in a folder and searches for any line that matches a user-supplied regular expression. The results should be printed to the screen. + + +[Source](https://automatetheboringstuff.com/chapter8/) \ No newline at end of file diff --git a/Readings/Controlling the Web with Python.html b/Readings/Controlling the Web with Python.html new file mode 100644 index 00000000..860f87c7 --- /dev/null +++ b/Readings/Controlling the Web with Python.html @@ -0,0 +1,107 @@ + + + + + + + Controlling the Web with Python + + + +

Controlling the Web with Python

+
+

An adventure in simple web automation

+
+

Anytime we find ourselves repeating tedious actions on the web with the same sequence of steps, this is a great chance to write a program to automate the process for us. With selenium and Python, we just need to write a script once, and which then we can run it as many times and save ourselves from repeating monotonous tasks (and in my case, eliminate the chance of submitting an assignment in the wrong place)!

+

Here, I’ll walk through the solution I developed to automatically (and correctly) submit my assignments. Along the way, we’ll cover the basics of using Python and selenium to programmatically control the web. While this program does work (I’m using it every day!) it’s pretty custom so you won’t be able to copy and paste the code for your application. Nonetheless, the general techniques here can be applied to a limitless number of situations. (If you want to see the complete code, it’s available on GitHub).

+

Before we can get to the fun part of automating the web, we need to figure out the general structure of our solution. Jumping right into programming without a plan is a great way to waste many hours in frustration. I want to write a program to submit completed course assignments to the correct location on Canvas (my university’s “learning management system”). Starting with the basics, I need a way to tell the program the name of the assignment to submit and the class. I went with a simple approach and created a folder to hold completed assignments with child folders for each class. In the child folders, I place the completed document named for the particular assignment. The program can figure out the name of the class from the folder, and the name of the assignment by the document title.

+

Here’s an example where the name of the class is EECS491 and the assignment is “Assignment 3 — Inference in Larger Graphical Models”.

+

+

File structure (left) and Complete Assignment (right)

+

The first part of the program is a loop to go through the folders to find the assignment and class, which we store in a Python tuple:

+

# os for file management
+import os# Build tuple of (class, file) to turn in
+submission_dir = ’completed_assignments’dir_list = list(os.listdir(submission_dir))for directory in dir_list:
+file_list = list(os.listdir(os.path.join(submission_dir,
+directory)))
+if len(file_list) != 0:
+file_tup = (directory, file_list[0])

+
print(file\_tup)
+

(‘EECS491’, ‘Assignment 3 - Inference in Larger Graphical Models.txt’)

+

This takes care of file management and the program now knows the program and the assignment to turn in. The next step is to use selenium to navigate to the correct webpage and upload the assignment.

+

Web Control with Selenium

+

To get started with selenium, we import the library and create a web driver, which is a browser that is controlled by our program. In this case, I’ll use Chrome as my browser and send the driver to the Canvas website where I submit assignments.

+

import selenium# Using Chrome to access web
+driver = webdriver.Chrome()# Open the website
+driver.get(’https://canvas.case.edu’)

+

When we open the Canvas webpage, we are greeted with our first obstacle, a login box! To get past this, we will need to fill in an id and a password and click the login button.

+

+

Imagine the web driver as a person who has never seen a web page before: we need to tell it exactly where to click, what to type, and which buttons to press. There are a number of ways to tell our web driver what elements to find, all of which use selectors. A selector is a unique identifier for an element on a webpage. To find the selector for a specific element, say the CWRU ID box above, we need to inspect the webpage. In Chrome, this is done by pressing “ctrl + shift + i” or right clicking on any element and selecting “Inspect”. This brings up the Chrome developer tools, an extremely useful application which shows the HTML underlying any webpage.

+

To find a selector for the “CWRU ID” box, I right clicked in the box, hit “Inspect” and saw the following in developer tools. The highlighted line corresponds to the id box element (this line is called an HTML tag).

+

+

HTML in Chrome developer tools for the webpage

+

This HTML might look overwhelming, but we can ignore the majority of the information and focus on the id = "username" and name="username" parts. (these are known as attributes of the HTML tag).

+

To select the id box with our web driver, we can use either the id or name attribute we found in the developer tools. Web drivers in selenium have many different methods for selecting elements on a webpage and there are often multiple ways to select the exact same item:

+

# Select the id box
+id_box = driver.find_element_by_name(‘username’)# Equivalent Outcome!
+id_box = driver.find_element_by_id(‘username’)

+

Our program now has access to the id_box and we can interact with it in various ways, such as typing in keys, or clicking (if we have selected a button).

+

# Send id information
+id_box.send_keys(‘my_username’)

+

We carry out the same process for the password box and login button, selecting each based on what we see in the Chrome developer tools. Then, we send information to the elements or click on them as needed.

+

# Find password box
+pass_box = driver.find_element_by_name(‘password’)# Send password
+pass_box.send_keys(‘my_password’)# Find login button
+login_button = driver.find_element_by_name(‘submit’)# Click login
+login_button.click()

+

Once we are logged in, we are greeted by this slightly intimidating dashboard:

+

+

We again need to guide the program through the webpage by specifying exactly the elements to click on and the information to enter. In this case, I tell the program to select courses from the menu on the left, and then the class corresponding to the assignment I need to turn in:

+

# Find and click on list of courses
+courses_button = driver.find_element_by_id(‘global_nav_courses_link’)courses_button.click()# Get the name of the folder
+folder = file_tup[0]

+
# Class to select depends on folder  
+

if folder == ‘EECS491’:
+class_select = driver.find_element_by_link_text(‘Artificial Intelligence: Probabilistic Graphical Models (100/10039)’)

+

elif folder == ‘EECS531’:
+class_select = driver.find_element_by_link_text(‘Computer Vision (100/10040)’)# Click on the specific class
+class_select.click()

+

The program finds the correct class using the name of the folder we stored in the first step. In this case, I use the selection method find_element_by_link_text to find the specific class. The “link text” for an element is just another selector we can find by inspecting the page. :

+

This workflow may seem a little tedious, but remember, we only have to do it once when we write our program! After that, we can hit run as many times as we want and the program will navigate through all these pages for us.

+

We use the same ‘inspect page — select element — interact with element’ process to get through a couple more screens. Finally, we reach the assignment submission page:

+

+

At this point, I could see the finish line, but initially this screen perplexed me. I could click on the “Choose File” box pretty easily, but how was I supposed to select the actual file I need to upload? The answer turns out to be incredibly simple! We locate the Choose File box using a selector, and use the send_keys method to pass the exact path of the file (called file_location in the code below) to the box:

+

# Choose File button
+choose_file = driver.find_element_by_name(‘attachments[0][uploaded_data]’)# Complete path of the file
+file_location = os.path.join(submission_dir, folder, file_name)# Send the file location to the button
+choose_file.send_keys(file_location)

+

That’s it! By sending the exact path of the file to the button, we can skip the whole process of navigating through folders to find the right file. After sending the location, we are rewarded with the following screen showing that our file is uploaded and ready for submission.

+

+

Now, we select the “Submit Assignment” button, click, and our assignment is turned in!

+

# Locate submit button and click
+submit_assignment = driver.find_element_by_id(‘submit_file_button’)
+submit_assignent.click()

+

+

Cleaning Up

+

File management is always a critical step and I want to make sure I don’t re-submit or lose old assignments. I decided the best solution was to store a single file to be submitted in the completed_assignments folder at any one time and move files to asubmitted_assignments folder once they had been turned in. The final bit of code uses the os module to move the completed assignment by renaming it with the desired location:

+

# Location of files after submission
+submitted_file_location = os.path.join(submitted_dir, submitted_file_name)# Rename essentially copies and pastes files
+os.rename(file_location, submitted_file_location)

+

All of the proceeding code gets wrapped up in a single script, which I can run from the command line. To limit opportunities for mistakes, I only submit one assignment at a time, which isn’t a big deal given that it only takes about 5 seconds to run the program!

+

Here’s what it looks like when I start the program:

+

+

The program provides me with a chance to make sure this is the correct assignment before uploading. After the program has completed, I get the following output:

+

While the program is running, I can watch Python go to work for me:

+

+

The technique of automating the web with Python works great for many tasks, both general and in my field of data science. For example, we could use selenium to automatically download new data files every day (assuming the website doesn’t have an API). While it might seem like a lot of work to write the script initially, the benefit comes from the fact that we can have the computer repeat this sequence as many times as want in exactly the same manner. The program will never lose focus and wander off to Twitter. It will faithfully carry out the same exact series of steps with perfect consistency (which works great until the website changes).

+

I should mention you do want to be careful before you automate critical tasks. This example is relatively low-risk as I can always go back and re-submit assignments and I usually double-check the program’s handiwork. Websites change, and if you don’t change the program in response you might end up with a script that does something completely different than what you originally intended!

+

In terms of paying off, this program saves me about 30 seconds for every assignment and took 2 hours to write. So, if I use it to turn in 240 assignments, then I come out ahead on time! However, the payoff of this program is in designing a cool solution to a problem and learning a lot in the process. While my time might have been more effectively spent working on assignments rather than figuring out how to automatically turn them in, I thoroughly enjoyed this challenge. There are few things as satisfying as solving problems, and Python turns out to be a pretty good tool for doing exactly that.

+

As always, I welcome feedback and constructive criticism. I can be reached on Twitter [@koehrsen\_will](http://twitter.com/@koehrsen_will).

+

Source

+ + diff --git a/Readings/Controlling the Web with Python.md b/Readings/Controlling the Web with Python.md new file mode 100644 index 00000000..0b18b4e1 --- /dev/null +++ b/Readings/Controlling the Web with Python.md @@ -0,0 +1,150 @@ +# Controlling the Web with Python + +> An adventure in simple web automation + +Anytime we find ourselves repeating tedious actions on the web with the same sequence of steps, this is a great chance to write a program to automate the process for us. With selenium and Python, we just need to write a script once, and which then we can run it as many times and save ourselves from repeating monotonous tasks (and in my case, eliminate the chance of submitting an assignment in the wrong place)! + +Here, I’ll walk through the solution I developed to automatically (and correctly) submit my assignments. Along the way, we’ll cover the basics of using Python and selenium to programmatically control the web. While this program does work (I’m using it every day!) it’s pretty custom so you won’t be able to copy and paste the code for your application. Nonetheless, the general techniques here can be applied to a limitless number of situations. (If you want to see the complete code, it’s [available on GitHub](https://gist.github.com/WillKoehrsen/127fb3963b12b4f0b339ff0c8ee14558)). + +Before we can get to the fun part of automating the web, we need to figure out the general structure of our solution. Jumping right into programming without a plan is a great way to waste many hours in frustration. I want to write a program to submit completed course assignments to the correct location on Canvas (my university’s [“learning management system”](https://en.wikipedia.org/wiki/Learning_management_system)). Starting with the basics, I need a way to tell the program the name of the assignment to submit and the class. I went with a simple approach and created a folder to hold completed assignments with child folders for each class. In the child folders, I place the completed document named for the particular assignment. The program can figure out the name of the class from the folder, and the name of the assignment by the document title. + +Here’s an example where the name of the class is EECS491 and the assignment is “Assignment 3 — Inference in Larger Graphical Models”. + +![](https://miro.medium.com/max/1382/1*3WzLi_pB4gI999Xzp_tBrQ.png) + +File structure (left) and Complete Assignment (right) + +The first part of the program is a loop to go through the folders to find the assignment and class, which we store in a Python tuple: + +\# os for file management +import os\# Build tuple of (class, file) to turn in +submission\_dir = 'completed\_assignments'dir\_list = list(os.listdir(submission\_dir))for directory in dir\_list: + file\_list = list(os.listdir(os.path.join(submission\_dir, +directory))) + if len(file\_list) != 0: + file\_tup = (directory, file\_list\[0\]) + + print(file\_tup) + +**('EECS491', 'Assignment 3 - Inference in Larger Graphical Models.txt')** + +This takes care of file management and the program now knows the program and the assignment to turn in. The next step is to use selenium to navigate to the correct webpage and upload the assignment. + +Web Control with Selenium +------------------------- + +To get started with selenium, we import the library and create a web driver, which is a browser that is controlled by our program. In this case, I’ll use Chrome as my browser and send the driver to the Canvas website where I submit assignments. + +import selenium\# Using Chrome to access web +driver = webdriver.Chrome()\# Open the website +driver.get('[https://canvas.case.edu'](https://canvas.case.edu%27/)) + +When we open the Canvas webpage, we are greeted with our first obstacle, a login box! To get past this, we will need to fill in an id and a password and click the login button. + +![](https://miro.medium.com/max/1294/1*6K21H6TqFp52ilxqhnyJ7g.png) + +Imagine the web driver as a person who has never seen a web page before: we need to tell it exactly where to click, what to type, and which buttons to press. There are a number of ways to tell our web driver what elements to find, all of which use selectors. A [selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Introduction_to_CSS/Selectors) is a unique identifier for an element on a webpage. To find the selector for a specific element, say the CWRU ID box above, we need to inspect the webpage. In Chrome, this is done by pressing “ctrl + shift + i” or right clicking on any element and selecting “Inspect”. This brings up the [Chrome developer tools](https://developer.chrome.com/devtools), an extremely useful application which shows the [HTML underlying any webpage](https://www.pathinteractive.com/blog/design-development/rendering-a-webpage-with-google-webmaster-tools/). + +To find a selector for the “CWRU ID” box, I right clicked in the box, hit “Inspect” and saw the following in developer tools. The highlighted line corresponds to the id box element (this line is called an HTML tag). + +![](https://miro.medium.com/max/1888/1*smbJ9oczUAAZ5aSCREAvWA.png) + +HTML in Chrome developer tools for the webpage + +This HTML might look overwhelming, but we can ignore the majority of the information and focus on the `id = "username"` and `name="username"` parts. (these are known as attributes of the HTML tag). + +To select the id box with our web driver, we can use either the `id` or `name` attribute we found in the developer tools. Web drivers in selenium have many different methods for selecting elements on a webpage and there are often multiple ways to select the exact same item: + +\# Select the id box +id\_box = driver.find\_element\_by\_name('username')\# Equivalent Outcome! +id\_box = driver.find\_element\_by\_id('username') + +Our program now has access to the `id_box` and we can interact with it in various ways, such as typing in keys, or clicking (if we have selected a button). + +\# Send id information +id\_box.send\_keys('my\_username') + +We carry out the same process for the password box and login button, selecting each based on what we see in the Chrome developer tools. Then, we send information to the elements or click on them as needed. + +\# Find password box +pass\_box = driver.find\_element\_by\_name('password')\# Send password +pass\_box.send\_keys('my\_password')\# Find login button +login\_button = driver.find\_element\_by\_name('submit')\# Click login +login\_button.click() + +Once we are logged in, we are greeted by this slightly intimidating dashboard: + +![](https://miro.medium.com/max/2456/1*jG-_h99LhbiWsJSeMwSGaw.png) + +We again need to guide the program through the webpage by specifying exactly the elements to click on and the information to enter. In this case, I tell the program to select courses from the menu on the left, and then the class corresponding to the assignment I need to turn in: + +\# Find and click on list of courses +courses\_button = driver.find\_element\_by\_id('global\_nav\_courses\_link')courses\_button.click()\# Get the name of the folder +folder = file\_tup\[0\] + + # Class to select depends on folder +if folder == 'EECS491': + class\_select = driver.find\_element\_by\_link\_text('Artificial Intelligence: Probabilistic Graphical Models (100/10039)') + +elif folder == 'EECS531': + class\_select = driver.find\_element\_by\_link\_text('Computer Vision (100/10040)')\# Click on the specific class +class\_select.click() + +The program finds the correct class using the name of the folder we stored in the first step. In this case, I use the selection method `find_element_by_link_text` to find the specific class. The “link text” for an element is just another selector we can find by inspecting the page. : + +This workflow may seem a little tedious, but remember, we only have to do it once when we write our program! After that, we can hit run as many times as we want and the program will navigate through all these pages for us. + +We use the same ‘inspect page — select element — interact with element’ process to get through a couple more screens. Finally, we reach the assignment submission page: + +![](https://miro.medium.com/max/1496/1*iyz1HiKgExkyWmzW2M5Vxg.png) + +At this point, I could see the finish line, but initially this screen perplexed me. I could click on the “Choose File” box pretty easily, but how was I supposed to select the actual file I need to upload? The answer turns out to be incredibly simple! We locate the `Choose File` box using a selector, and use the `send_keys` method to pass the exact path of the file (called `file_location` in the code below) to the box: + +\# Choose File button +choose\_file = driver.find\_element\_by\_name('attachments\[0\]\[uploaded\_data\]')\# Complete path of the file +file\_location = os.path.join(submission\_dir, folder, file\_name)\# Send the file location to the button +choose\_file.send\_keys(file\_location) + +That’s it! By sending the exact path of the file to the button, we can skip the whole process of navigating through folders to find the right file. After sending the location, we are rewarded with the following screen showing that our file is uploaded and ready for submission. + +![](https://miro.medium.com/max/1546/1*RUaMhWWmRg47s10a8Pv6lg.png) + +Now, we select the “Submit Assignment” button, click, and our assignment is turned in! + +\# Locate submit button and click +submit\_assignment = driver.find\_element\_by\_id('submit\_file\_button') +submit\_assignent.click() + +![](https://miro.medium.com/max/416/1*dfC4W3awW86kw-KpQH-rOQ.png) + +Cleaning Up +----------- + +File management is always a critical step and I want to make sure I don’t re-submit or lose old assignments. I decided the best solution was to store a single file to be submitted in the `completed_assignments` folder at any one time and move files to a`submitted_assignments` folder once they had been turned in. The final bit of code uses the os module to move the completed assignment by renaming it with the desired location: + +\# Location of files after submission +submitted\_file\_location = os.path.join(submitted\_dir, submitted\_file\_name)\# Rename essentially copies and pastes files +os.rename(file\_location, submitted\_file\_location) + +All of the proceeding code gets wrapped up in a single script, which I can run from the command line. To limit opportunities for mistakes, I only submit one assignment at a time, which isn’t a big deal given that it only takes about 5 seconds to run the program! + +Here’s what it looks like when I start the program: + +![](https://miro.medium.com/max/1618/1*FK2MNOJQgCabZdXAEYT2Gw.png) + +The program provides me with a chance to make sure this is the correct assignment before uploading. After the program has completed, I get the following output: + +While the program is running, I can watch Python go to work for me: + +![](https://miro.medium.com/max/1600/1*-drw9BuNnPEsDkm5TWRaOA.gif) + +The technique of automating the web with Python works great for many tasks, both general and in my field of data science. For example, we could use selenium to automatically download new data files every day (assuming the website doesn’t have an [API](https://en.wikipedia.org/wiki/Application_programming_interface)). While it might seem like a lot of work to write the script initially, the benefit comes from the fact that we can have the computer repeat this sequence as many times as want in exactly the same manner. The program will never lose focus and wander off to Twitter. It will faithfully carry out the same exact series of steps with perfect consistency (which works great until the website changes). + +I should mention you do want to be careful before you automate critical tasks. This example is relatively low-risk as I can always go back and re-submit assignments and I usually double-check the program’s handiwork. Websites change, and if you don’t change the program in response you might end up with a script that does something completely different than what you originally intended! + +In terms of paying off, this program saves me about 30 seconds for every assignment and took 2 hours to write. So, if I use it to turn in 240 assignments, then I come out ahead on time! However, the payoff of this program is in designing a cool solution to a problem and learning a lot in the process. While my time might have been more effectively spent working on assignments rather than figuring out how to automatically turn them in, I thoroughly enjoyed this challenge. There are few things as satisfying as solving problems, and Python turns out to be a pretty good tool for doing exactly that. + +As always, I welcome feedback and constructive criticism. I can be reached on Twitter [@koehrsen\_will](http://twitter.com/@koehrsen_will). + + +[Source](https://towardsdatascience.com/controlling-the-web-with-python-6fceb22c5f08) \ No newline at end of file diff --git a/Readings/How to build a URL crawler to map a website using Python.html b/Readings/How to build a URL crawler to map a website using Python.html new file mode 100644 index 00000000..9b862f5e --- /dev/null +++ b/Readings/How to build a URL crawler to map a website using Python.html @@ -0,0 +1,83 @@ + + + + + + + How to build a URL crawler to map a website using Python + + + +

How to build a URL crawler to map a website using Python

+
+

by Ahad Sheriff How to build a URL crawler to map a website using PythonA simple project for learning the fundamentals of web scrapingBefore we start, let’s make sure we understand what web scraping is: Web scraping is the process of extracting data from websites to present it in

+
+

by Ahad Sheriff

+

A simple project for learning the fundamentals of web scraping

+

+

Before we start, let’s make sure we understand what web scraping is:

+
+

Web scraping is the process of extracting data from websites to present it in a format users can easily make sense of.

+
+

In this tutorial, I want to demonstrate how easy it is to build a simple URL crawler in Python that you can use to map websites. While this program is relatively simple, it can provide a great introduction to the fundamentals of web scraping and automation. We will be focusing on recursively extracting links from web pages, but the same ideas can be applied to a myriad of other solutions.

+

Our program will work like this:

+
    +
  1. Visit a web page
  2. +
  3. Scrape all unique URL’s found on the webpage and add them to a queue
  4. +
  5. Recursively process URL’s one by one until we exhaust the queue
  6. +
  7. Print results
  8. +
+

First Things First

+

The first thing we should do is import all the necessary libraries. We will be using BeautifulSoup, requests, and urllib for web scraping.

+
from bs4 import BeautifulSoupimport requestsimport requests.exceptionsfrom urllib.parse import urlsplitfrom urllib.parse import urlparsefrom collections import deque
+

Next, we need to select a URL to start crawling from. While you can choose any webpage with HTML links, I recommend using ScrapeThisSite. It is a safe sandbox that you can crawl without getting in trouble.

+
url = “https://scrapethissite.com"
+

Next, we are going to need to create a new deque object so that we can easily add newly found links and remove them once we are finished processing them. Pre-populate the deque with your url variable:

+
# a queue of urls to be crawled nextnew_urls = deque([url])
+

We can then use a set to store unique URL’s once they have been processed:

+
# a set of urls that we have already processed processed_urls = set()
+

We also want to keep track of local (same domain as the target), foreign (different domain as the target), and broken URLs:

+
# a set of domains inside the target websitelocal_urls = set()
+
+# a set of domains outside the target websiteforeign_urls = set()
+
+# a set of broken urlsbroken_urls = set()
+

Time To Crawl

+

With all that in place, we can now start writing the actual code to crawl the website.

+

We want to look at each URL in the queue, see if there are any additional URL’s within that page and add each one to the end of the queue until there are none left. As soon as we finish scraping a URL, we will remove it from the queue and add it to the processed_urls set for later use.

+
# process urls one by one until we exhaust the queuewhile len(new_urls):    # move url from the queue to processed url set    url = new_urls.popleft()    processed_urls.add(url)    # print the current url    print(“Processing %s" % url)
+

Next, add an exception to catch any broken web pages and add them to the broken_urls set for later use:

+
try:    response = requests.get(url)
+
+except(requests.exceptions.MissingSchema, requests.exceptions.ConnectionError, requests.exceptions.InvalidURL, requests.exceptions.InvalidSchema):    # add broken urls to it’s own set, then continue    broken_urls.add(url)    continue
+

We then need to get the base URL of the webpage so that we can easily differentiate local and foreign addresses:

+
# extract base url to resolve relative linksparts = urlsplit(url)base = “{0.netloc}".format(parts)strip_base = base.replace(“www.", “")base_url = “{0.scheme}://{0.netloc}".format(parts)path = url[:url.rfind(‘/’)+1] if ‘/’ in parts.path else url
+

Initialize BeautifulSoup to process the HTML document:

+
soup = BeautifulSoup(response.text, “lxml")
+

Now scrape the web page for all links and sort add them to their corresponding set:

+
for link in soup.find_all(‘a’):    # extract link url from the anchor    anchor = link.attrs[“href"] if “href" in link.attrs else ‘’
+
+if anchor.startswith(‘/’):        local_link = base_url + anchor        local_urls.add(local_link)    elif strip_base in anchor:        local_urls.add(anchor)    elif not anchor.startswith(‘http’):        local_link = path + anchor        local_urls.add(local_link)    else:        foreign_urls.add(anchor)
+

Since I want to limit my crawler to local addresses only, I add the following to add new URLs to our queue:

+
for i in local_urls:    if not i in new_urls and not i in processed_urls:        new_urls.append(i)
+

If you want to crawl all URLs use:

+
if not link in new_urls and not link in processed_urls:    new_urls.append(link)
+

Warning: The way the program currently works, crawling foreign URL’s will take a VERY long time. You could possibly get into trouble for scraping websites without permission. Use at your own risk!

+

+

Sample output

+

Here is all my code:

+

And that should be it. You have just created a simple tool to crawl a website and map all URLs found!

+

In Conclusion

+

Feel free to build upon and improve this code. For example, you could modify the program to search web pages for email addresses or phone numbers as you crawl them. You could even extend functionality by adding command line arguments to provide the option to define output files, limit searches to depth, and much more. Learn about how to create command-line interfaces to accept arguments here.

+

If you have additional recommendations, tips, or resources, please share in the comments!

+

Thanks for reading! If you liked this tutorial and want more content like this, be sure to smash that follow button. ❤️

+

Also be sure to check out my website, Twitter, LinkedIn, and Github.

+

Learn to code for free. freeCodeCamp’s open source curriculum has helped more than 40,000 people get jobs as developers. Get started

+

Source

+ + diff --git a/Readings/How to build a URL crawler to map a website using Python.md b/Readings/How to build a URL crawler to map a website using Python.md new file mode 100644 index 00000000..486b78c5 --- /dev/null +++ b/Readings/How to build a URL crawler to map a website using Python.md @@ -0,0 +1,109 @@ +# How to build a URL crawler to map a website using Python + +> by Ahad Sheriff How to build a URL crawler to map a website using PythonA simple project for learning the fundamentals of web scrapingBefore we start, let’s make sure we understand what web scraping is: Web scraping is the process of extracting data from websites to present it in + +by Ahad Sheriff + +#### A simple project for learning the fundamentals of web scraping + +![](https://cdn-media-1.freecodecamp.org/images/1*ZxUfhtbRROKqcBqyfT8plA.jpeg) + +Before we start, let’s make sure we understand what web scraping is: + +> **Web scraping** is the process of extracting data from websites to present it in a format users can easily make sense of. + +In this tutorial, I want to demonstrate how easy it is to build a simple URL crawler in Python that you can use to map websites. While this program is relatively simple, it can provide a great introduction to the fundamentals of web scraping and automation. We will be focusing on recursively extracting links from web pages, but the same ideas can be applied to a myriad of other solutions. + +Our program will work like this: + +1. Visit a web page +2. Scrape all unique URL’s found on the webpage and add them to a queue +3. Recursively process URL’s one by one until we exhaust the queue +4. Print results + +### First Things First + +The first thing we should do is import all the necessary libraries. We will be using [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/), [requests](http://docs.python-requests.org/en/master/), and [urllib](https://docs.python.org/3/library/urllib.html) for web scraping. + + from bs4 import BeautifulSoupimport requestsimport requests.exceptionsfrom urllib.parse import urlsplitfrom urllib.parse import urlparsefrom collections import deque + +Next, we need to select a URL to start crawling from. While you can choose any webpage with HTML links, I recommend using [ScrapeThisSite](https://scrapethissite.com/). It is a safe sandbox that you can crawl without getting in trouble. + + url = “https://scrapethissite.com" + +Next, we are going to need to create a new [deque](https://docs.python.org/3.3/library/collections.html#collections.deque) object so that we can easily add newly found links and remove them once we are finished processing them. Pre-populate the deque with your `url` variable: + + # a queue of urls to be crawled nextnew_urls = deque([url]) + +We can then use a [set](https://docs.python.org/3.3/library/stdtypes.html?highlight=set#set) to store unique URL’s once they have been processed: + + # a set of urls that we have already processed processed_urls = set() + +We also want to keep track of local (same domain as the target), foreign (different domain as the target), and broken URLs: + + # a set of domains inside the target websitelocal_urls = set() + + # a set of domains outside the target websiteforeign_urls = set() + + # a set of broken urlsbroken_urls = set() + +### Time To Crawl + +With all that in place, we can now start writing the actual code to crawl the website. + +We want to look at each URL in the queue, see if there are any additional URL’s within that page and add each one to the end of the queue until there are none left. As soon as we finish scraping a URL, we will remove it from the queue and add it to the `processed_urls` set for later use. + + # process urls one by one until we exhaust the queuewhile len(new_urls): # move url from the queue to processed url set url = new_urls.popleft() processed_urls.add(url) # print the current url print(“Processing %s" % url) + +Next, add an exception to catch any broken web pages and add them to the `broken_urls` set for later use: + + try: response = requests.get(url) + + except(requests.exceptions.MissingSchema, requests.exceptions.ConnectionError, requests.exceptions.InvalidURL, requests.exceptions.InvalidSchema): # add broken urls to it’s own set, then continue broken_urls.add(url) continue + +We then need to get the base URL of the webpage so that we can easily differentiate local and foreign addresses: + + # extract base url to resolve relative linksparts = urlsplit(url)base = “{0.netloc}".format(parts)strip_base = base.replace(“www.", “")base_url = “{0.scheme}://{0.netloc}".format(parts)path = url[:url.rfind(‘/’)+1] if ‘/’ in parts.path else url + +Initialize BeautifulSoup to process the HTML document: + + soup = BeautifulSoup(response.text, “lxml") + +Now scrape the web page for all links and sort add them to their corresponding set: + + for link in soup.find_all(‘a’): # extract link url from the anchor anchor = link.attrs[“href"] if “href" in link.attrs else ‘’ + + if anchor.startswith(‘/’): local_link = base_url + anchor local_urls.add(local_link) elif strip_base in anchor: local_urls.add(anchor) elif not anchor.startswith(‘http’): local_link = path + anchor local_urls.add(local_link) else: foreign_urls.add(anchor) + +Since I want to limit my crawler to local addresses only, I add the following to add new URLs to our queue: + + for i in local_urls: if not i in new_urls and not i in processed_urls: new_urls.append(i) + +If you want to crawl all URLs use: + + if not link in new_urls and not link in processed_urls: new_urls.append(link) + +**_Warning:_** _The way the program currently works, crawling foreign URL’s will take a_ **_VERY_** _long time. You could possibly get into trouble for scraping websites without permission._ **_Use at your own risk!_** + +![](https://cdn-media-1.freecodecamp.org/images/1*Y5DwSdLwAIGOWuuyvp1HnA.png) + +Sample output + +Here is all my code: + +And that should be it. You have just created a simple tool to crawl a website and map all URLs found! + +### In Conclusion + +Feel free to build upon and improve this code. For example, you could modify the program to search web pages for email addresses or phone numbers as you crawl them. You could even extend functionality by adding command line arguments to provide the option to define output files, limit searches to depth, and much more. Learn about how to create command-line interfaces to accept arguments [here](https://medium.com/@ahadsheriff/the-best-way-to-make-command-line-interfaces-in-python-e00e8b9d10c9). + +If you have additional recommendations, tips, or resources, please share in the comments! + +Thanks for reading! If you liked this tutorial and want more content like this, be sure to smash that follow button. ❤️ + +Also be sure to check out my [website](https://ahadsheriff.com/), [Twitter](https://twitter.com/ahadsheriff), [LinkedIn](https://linkedin.com/in/ahadsheriff), and [Github](https://github.com/ahadsheriff). + +Learn to code for free. freeCodeCamp's open source curriculum has helped more than 40,000 people get jobs as developers. [Get started](https://www.freecodecamp.org/learn) + + +[Source](https://www.freecodecamp.org/news/how-to-build-a-url-crawler-to-map-a-website-using-python-6a287be1da11/) diff --git a/Readings/The Python RegEx Cheat Sheet for Budding Programmers.html b/Readings/The Python RegEx Cheat Sheet for Budding Programmers.html new file mode 100644 index 00000000..5ae6811f --- /dev/null +++ b/Readings/The Python RegEx Cheat Sheet for Budding Programmers.html @@ -0,0 +1,318 @@ + + + + + + + The Python RegEx Cheat Sheet for Budding Programmers + + + +

The Python RegEx Cheat Sheet for Budding Programmers

+
+

Use this list of Python regular expressions so that you can get better at using this versatile programming language.

+
+

print()Display the result of a commandx=“Hello world”
+print(x)

+

output: Hello world

+

input()Collect inputs from usersprint(input(“what is your name?”))

+

output: what is your name?

+

type()Find the type of a variablex=“Regular expressions”
+type(x)

+

output:

+

len()Find the number of items in a variablelen([1, 2, 3])

+

output: 3

+

\Escape a character that changes the intent of a line of codeprint(“I want you to add\”\"")

+

output: I want you to add""

+

\nBreak a string character to start on the next lineprint(“This is a line \n This is a second line”)

+

output:
+This is a line
+This is a second line

+

def function_name(parameter):
+commandsInitiate a function with an optional parameterdef yourName(x):
+print(x+1)lambdaCall an anonymous functionadd_3_to = lambda y: y+3
+print(add_3_to(4))

+

output: 7

+

returnReturn a result from a functiondef yourName(x):
+return x+1classCreate a Python objectclass myClass:
+def myFunc(x):def __init__Initialize the attrributes of a classclass myClass:
+def __init__(self, attributes…)"__init__.pySave a file containing a module so that it’s read successfully in another Python fileRename a file containing a module as:

+

"__init__.py

+

int()Convert a variable to integerint(1.234)

+

output: 1

+

str()Convert a variable to stringstr(1.234)

+

output: ‘1.234’

+

float()Convert a variable to floatfloat(23)

+

output: 23.0

+

dict(Counter())Convert a list or a tupple into a dictionary after sorting with a Python built-in Counterfrom collections import Counter
+dict(Counter([1,1,2,1,2,3,3,4]))

+

output: {1: 3, 2: 2, 3: 2, 4: 1}

+

round()Round up the output of an operation to the nearest whole numberround(23.445)

+

output: 23

+

round(operation or number, decimal places)Round up the output of an operation to a specific number of decimal placesround(23.4568, 2)

+

output: 23.46

+

if:Initiate a conditional statementif 2<3:
+print(“Two is smaller”)elif:Make a counterstatement when the if statement is Falseif 2<3:
+print(“Two is smaller”)
+elif 2==3:
+print(“Go on”)else:Make a final counterstatement if other conditions are Falseif 2<3:
+print(“Two is smaller”)
+elif 2==3:
+print(“Go on”)
+else:
+print(“Three is greater”)continueIgnore a condition and execute the rest of the loopa=[1, 4, -10, 6, 8]
+for b in a:
+if b<=0:
+continue
+print(b)

+

output:
+1
+4
+6
+8

+

breakTerminate the flow of a loop with a given conditiona=[1, 4, -10, 6, 8]
+for b in a:
+if b>=6:
+break
+print(b)

+

output:
+1
+4
+-10

+

passIgnore a set of prior instructionsfor b in a:
+passtry, except
+Try a block of code, else, raise a defined exceptiontry:
+print(a)

+

except:
+print(“An error occured!”)

+

output: An error occured!

+

finallyExecute a final code when the try and the except blocks failtry:
+print(a)

+

except:
+print(d)
+finally:
+print(“You can’t print an undefined variable”)

+

output: You can’t print an undefined variable

+

raise Exception()Raise an exception that stops the command when execution isn’t possiblea=7+2
+if a<10:
+raise Exception(“Oh! You didn’t get a score of 10”)import xImport a whole module or libraryimport mathfrom x import yImport a library x from a file, or a class yfrom scipy.stats import modeasCustomize an expression to your preferred nameimport pandas as pdinCheck if a value is present in a variablex=[1, 4, 6, 7]
+if 5 in x:
+print(“There is a five”)
+else:
+print(“There is no five”)

+

output: There is no five

+

isCheck if two variables refer to a single elementx=[1, 4, 6, 7]
+x=b
+print(x is b)
+TrueNoneDeclare a null valuex=None<Check if one value is lesser than another5<10

+

output: True

+

>Check if one value is more than another5>10

+

output: False

+

<=Check if a value is lesser or equal to another2*2<=3

+

output: False

+

>=Check if a value is greater or equal to another2*2>=3

+

output: True

+

"==Check if a value is exactly equal to the other3==4

+

ouput: False

+

!=Ascertain that a value is not equal to the other3!=4

+

ouput: True

+

import reImport Python’s built-in regular expressionsimport re
+re.findall(“strings”, variable)a|bCheck if either of two elements are present in a stringimport re
+someText=“Hello regular expression”
+a=re.findall(“regular|Hello”, someText)
+print(a)

+

output: [‘Hello’, ‘regular’]

+

string$Check if a variable ends with a set of stringsimport re someText="Hello regular expression" a=re.findall("expression$", someText)

+

output: [‘expression’]

+

^stringCheck if a variable starts with a set of stringsimport re
+someText=“Hello regular expression”
+a=re.findall(“^Hello”, someText)
+print(a)

+

output: [‘Hello’]

+

string.index()Check the index position of a string charactera= “Hello World”
+a.index(‘H’)

+

output: 0

+

string.capitalize()Capitalize the first character in a set of stringsa= “Hello World”
+a.capitalize()

+

output: ‘Hello world’

+

string.swapcase()Print the first letter of each word as a lower case and the others as upper casea= “Hello World”
+a.swapcase()

+

output:
+‘hELLO wORLD’

+

string.lower()Convert all the strings to a lowercasea= “Hello World”
+a.lower()

+

output: ‘hello world’

+

string.upper()Convert all strings to uppercasea= “Hello World”
+a.upper()

+

output: ‘HELLO WORLD’

+

string.startswith()Check if a string starts with a particular charactera= “Hello World”
+a.startswith(‘a’)

+

output: False

+

string.endswith()Check if a string ends with a particular charactera= “Hello World”
+a.endswith(‘d’)

+

output: True

+

string.split()Separate each word into a lista= “Hello World”
+a.split()

+

output: [‘Hello’, ‘world’]

+

strings {}’.format()Display an output as stringa=3+4
+print(“The answer is {}”.format(a))

+

output: The answer is 7

+

is not NoneCheck if the value of a variable is not emptydef checknull(a):
+if a is not None:
+return “its full!”
+else:
+return “its empty!”x%yFind the remainder (modulus) of a division9%4

+

output: 1

+

x//yFind the quotient of a division9//4

+

output: 2

+

“=Assign a value to a variablea={1:5, 3:4}”+Add elements together[“a two”] + [“a one”]

+

output: [‘a two’, ‘a one’]

+

1+3

+

output=4

+

"-Find the difference between a set of numbers3-4

+

output=-1

+

"*Find the product of a set of numbers3*4

+

output:12

+

a+=xAdd x to variable a without assigning its value to a new variablea=2
+a+=3

+

output: 5

+

a-=xSubsract x from variable a without assigning it to a new variablea=3
+a-=2

+

output: 1

+

a*=xFind the product of variable a and x without assigning the resullt to a new variablea=[1, 3, 4]
+a*=2

+

output: [1, 3, 4, 1, 3, 4]

+

x**yRaise base x to power y2**3

+

output: 8

+

pow(x, y)Raise x to the power of ypow(2, 3)

+

output: 8

+

abs(x)Convert a negative integer to its absolute valueabs(-5)

+

output: 5

+

x**(1/nth)Find the nth root of a number8**(1/3)

+

output: 2

+

a=b=c=d=xAssign the same value to multiple variablesa=b=c=d=“Hello world”x, y = y, xSwap variablesx = [1, 2]
+y = 3
+x, y = y, x
+print(x, y)

+

output:
+3 [1, 2]

+

forLoop through the elements in a variablea=[1, 3, 5]
+for b in a:
+print(b, “x”, “2”, “=”, b*2)

+

output:
+1 x 2 = 2
+3 x 2 = 6
+5 x 2 = 10

+

whileKeep looping through a variable, as far as a particular condition remains True a=4
+b=2
+while b<=a:
+print(b, “is lesser than”, a)
+b+=1

+

output:
+2 is lesser than 4
+3 is lesser than 4
+4 is lesser than 4

+

range()Create a range of positive integers between x and yx=range(4)
+print(x)
+range(0, 4)
+for b in x:
+print(b)

+

output:
+0
+1
+2
+3

+

sum()Iterate through the elements in a listprint(sum([1, 2, 3]))

+

output:6

+

sum(list, start)Return the sum of a list with an added elementprint(sum([1, 2, 3], 3))

+

output: 9

+

[]Make a list of elementsx=[‘a’, 3, 5, ‘h’, [1, 3, 3], {‘d’:3}]()Create a tupple—tupples are immutablex=(1, 2, ‘g’, 5){}Create a dictionarya={‘x’:6, ‘y’:8}x[a:b]Slice through a listx=[1, 3, 5, 6]
+x[0:2]

+

output: [1, 3]

+

x[key]Get the value of a key in dictionary xa={‘x’:6, ‘y’:8}
+print(a[‘x’])

+

output: 6

+

x.append()Add a list of values to an empty listx=[1]
+x.append([1,2,3])
+print(x)

+

output: [1, [1,2,3]]

+

x.extend()Add a list of values to continue an existing list without necessarily creating a nested listx=[1,2]
+x.extend([3,4,6,2])
+print(x)

+

output:
+[1, 2, 3, 4, 6, 2]

+

del(x[a:b])Delete an item completely from a list at a specific indexx=[1,2,3,5]
+del(x[0:2])
+print(x)

+

output: [2,3,5]

+

del(x[key])Delete a key and a value completely from a dictionary at a specific indexy={1:3, 2:5, 4:6, 8:2}
+del(y[1], y[8])
+print(y)

+

output= {2:5, 4:6}

+

dict.pop()Pop out the value of a key and remove it from a dictionary at a specific indexa={1:3, 2:4, 5:6}
+a.pop(1)

+

output: 3

+

dict.popitem()Pop out the last item from a dictionary and delete ita={1:2, 4:8, 3:5}
+a.popitem()

+

output: (3, 5)
+print(a)
+output: {1:2, 4:8}

+

list.pop()Pop out a given index from a list and remove it from a lista=[1, 3, 2, 4, 1, 6, 6, 4]
+a.pop(-2)

+

output: 6
+print(a)
+output: [1, 3, 2, 4, 1, 6, 4]

+

clear()Empty the elements of a list or a dictionaryx=[1, 3, 5]
+x.clear()
+print(x)

+

output: []

+

remove()Remove an item from a listx=[1, 5, 6, 7]
+x.remove(1)

+

output: [5, 6, 7]

+

insert()Insert elements into a llistx=[3, 5, 6]
+x.insert(1, 4)
+print(x)

+

output: [1, 4, 3, 5, 6]

+

sort(reverse=condition)Reverse the direction of the elements in a listx=[1, 3, 5, 6]
+x.sort(reverse=True)
+print(x)

+

output: [6, 5, 3, 1]

+

update()Update a dictionary by changing its first element and adding any other item to its endx={1:3, 5:6}
+x.update({1:4, 8:7, 4:4})
+print(x)

+

output: {1: 4, 5: 6, 8: 7, 4: 4}

+

keys()Show all the keys in a dictionarya={1:2, 4:8}
+a.keys()

+

output: dict_keys([1, 4])

+

values()Show all the values in a dictionarya={1:2, 4:8}
+a.values()

+

output: dict_values([2, 8])

+

items()Display the keys and the values in a dictionarya={1:2, 4:8}
+a.items()

+

output: dict_items([(1, 2), (4, 8)])

+

get(key)Get the value of an item in a dictionary by its keya={1:2, 4:8, 3:5}
+a.get(1)

+

output: 2

+

setdefault(key)Return the original value of an element to a dictionarya.setdefault(2)f={**a, **b}Merge two dictionariesa={‘x’:6, ‘y’:8}
+b={‘c’:5, ‘d’:3}
+f={**a, **y}
+print(f)

+

output:{‘x’: 6, ‘y’: 8, ‘c’: 5, ‘d’: 3}

+

remove()Remove the first matching value of an element from a list without minding its indexa=[1, 3, 2, 4, 4, 1, 6, 6, 4]
+a.remove(4)
+print(a)

+

output: [1, 3, 2, 4, 1, 6, 6, 4]

+

memoryview(x)Access the internal buffers of an objecta=memoryview(object)bytes()Convert a memory buffer protocol into bytesbytes(a[0:2])bytearray()Return an array of bytesbytearray(object)#Write a single line of comment or prevent a line of code from being executed# Python regex cheat sheet""" ""“Write a multi-line comment”"“The Python regex cheat sheet is good for beginners
+It’s equally a great refresher for experts”"“Command Linepip install packageInstall an online librarypip install pandasvirtualenv nameUse virtaulenv to create a virtual environmentvirtualenv myprojectmkvirtualenv nameUse virtual environment wrapper to create virtual environmentmkvirtualenv myprojectpython file.pyRun the commands in a Python file”python my_file.pypip freezeList out all the installed packages in a virtual environmentpip freezepip freeze > somefilesCopy all installed libraries in a single filepip freeze > requirements.txtwhereFind the installation path of Pythonwhere python–versionCheck the version of a packagepython –version.exeRun a Python shellpython.exewith open(file, ‘w’)Write to an existing file and overwrite its existing contentwith open(‘regex.txt’, ‘w’) as wf:
+wf.write(“Hello World!”)with open(file, ‘r’)Open a file as read-onlywith open(‘regex.txt’, ‘r’) as rf:
+print(rf.read()with open(file, ‘a’)Write to a file without overwriting its existing contentwith open(‘regex.txt’, ‘a’) as af:
+af.write(“\nHello Yes!”)file.closeClose a file if it’s not in useaf=open(‘regex.txt’)
+af.closeexitExit the Python shellexit()

+

Source

+ + diff --git a/Readings/The Python RegEx Cheat Sheet for Budding Programmers.md b/Readings/The Python RegEx Cheat Sheet for Budding Programmers.md new file mode 100644 index 00000000..57671350 --- /dev/null +++ b/Readings/The Python RegEx Cheat Sheet for Budding Programmers.md @@ -0,0 +1,459 @@ +# The Python RegEx Cheat Sheet for Budding Programmers + +> Use this list of Python regular expressions so that you can get better at using this versatile programming language. + +print()Display the result of a commandx="Hello world" +print(x) + +output: Hello world + +input()Collect inputs from usersprint(input("what is your name?")) + +output: what is your name? + +type()Find the type of a variablex="Regular expressions" +type(x) + +output: + +len()Find the number of items in a variablelen(\[1, 2, 3\]) + +output: 3 + +\\Escape a character that changes the intent of a line of codeprint("I want you to add\\"\\"") + +output: I want you to add"" + +\\nBreak a string character to start on the next lineprint("This is a line \\n This is a second line") + +output: +This is a line +This is a second line + +def function\_name(parameter): +commandsInitiate a function with an optional parameterdef yourName(x): +print(x+1)lambdaCall an anonymous functionadd\_3\_to = lambda y: y+3 +print(add\_3\_to(4)) + +output: 7 + +returnReturn a result from a functiondef yourName(x): +return x+1classCreate a Python objectclass myClass: +def myFunc(x):def \_\_init\_\_Initialize the attrributes of a classclass myClass: +def \_\_init\_\_(self, attributes...)"\_\_init\_\_.pySave a file containing a module so that it's read successfully in another Python fileRename a file containing a module as: + +"\_\_init\_\_.py + +int()Convert a variable to integerint(1.234) + +output: 1 + +str()Convert a variable to stringstr(1.234) + +output: '1.234' + +float()Convert a variable to floatfloat(23) + +output: 23.0 + +dict(Counter())Convert a list or a tupple into a dictionary after sorting with a Python built-in Counterfrom collections import Counter +dict(Counter(\[1,1,2,1,2,3,3,4\])) + +output: {1: 3, 2: 2, 3: 2, 4: 1} + +round()Round up the output of an operation to the nearest whole numberround(23.445) + +output: 23 + +round(operation or number, decimal places)Round up the output of an operation to a specific number of decimal placesround(23.4568, 2) + +output: 23.46 + +if:Initiate a conditional statementif 2<3: +print("Two is smaller")elif:Make a counterstatement when the if statement is Falseif 2<3: +print("Two is smaller") +elif 2==3: +print("Go on")else:Make a final counterstatement if other conditions are Falseif 2<3: +print("Two is smaller") +elif 2==3: +print("Go on") +else: +print("Three is greater")continueIgnore a condition and execute the rest of the loopa=\[1, 4, -10, 6, 8\] +for b in a: +if b<=0: +continue +print(b) + +output: +1 +4 +6 +8 + +breakTerminate the flow of a loop with a given conditiona=\[1, 4, -10, 6, 8\] +for b in a: +if b>=6: +break +print(b) + +output: +1 +4 +\-10 + +passIgnore a set of prior instructionsfor b in a: +passtry, except +Try a block of code, else, raise a defined exceptiontry: +print(a) + +except: +print("An error occured!") + +output: An error occured! + +finallyExecute a final code when the try and the except blocks failtry: +print(a) + +except: +print(d) +finally: +print("You can't print an undefined variable") + +output: You can't print an undefined variable + +raise Exception()Raise an exception that stops the command when execution isn't possiblea=7+2 +if a<10: +raise Exception("Oh! You didn't get a score of 10")import xImport a whole module or libraryimport mathfrom x import yImport a library x from a file, or a class yfrom scipy.stats import modeasCustomize an expression to your preferred nameimport pandas as pdinCheck if a value is present in a variablex=\[1, 4, 6, 7\] +if 5 in x: +print("There is a five") +else: +print("There is no five") + +output: There is no five + +isCheck if two variables refer to a single elementx=\[1, 4, 6, 7\] +x=b +print(x is b) +TrueNoneDeclare a null valuex=NoneCheck if one value is more than another5>10 + +output: False + +<=Check if a value is lesser or equal to another2\*2<=3 + +output: False + +\>=Check if a value is greater or equal to another2\*2>=3 + +output: True + +"==Check if a value is exactly equal to the other3==4 + +ouput: False + +!=Ascertain that a value is not equal to the other3!=4 + +ouput: True + +import reImport Python's built-in regular expressionsimport re +re.findall("strings", variable)a|bCheck if either of two elements are present in a stringimport re +someText="Hello regular expression" +a=re.findall("regular|Hello", someText) +print(a) + +output: \['Hello', 'regular'\] + +string$Check if a variable ends with a set of stringsimport re +someText="Hello regular expression" +a=re.findall("expression$", someText) + +output: \['expression'\] + +^stringCheck if a variable starts with a set of stringsimport re +someText="Hello regular expression" +a=re.findall("^Hello", someText) +print(a) + +output: \['Hello'\] + +string.index()Check the index position of a string charactera= "Hello World" +a.index('H') + +output: 0 + +string.capitalize()Capitalize the first character in a set of stringsa= "Hello World" +a.capitalize() + +output: 'Hello world' + +string.swapcase()Print the first letter of each word as a lower case and the others as upper casea= "Hello World" +a.swapcase() + +output: +'hELLO wORLD' + +string.lower()Convert all the strings to a lowercasea= "Hello World" +a.lower() + +output: 'hello world' + +string.upper()Convert all strings to uppercasea= "Hello World" +a.upper() + +output: 'HELLO WORLD' + +string.startswith()Check if a string starts with a particular charactera= "Hello World" +a.startswith('a') + +output: False + +string.endswith()Check if a string ends with a particular charactera= "Hello World" +a.endswith('d') + +output: True + +string.split()Separate each word into a lista= "Hello World" +a.split() + +output: \['Hello', 'world'\] + +strings {}'.format()Display an output as stringa=3+4 +print("The answer is {}".format(a)) + +output: The answer is 7 + +is not NoneCheck if the value of a variable is not emptydef checknull(a): +if a is not None: +return "its full!" +else: +return "its empty!"x%yFind the remainder (modulus) of a division9%4 + +output: 1 + +x//yFind the quotient of a division9//4 + +output: 2 + +"=Assign a value to a variablea={1:5, 3:4}"+Add elements together\["a two"\] + \["a one"\] + +output: \['a two', 'a one'\] + +1+3 + +output=4 + +"-Find the difference between a set of numbers3-4 + +output=-1 + +"\*Find the product of a set of numbers3\*4 + +output:12 + +a+=xAdd x to variable a without assigning its value to a new variablea=2 +a+=3 + +output: 5 + +a-=xSubsract x from variable a without assigning it to a new variablea=3 +a-=2 + +output: 1 + +a\*=xFind the product of variable a and x without assigning the resullt to a new variablea=\[1, 3, 4\] +a\*=2 + +output: \[1, 3, 4, 1, 3, 4\] + +x\*\*yRaise base x to power y2\*\*3 + +output: 8 + +pow(x, y)Raise x to the power of ypow(2, 3) + +output: 8 + +abs(x)Convert a negative integer to its absolute valueabs(-5) + +output: 5 + +x\*\*(1/nth)Find the nth root of a number8\*\*(1/3) + +output: 2 + +a=b=c=d=xAssign the same value to multiple variablesa=b=c=d="Hello world"x, y = y, xSwap variablesx = \[1, 2\] +y = 3 +x, y = y, x +print(x, y) + +output: +3 \[1, 2\] + +forLoop through the elements in a variablea=\[1, 3, 5\] +for b in a: +print(b, "x", "2", "=", b\*2) + +output: +1 x 2 = 2 +3 x 2 = 6 +5 x 2 = 10 + +whileKeep looping through a variable, as far as a particular condition remains True a=4 +b=2 +while b<=a: +print(b, "is lesser than", a) +b+=1 + +output: +2 is lesser than 4 +3 is lesser than 4 +4 is lesser than 4 + +range()Create a range of positive integers between x and yx=range(4) +print(x) +range(0, 4) +for b in x: +print(b) + +output: +0 +1 +2 +3 + +sum()Iterate through the elements in a listprint(sum(\[1, 2, 3\])) + +output:6 + +sum(list, start)Return the sum of a list with an added elementprint(sum(\[1, 2, 3\], 3)) + +output: 9 + +\[\]Make a list of elementsx=\['a', 3, 5, 'h', \[1, 3, 3\], {'d':3}\]()Create a tupple---tupples are immutablex=(1, 2, 'g', 5){}Create a dictionarya={'x':6, 'y':8}x\[a:b\]Slice through a listx=\[1, 3, 5, 6\] +x\[0:2\] + +output: \[1, 3\] + +x\[key\]Get the value of a key in dictionary xa={'x':6, 'y':8} +print(a\['x'\]) + +output: 6 + +x.append()Add a list of values to an empty listx=\[1\] +x.append(\[1,2,3\]) +print(x) + +output: \[1, \[1,2,3\]\] + +x.extend()Add a list of values to continue an existing list without necessarily creating a nested listx=\[1,2\] +x.extend(\[3,4,6,2\]) +print(x) + +output: +\[1, 2, 3, 4, 6, 2\] + +del(x\[a:b\])Delete an item completely from a list at a specific indexx=\[1,2,3,5\] +del(x\[0:2\]) +print(x) + +output: \[2,3,5\] + +del(x\[key\])Delete a key and a value completely from a dictionary at a specific indexy={1:3, 2:5, 4:6, 8:2} +del(y\[1\], y\[8\]) +print(y) + +output= {2:5, 4:6} + +dict.pop()Pop out the value of a key and remove it from a dictionary at a specific indexa={1:3, 2:4, 5:6} +a.pop(1) + +output: 3 + +dict.popitem()Pop out the last item from a dictionary and delete ita={1:2, 4:8, 3:5} +a.popitem() + +output: (3, 5) +print(a) +output: {1:2, 4:8} + +list.pop()Pop out a given index from a list and remove it from a lista=\[1, 3, 2, 4, 1, 6, 6, 4\] +a.pop(-2) + +output: 6 +print(a) +output: \[1, 3, 2, 4, 1, 6, 4\] + +clear()Empty the elements of a list or a dictionaryx=\[1, 3, 5\] +x.clear() +print(x) + +output: \[\] + +remove()Remove an item from a listx=\[1, 5, 6, 7\] +x.remove(1) + +output: \[5, 6, 7\] + +insert()Insert elements into a llistx=\[3, 5, 6\] +x.insert(1, 4) +print(x) + +output: \[1, 4, 3, 5, 6\] + +sort(reverse=condition)Reverse the direction of the elements in a listx=\[1, 3, 5, 6\] +x.sort(reverse=True) +print(x) + +output: \[6, 5, 3, 1\] + +update()Update a dictionary by changing its first element and adding any other item to its endx={1:3, 5:6} +x.update({1:4, 8:7, 4:4}) +print(x) + +output: {1: 4, 5: 6, 8: 7, 4: 4} + +keys()Show all the keys in a dictionarya={1:2, 4:8} +a.keys() + +output: dict\_keys(\[1, 4\]) + +values()Show all the values in a dictionarya={1:2, 4:8} +a.values() + +output: dict\_values(\[2, 8\]) + +items()Display the keys and the values in a dictionarya={1:2, 4:8} +a.items() + +output: dict\_items(\[(1, 2), (4, 8)\]) + +get(key)Get the value of an item in a dictionary by its keya={1:2, 4:8, 3:5} +a.get(1) + +output: 2 + +setdefault(key)Return the original value of an element to a dictionarya.setdefault(2)f={\*\*a, \*\*b}Merge two dictionariesa={'x':6, 'y':8} +b={'c':5, 'd':3} +f={\*\*a, \*\*y} +print(f) + +output:{'x': 6, 'y': 8, 'c': 5, 'd': 3} + +remove()Remove the first matching value of an element from a list without minding its indexa=\[1, 3, 2, 4, 4, 1, 6, 6, 4\] +a.remove(4) +print(a) + +output: \[1, 3, 2, 4, 1, 6, 6, 4\] + +memoryview(x)Access the internal buffers of an objecta=memoryview(object)bytes()Convert a memory buffer protocol into bytesbytes(a\[0:2\])bytearray()Return an array of bytesbytearray(object)#Write a single line of comment or prevent a line of code from being executed# Python regex cheat sheet""" """Write a multi-line comment"""The Python regex cheat sheet is good for beginners +It's equally a great refresher for experts"""**Command Line**pip install packageInstall an online librarypip install pandasvirtualenv nameUse virtaulenv to create a virtual environmentvirtualenv myprojectmkvirtualenv nameUse virtual environment wrapper to create virtual environmentmkvirtualenv myprojectpython file.pyRun the commands in a Python file"python my\_file.pypip freezeList out all the installed packages in a virtual environmentpip freezepip freeze > somefilesCopy all installed libraries in a single filepip freeze > requirements.txtwhereFind the installation path of Pythonwhere python--versionCheck the version of a packagepython --version.exeRun a Python shellpython.exewith open(file, 'w')Write to an existing file and overwrite its existing contentwith open('regex.txt', 'w') as wf: +wf.write("Hello World!")with open(file, 'r')Open a file as read-onlywith open('regex.txt', 'r') as rf: +print(rf.read()with open(file, 'a')Write to a file without overwriting its existing contentwith open('regex.txt', 'a') as af: +af.write("\\nHello Yes!")file.closeClose a file if it's not in useaf=open('regex.txt') +af.closeexitExit the Python shellexit() + + +[Source](https://www.makeuseof.com/python-regex-cheat-sheet/) \ No newline at end of file diff --git a/Readings/beginners.pdf b/Readings/beginners.pdf new file mode 100644 index 0000000000000000000000000000000000000000..74b486e541bbb099c46ac04140e080148fe6a628 GIT binary patch literal 217418 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

>Kd0R`hQWeO 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 Gr2YpwAuO%{ literal 0 HcmV?d00001 diff --git a/Readings/importing-data-python.pdf b/Readings/importing-data-python.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0a7a5fc32f3980b0ca583a3502383064739f7c01 GIT binary patch literal 138489 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%0AA1wQ2Qqt7_{R@x{_Ubw^XghJsV- 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

HD3(e!3f>C*E!_72iS@AF&hZ@r_<|8YOB`&D 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 z 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⁢cebv!f@Opi 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ĥ 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

L;JDX-Ns?- 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

XPpZbEWw7o8v7#S=tz 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%0D$VtBl!geNOLBHf4^ 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�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 z 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≧#SU=~LF1rlhVulD1$`@!ZVW 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 bUqP3SP6iH6{}pn{z`zPiLLwq33j4nRy1i+k literal 0 HcmV?d00001 diff --git a/Readings/numpy.pdf b/Readings/numpy.pdf new file mode 100644 index 0000000000000000000000000000000000000000..40d67a3ca3548fe0095872b87aa04f026d2bbe87 GIT binary patch literal 665028 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

TyZ8tG5AWtZyqEX! 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

V}eY&8!Rlp)ql*b1(TTR5R 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 zΞ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

L;JDX-Ns?-p!g5nC(}^QLCr41 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

P&yrA2{i(=jK}8pyqZt9K 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%0D$VtBl!geNOLBHf4^KhKyvzSx))Sz$aI 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�${jO0R5GF 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≧#SU=~LF1rlhVulD1$`@!ZVW`!aHpik5Af{*Rn3 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 + + + + + + python-basics + + + + +

Notes

+

Basics

+
    +
  • PEP8 : Python Enhancement Proposals, style-guide for Python.

  • +
  • print is the equivalent of console.log.

  • +
  • # is used to make comments in your code.

  • +
+
+
    +
  • Python has a built in help function that let’s you see a description of the source code without having to navigate to it.
  • +
+
+

Numbers

+ + +
    +
  • The arithmetic operators are the same between JS and Python, with two additions:

    +
      +
    • “**” : Double asterisk for exponent.
    • +
    • “//” : Integer Division.
    • +
  • +
  • +

    There are no spaces between math operations in Python.

    +
  • +
  • Integer Division gives the other part of the number from Module; it is a way to do round down numbers replacing Math.floor() in JS.

  • +
  • There are no ++ and -- in Python, the only shorthand operators are:
  • +
  • +pic
    pic
    +
  • +
+
+

Strings

+
    +
  • Python uses both single and double quotes.

  • +
  • You can escape strings like so 'Jodi asked, "What\'s up, Sam?"'

  • +
  • Multiline strings use triple quotes.

  • +
+ + + +
    +
  • The index string function is the equiv. of indexOf() in JS
  • +
+ +
    +
  • The count function finds out how many times a substring appears in a string.
  • +
+ +
    +
  • You can use + to concatenate strings, just like in JS.

  • +
  • You can also use “*” to repeat strings or multiply strings.

  • +
  • Use the format() function to use placeholders in a string to input values later on.

  • +
+ +
    +
  • Shorthand way to use format function is: print(f'Your name is {first_name} {last_name}')

  • +
  • Some useful string methods.

    +
      +
    • Note that in JS join is used on an Array, in Python it is used on String. pic
    • +
  • +
  • There are also many handy testing methods. pic

  • +
+
+

Variables and Expressions

+
    +
  • Duck-Typing : Programming Style which avoids checking an object’s type to figure out what it can do.

    +
      +
    • Duck Typing is the fundamental approach of Python.
    • +
  • +
  • Assignment of a value automatically declares.

  • +
+ +
    +
  • You can chain variable assignments to give multiple var names the same value. +
      +
    • Use with caution as this is highly unreadable
    • +
  • +
+ +
    +
  • The value and type of a variable can be re-assigned at any time.
  • +
+ +
    +
  • NaN does not exist in Python, but you can ‘create’ it like so: print(float("nan"))

  • +
  • Python replaces null with none. +
      +
    • none is an object and can be directly assigned to a variable.
    • +
    • Using none is a convenient way to check to see why an action may not be operating correctly in your program.
    • +
  • +
+
+

Boolean Data Type

+
    +
  • One of the biggest benefits of Python is that it reads more like English than JS does. pic
  • +
+ +
    +
  • By default, Python considers an object to be true UNLESS it is one of the following:

    +
      +
    • Constant None or False
    • +
    • Zero of any numeric type.
    • +
    • Empty Sequence or Collection.
    • +
  • +
  • True and False must be capitalized

  • +
+
+

Comparison Operators

+
    +
  • Python uses all the same equality operators as JS.

  • +
  • In Python, equality operators are processed from left to right.

  • +
  • Logical operators are processed in this order:

    +
      +
    1. NOT
    2. +
    3. AND
    4. +
    5. OR
    6. +
  • +
  • Just like in JS, you can use parentheses to change the inherent order of operations.

  • +
  • Short Circuit : Stopping a program when a true or false has been reached. pic

  • +
+
+

Identity vs Equality

+ +
    +
  • In the Python community it is better to use is and is not over == or !=
  • +
+
+

If Statements

+ + + +
    +
  • Remember the order of elif statements matter.
  • +
+
+

While Statements

+ +
    +
  • Break statement also exists in Python.
  • +
+ +
    +
  • As are continue statements
  • +
+ +
+

Try/Except Statements

+
    +
  • Python equivalent to try/catch
  • +
+ + +
    +
  • You can name an error to give the output more specificity.
  • +
+ +
    +
  • You can also use the pass commmand to by pass a certain error.
  • +
+ +
    +
  • The pass method won’t allow you to bypass every single error so you can chain an exception series like so:
  • +
+ +
    +
  • You can use an else statement to end a chain of except statements.
  • +
+ +
    +
  • finally is used at the end to clean up all actions under any circumstance.
  • +
+ +
    +
  • Using duck typing to check to see if some value is able to use a certain method.
  • +
+ +
+

Pass

+
    +
  • Pass Keyword is required to write the JS equivalent of :
  • +
+ + +
+

Functions

+
    +
  • Function definition includes: +
      +
    • The def keyword
    • +
    • The name of the function
    • +
    • A list of parameters enclosed in parentheses.
    • +
    • A colon at the end of the line.
    • +
    • One tab indentation for the code to run.
    • +
  • +
+
+
    +
  • You can use default parameters just like in JS
  • +
+ +
    +
  • Keep in mind, default parameters must always come after regular parameters.
  • +
+ +
    +
  • You can specify arguments by name without destructuring in Python.
  • +
+ +
    +
  • The lambda keyword is used to create anonymous functions and are supposed to be one-liners.
  • +
+

toUpper = lambda s: s.upper()

+
+

Notes Formatted Strings Remember that in Python join() is called on a string with an array/list passed in as the argument. shopping_list = [‘bread’,‘milk’,‘eggs’] print(‘,’.join(shopping_list)) Python has a very powerful formatting engine. format() is also applied directly to strings. # Comma Thousands Separator print(‘{:,}’.format(1234567890)) ‘1,234,567,890’

+

Date and Time

+

d = datetime.datetime(2020, 7, 4, 12, 15, 58) print(‘{:%Y-%m-%d %H:%M:%S}’.format(d)) ‘2020-07-04 12:15:58’

+

Percentage

+

points = 190 total = 220 print(‘Correct answers: {:.2%}’.format(points/total)) Correct answers: 86.36%

+

Data Tables

+

width=8 print(’ decimal hex binary’) print(‘-’*27) for num in range(1,16): for base in ‘dXb’: print(‘{0:{width}{base}}’.format(num, base=base, width=width), end=’ ‘) print() Getting Input from the Command Line Python runs synchronously, all programs and processes will stop when listening for a user input. The input function shows a prompt to a user and waits for them to type ’ENTER’. Scripts vs Programs Programming Script : A set of code that runs in a linear fashion. The largest difference between scripts and programs is the level of complexity and purpose. Programs typically have many UI’s.

+

Python can be used to display html, css, and JS. We will be using Python as an API (Application Programming Interface)

+

Structured Data Sequence : The most basic data structure in Python where the index determines the order.

+

List Tuple Range Collections : Unordered data structures, hashable values.

+

Dictionaries Sets Iterable : Generic name for a sequence or collection; any object that can be iterated through. Can be mutable or immutable. Built In Data Types Lists are the python equivalent of arrays. empty_list = [] departments = [‘HR’,‘Development’,‘Sales’,‘Finance’,‘IT’,‘Customer Support’]

+

You can instantiate

+

specials = list()

+

Test if a value is in a list.

+

print(1 in [1, 2, 3]) #> True print(4 in [1, 2, 3]) #> False Tuples : Very similar to lists, but they are immutable # Instantiated with parentheses time_blocks = (‘AM’,‘PM’)

+

Sometimes instantiated without

+

colors = ‘red’,‘blue’,‘green’ numbers = 1, 2, 3

+

Tuple() built in can be used to convert other data into a tuple

+

tuple(‘abc’) # returns (‘a’, ‘b’, ‘c’) tuple([1,2,3]) # returns (1, 2, 3) Think of tuples as constant variables.

+

Ranges : A list of numbers which can’t be changed; often used with for loops. Declared using one to three parameters. Start : opt. default 0, first # in sequence. Stop : required next number past the last number in the sequence. Step : opt. default 1, difference between each number in the sequence. range(5) # [0, 1, 2, 3, 4] range(1,5) # [1, 2, 3, 4] range(0, 25, 5) # [0, 5, 10, 15, 20] range(0) # [ ] for let (i = 0; i < 5; i++) for let (i = 1; i < 5; i++) for let (i = 0; i < 25; i+=5) for let(i = 0; i = 0; i++) Keep in mind that stop is not included in the range.

+

Dictionaries : Mappable collection where a hashable value is used as a key to ref. an object stored in the dictionary. Mutable. a = {‘one’:1, ‘two’:2, ‘three’:3} b = dict(one=1, two=2, three=3) c = dict([(‘two’, 2), (‘one’, 1), (‘three’, 3)]) a, b, and c are all equal

+

Declared with curly braces of the built in dict()

+

Benefit of dictionaries in Python is that it doesn’t matter how it is defined, if the keys and values are the same the dictionaries are considered equal.

+

Use the in operator to see if a key exists in a dictionary.

+

Sets : Unordered collection of distinct objects; objects that need to be hashable.

+

Always be unique, duplicate items are auto dropped from the set. Common Uses: Removing Duplicates Membership Testing Mathematical Operators: Intersection, Union, Difference, Symmetric Difference. Standard Set is mutable, Python has a immutable version called frozenset. Sets created by putting comma seperated values inside braces:

+

school_bag = {‘book’,‘paper’,‘pencil’,‘pencil’,‘book’,‘book’,‘book’,‘eraser’} print(school_bag)

+

Also can use set constructor to automatically put it into a set.

+

letters = set(‘abracadabra’) print(letters) Built-In Functions Functions using iterables

+

filter(function, iterable) : creates new iterable of the same type which includes each item for which the function returns true.

+

map(function, iterable) : creates new iterable of the same type which includes the result of calling the function on every item of the iterable.

+

sorted(iterable, key=None, reverse=False) : creates a new sorted list from the items in the iterable.

+

Output is always a list key: opt function which coverts and item to a value to be compared. reverse: optional boolean. enumerate(iterable, start=0) : starts with a sequence and converts it to a series of tuples

+

quarters = [‘First’, ‘Second’, ‘Third’, ‘Fourth’] print(enumerate(quarters)) print(enumerate(quarters, start=1))

+

(0, ‘First’), (1, ‘Second’), (2, ‘Third’), (3, ‘Fourth’)

+

(1, ‘First’), (2, ‘Second’), (3, ‘Third’), (4, ‘Fourth’)

+

zip(*iterables) : creates a zip object filled with tuples that combine 1 to 1 the items in each provided iterable. Functions that analyze iterables

+

len(iterable) : returns the count of the number of items.

+

max(*args, key=None) : returns the largest of two or more arguments.

+

max(iterable, key=None) : returns the largest item in the iterable.

+

key optional function which converts an item to a value to be compared. min works the same way as max

+

sum(iterable) : used with a list of numbers to generate the total.

+

There is a faster way to concatenate an array of strings into one string, so do not use sum for that. any(iterable) : returns True if any items in the iterable are true.

+

all(iterable) : returns True is all items in the iterable are true.

+

Working with dictionaries

+

dir(dictionary) : returns the list of keys in the dictionary. Working with sets

+

Union : The pipe | operator or union(*sets) function can be used to produce a new set which is a combination of all elements in the provided set. a = {1, 2, 3} b = {2, 4, 6} print(a | b) # => {1, 2, 3, 4, 6} Intersection : The & operator ca be used to produce a new set of only the elements that appear in all sets. a = {1, 2, 3} b = {2, 4, 6} print(a & b) # => {2} Difference : The - operator can be used to produce a new set of only the elements that appear in the first set and NOT the others.

+

Symmetric Difference : The ^ operator can be used to produce a new set of only the elements that appear in exactly one set and not in both.

+

a = {1, 2, 3} b = {2, 4, 6} print(a - b) # => {1, 3} print(b - a) # => {4, 6} print(a ^ b) # => {1, 3, 4, 6} For Statements In python, there is only one for loop.

+

Always Includes: The for keyword A variable name The in keyword An iterable of some kid A colon On the next line, an indented block of code called the for clause. You can use break and continue statements inside for loops as well.

+

You can use the range function as the iterable for the for loop.

+

print(‘My name is’) for i in range(5): print(‘Carlita Cinco (’ + str(i) + ‘)’)

+

total = 0 for num in range(101): total += num print(total) Looping over a list in Python for c in [‘a’, ‘b’, ‘c’]: print(c)

+

lst = [0, 1, 2, 3] for i in lst: print(i) Common technique is to use the len() on a pre-defined list with a for loop to iterate over the indices of the list. supplies = [‘pens’, ‘staplers’, ‘flame-throwers’, ‘binders’] for i in range(len(supplies)): print(‘Index’ + str(i) + ’ in supplies is: ’ + supplies[i]) You can loop and destructure at the same time. l = [[1, 2], [3, 4], [5, 6]] for a, b in l: print(a, ‘,’, b)

+

Prints 1, 2

+

Prints 3, 4

+

Prints 5, 6

+

You can use values() and keys() to loop over dictionaries. spam = {‘color’: ‘red’, ‘age’: 42} for v in spam.values(): print(v)

+

Prints red

+

Prints 42

+

for k in spam.keys(): print(k)

+

Prints color

+

Prints age

+

For loops can also iterate over both keys and values. # Getting tuples for i in spam.items(): print(i)

+

Prints (‘color’, ‘red’)

+

Prints (‘age’, 42)

+

Destructuring to values

+

for k, v in spam.items(): print(‘Key:’ + k + ’ Value: ’ + str(v))

+

Prints Key: age Value: 42

+

Prints Key: color Value: red

+

Looping over string for c in “abcdefg”: print(c) More On Functions Variable-length positional arguments : (args) def add(a, b, args): total = a + b; for n in args: total += n return total

+

add(1, 2) # Returns 3

+

add(2, 3, 4, 5) # Returns 14 keyword arguments : (*kwargs) def print_names_and_countries(greeting, **kwargs): for k, v in kwargs.items(): print(greeting, k, “from”, v)

+

print_names_and_countries(“Hi”, Monica=“Sweden”, Charles=“British Virgin Islands”, Carlo=“Portugal”) # Prints # Hi Monica from Sweden # Hi Charles from British Virgin Islands # Hi Carlo from Portugal When you order arguments within a function or function call, the args need to occur in a particular order: formal positional args. *args keyword args with default values **kwargs def example(arg_1, arg_2, *args, **kwargs): pass

+

def example2(arg_1, arg_2, *args, kw_1=“shark”, kw_2=“blowfish”, **kwargs): pass Importing in Python Modules are similar to packages in Node.js Come in different types: Built-In, Third-Party, Custom. All loaded using import statements. Terms

+

module : Python code in a separate file. package : Path to a directory that contains modules. init.py : Default file for a package. submodule : Another file in a module’s folder. function : Function in a module.

+

A module can be any file but it is usually created by placing a special file init.py into a folder. pic

+

Try to avoid importing with wildcards in Python.

+

Use multiple lines for clarity when importing.

+

from urllib.request import ( HTTPDefaultErrorHandler as ErrorHandler, HTTPRedirectHandler as RedirectHandler, Request, pathname2url, url2pathname, urlopen, ) Watching Out for Python 2 Python 3 removed <> and only uses !=

+

format() was introduced with P3 All strings in P3 are unicode and encoded. md5 was removed. ConfigParser was renamed to configparser sets were killed in favor of set() class.

+

print was a statement in P2, but is a function in P3.

+

Topics revisited (in python syntax)

+

+
+def say_hi(name):
+    """<---- Multi-Line Comments and Docstrings
+    This is where you put your content for help() to inform the user
+    about what your function does and how to use it
+    """
+    print(f"Hello {name}!")
+
+
+print(say_hi("Michael"))  # Should get the print inside the function, then None
+
+# Boolean Values
+# Work the same as in JS, except they are title case: True and False
+a = True
+b = False
+
+# Logical Operators
+# ! = not, || = or, && = and
+print(True and True)
+print(True and not True)
+print(True or True)
+
+# Truthiness - Everything is True except...
+# False - None, False, '', [], (), set(), range(0)
+
+# Number Values
+# Integers are numbers without a floating decimal point
+print(type(3))  # type returns the type of whatever argument you pass in
+# Floating Point values are numbers with a floating decimal point
+print(type(3.5))
+
+# Type Casting
+# You can convert between ints and floats (along with other types...)
+print(float(3))  # If you convert a float to an int, it will truncate the decimal
+print(int(4.5))
+print(type(str(3)))
+# Python does not automatically convert types like JS
+# print(17.0 + ' heyooo ' + 17)  # TypeError
+
+# Arithmetic Operators
+# ** - exponent (comparable to Math.pow(num, pow))
+# // - integer division
+# There is no ++ or -- in Python
+
+# String Values
+# We can use single quotes, double quotes, or f'' for string formats
+# We can use triple single quotes for multiline strings
+print(
+    """This here's a story
+All about how
+My life got twist
+Turned upside down
+"""
+)
+
+# Three double quotes can also be used, but we typically reserve these for
+# multi-line comments and function docstrings (refer to lines 6-9)(Nice :D)
+# We use len() to get the length of something
+print(len("Michael"))  # 7 characters
+print(len(["hey", "ho", "hey", "hey", "ho"]))  # 5 list items
+print(len({1, 2, 3, 4, 5, 6, 7, 9}))  # 8 set items
+
+# We can index into strings, list, etc..self.
+name = "Michael"
+for i in range(len(name)):
+    print(name[i])  # M, i, c, h, a, e, l
+
+# We can index starting from the end as well, with negatives
+occupation = "Full Stack Software Engineer"
+print(occupation[-3])  # e
+
+# We can also get ranges in the index with the [start:stop:step] syntax
+print(occupation[0:4:1])  # step and stop are optional, stop is exclusive
+print(occupation[::4])  # beginning to end, every 4th letter
+print(occupation[4:14:2])  # Let's get weird with it!
+# NOTE: Indexing out of range will give you an IndexError
+
+# We can also get the index og things with the .index() method, similar to indexOf()
+print(occupation.index("Stack"))
+print(["Mike", "Barry", "Cole", "James", "Mark"].index("Cole"))
+
+# We can count how many times a substring/item appears in something as well
+print(occupation.count("S"))
+print(
+    """Now this here's a story all about how
+My life got twist turned upside down
+I forget the rest but the the the potato
+smells like the potato""".count(
+        "the"
+    )
+)
+
+# We concatenate the same as Javascript, but we can also multiply strings
+print("dog " + "show")
+print("ha" * 10)
+
+# We can use format for a multitude of things, from spaces to decimal places
+first_name = "Michael"
+last_name = "Shuff"
+print("Your name is {0} {1}".format(first_name, last_name))
+
+# Useful String Methods
+print("Hello".upper())  # HELLO
+print("Hello".lower())  # hello
+print("HELLO".islower())  # False
+print("HELLO".isupper())  # True
+print("Hello".startswith("he"))  # False
+print("Hello".endswith("lo"))  # True
+print("Hello There".split())  # [Hello, There]
+print("hello1".isalpha())  # False,  must consist only of letters
+print("hello1".isalnum())  # True, must consist of only letters and numbers
+print("3215235123".isdecimal())  # True, must be all numbers
+# True, must consist of only spaces/tabs/newlines
+print("       \n     ".isspace())
+# False, index 0 must be upper case and the rest lower
+print("MichaeL".istitle())
+print("Michael Lee".istitle())  # True!
+
+# Duck Typing - If it walks like a duck, and talks like a duck, it must be a duck
+# Assignment - All like JS, but there are no special keywords like let or const
+a = 3
+b = a
+c = "heyoo"
+b = ["reassignment", "is", "fine", "G!"]
+
+# Comparison Operators - Python uses the same equality operators as JS, but no ===
+# < - Less than
+# > - Greater than
+# <= - Less than or Equal
+# >= - Greater than or Equal
+# == - Equal to
+# != - Not equal to
+# is - Refers to exact same memory location
+# not - !
+# Precedence - Negative Signs(not) are applied first(part of each number)
+#            - Multiplication and Division(and) happen next
+#            - Addition and Subtraction(or) are the last step
+#  NOTE: Be careful when using not along with ==
+print(not a == b)  # True
+# print(a == not b) # Syntax Error
+print(a == (not b))  # This fixes it. Answer: False
+# Python does short-circuit evaluation
+
+# Assignment Operators - Mostly the same as JS except Python has **= and //= (int division)
+
+# Flow Control Statements - if, while, for
+# Note: Python smushes 'else if' into 'elif'!
+if 10 < 1:
+    print("We don't get here")
+elif 10 < 5:
+    print("Nor here...")
+else:
+    print("Hey there!")
+
+# Looping over a string
+for c in "abcdefgh":
+    print(c)
+
+# Looping over a range
+for i in range(5):
+    print(i + 1)
+
+# Looping over a list
+lst = [1, 2, 3, 4]
+for i in lst:
+    print(i)
+
+# Looping over a dictionary
+spam = {"color": "red", "age": 42, "items": [(1, "hey"), (2, "hooo!")]}
+for v in spam.values():
+    print(v)
+
+# Loop over a list of tuples and destructuring the values
+# Assuming spam.items returns a list of tuples each containing two items (k, v)
+for k, v in spam.items():
+    print(f"{k}: {v}")
+
+# While loops as long as the condition is True
+#  - Exit loop early with break
+#  - Exit iteration early with continue
+spam = 0
+while True:
+    print("Heyy girrllll")
+    spam += 1
+    if spam < 5:
+        continue
+    break
+
+
+# Functions - use def keyword to define a function in Python
+def printCopyright():
+    print("Copyright 2020, ya boi, Mike Shuff")
+
+
+# Lambdas are one liners! (Should be at least, you can use parenthesis to disobey)
+avg = lambda num1, num2: print(num1 + num2)
+
+avg(1, 2)
+# Calling it with keyword arguments, order does not matter
+avg(num2=20, num1=1252)
+printCopyright()
+
+# We can give parameters default arguments like JS
+def greeting(name, saying="Hello"):
+    print(saying, name)
+
+
+greeting("Mike")  # Hello Mike
+greeting("Michael", saying="Hello there...")
+
+# A common gotcha is using a mutable object for a default parameter
+# All invocations of the function reference the same mutable object
+def append_item(item_name, item_list=[]):  # Will it obey and give us a new list?
+    item_list.append(item_name)
+    return item_list
+
+
+# Uses same item list unless otherwise stated which is counterintuitive
+print(append_item("notebook"))
+print(append_item("notebook"))
+print(append_item("notebook", []))
+
+# Errors - Unlike JS, if we pass the incorrect amount of arguments to a function,
+#          it will throw an error
+# avg(1)  # TypeError
+# avg(1, 2, 2) # TypeError
+
+# ----------------------------------- DAY 2 ----------------------------------------
+# Functions - * to get rest of position arguments as tuple
+#           - ** to get rest of keyword arguments as a dictionary
+# Variable Length positional arguments
+def add(a, b, *args):
+    # args is a tuple of the rest of the arguments
+    total = a + b
+    for n in args:
+        total += n
+    return total
+
+
+print(add(1, 2))  # args is None, returns 3
+print(add(1, 2, 3, 4, 5, 6))  # args is (3, 4, 5, 6), returns 21
+
+# Variable Length Keyword Arguments
+def print_names_and_countries(greeting, **kwargs):
+    # kwargs is a dictionary of the rest of the keyword arguments
+    for k, v in kwargs.items():
+        print(greeting, k, "from", v)
+
+
+print_names_and_countries(
+    "Hey there", Monica="Sweden", Mike="The United States", Mark="China"
+)
+
+# We can combine all of these together
+def example2(arg1, arg2, *args, kw_1="cheese", kw_2="horse", **kwargs):
+    pass
+
+
+# Lists are mutable arrays
+empty_list = []
+roomates = ["Beau", "Delynn"]
+# List built-in function makes a list too
+specials = list()
+# We can use 'in' to test if something is in the list, like 'includes' in JS
+print(1 in [1, 2, 4])  # True
+print(2 in [1, 3, 5])  # False
+
+# Dictionaries - Similar to JS POJO's or Map, containing key value pairs
+a = {"one": 1, "two": 2, "three": 3}
+b = dict(one=1, two=2, three=3)
+# Can use 'in' on dictionaries too (for keys)
+print("one" in a)  # True
+print(3 in b)  # False
+
+# Sets - Just like JS, unordered collection of distinct objects
+bedroom = {"bed", "tv", "computer", "clothes", "playstation 4"}
+# bedroom = set("bed", "tv", "computer", "clothes", "playstation 5")
+school_bag = set(
+    ["book", "paper", "pencil", "pencil", "book", "book", "book", "eraser"]
+)
+print(school_bag)
+print(bedroom)
+# We can use 'in' on sets as wel
+print(1 in {1, 2, 3})  # True
+print(4 in {1, 3, 5})  # False
+
+# Tuples are immutable lists of items
+time_blocks = ("AM", "PM")
+colors = "red", "green", "blue"  # Parenthesis not needed but encouraged
+# The tuple built-in function can be used to convert things to tuples
+print(tuple("abc"))
+print(tuple([1, 2, 3]))
+# 'in' may be used on tuples as well
+print(1 in (1, 2, 3))  # True
+print(5 in (1, 4, 3))  # False
+
+# Ranges are immutable lists of numbers, often used with for loops
+#   - start - default: 0, first number in sequence
+#   - stop - required, next number past last number in sequence
+#   - step - default: 1, difference between each number in sequence
+range1 = range(5)  # [0,1,2,3,4]
+range2 = range(1, 5)  # [1,2,3,4]
+range3 = range(0, 25, 5)  # [0,5,10,15,20]
+range4 = range(0)  # []
+for i in range1:
+    print(i)
+
+# Built-in functions:
+# Filter
+isOdd = lambda num: num % 2 == 1
+
+filtered = filter(isOdd, [1, 2, 3, 4])
+print(list(filtered))
+for num in filtered:
+    print(f"first way: {num}")
+print("--" * 20)
+[print(f"list comprehension: {i}") for i in [1, 2, 3, 4, 5, 6, 7, 8] if i % 2 == 1]
+
+# Map
+def toUpper(str):
+    return str.upper()
+
+
+upperCased = map(toUpper, ["a", "b", "c", "d"])
+print(list(upperCased))
+
+# Sorted
+sorted_items = sorted(["john", "tom", "sonny", "Mike"])
+print(list(sorted_items))  # Notice uppercase comes before lowercase
+# Using a key function to control the sorting and make it case insensitive
+sorted_items = sorted(["john", "tom", "sonny", "Mike"], key=str.lower)
+print(sorted_items)
+# You can also reverse the sort
+sorted_items = sorted(["john", "tom", "sonny", "Mike"], key=str.lower, reverse=True)
+print(sorted_items)
+
+# Enumerate creates a tuple with an index for what you're enumerating
+quarters = ["First", "Second", "Third", "Fourth"]
+print(list(enumerate(quarters)))
+print(list(enumerate(quarters, start=1)))
+
+# Zip takes list and combines them as key value pairs, or really however you need
+keys = ("Name", "Email")
+values = ("Buster", "cheetoh@johhnydepp.com")
+zipped = zip(keys, values)
+print(list(zipped))
+# You can zip more than 2
+x_coords = [0, 1, 2, 3, 4]
+y_coords = [4, 6, 10, 9, 10]
+z_coords = [20, 10, 5, 9, 1]
+coords = zip(x_coords, y_coords, z_coords)
+print(list(coords))
+
+# Len reports the length of strings along with list and any other object data type
+print_len = lambda item: print(len(item))  # doing this to save myself some typing
+
+print_len("Mike")
+print_len([1, 5, 2, 10, 3, 10])
+print_len({1, 5, 10, 9, 10})  # 4 because there is a duplicate here (10)
+print_len((1, 4, 10, 9, 20))
+
+# Max will return the max number in a given scenario
+print(max(1, 2, 35, 1012, 1))
+
+# Min
+print(min(1, 5, 2, 10))
+print(min([1, 4, 7, 10]))
+
+# Sum
+print(sum([1, 2, 4]))
+
+# Any
+print(any([True, False, False]))
+print(any([False, False, False]))
+
+# All
+print(all([True, True, False]))
+print(all([True, True, True]))
+
+# Dir returns all the attributes of an object including it's methods and dunder methods
+user = {"Name": "Bob", "Email": "bob@bob.com"}
+print(dir(user))
+
+# Importing packages and modules
+#  - Module - A Python code in a file or directory
+#  - Package - A module which is a directory containing an __init__.py file
+#  - Submodule - A module which is contained within a package
+#  - Name - An exported function, class, or variable in a module
+# Unlike JS, modules export ALL names contained within them without any special export key
+
+# Assuming we have the following package with four submodules
+#  math
+#  |  __init__.py
+#  | addition.py
+#  | subtraction.py
+#  | multiplication.py
+#  | division.py
+
+# If we peek into the addition.py file we see there's an add function
+# addition.py
+# We can import 'add' from other places because it's a 'name' and is automatically exported
+def add(num1, num2):
+    return num1 + num2
+
+
+# Notice the . syntax because this package can import it's own submodules.
+# Our __init__.py has the following files
+# This imports the 'add' function
+# And now it's also re-exported in here as well
+# from .addition import add
+# These import and re-export the rest of the functions from the submodule
+# from .subtraction import subtract
+# from .division import divide
+# from .multiplication import multiply
+# So if we have a script.py and want to import add, we could do it many ways
+
+# This will load and execute the 'math/__init__.py' file and give
+# us an object with the exported names in 'math/__init__.py'
+import math
+
+# print(math.add(1,2))
+
+# This imports JUST the add from 'math/__init__.py'
+# from math import add
+
+# print(add(1, 2))
+
+# This skips importing from 'math/__init__.py' (although it still runs)
+# and imports directly from the addition.py file
+# from math.addition import add
+
+# This imports all the functions individually from 'math/__init__.py'
+# from math import add, subtract, multiply, divide
+
+# print(add(1, 2))
+# print(subtract(2, 1))
+
+# This imports 'add' renames it to 'add_some_numbers'
+# from math import add as add_some_numbers
+
+# --------------------------------------- DAY 3 ---------------------------------------
+# Classes, Methods, and Properties
+class AngryBird:
+    # Slots optimize property access and memory usage and prevent you
+    # from arbitrarily assigning new properties the instance
+    __slots__ = ["_x", "_y"]
+
+    # Constructor
+    def __init__(self, x=0, y=0):
+        # Doc String
+        """
+        Construct a new AngryBird by setting it's position to (0, 0)
+        """
+        ## Instance Variables
+        self._x = x
+        self._y = y
+
+    # Instance Method
+    def move_up_by(self, delta):
+        self._y += delta
+
+    # Getter
+    @property
+    def x(self):
+        return self._x
+
+    # Setter
+    @x.setter
+    def x(self, value):
+        if value < 0:
+            value = 0
+        self._x = value
+
+    @property
+    def y(self):
+        return self._y
+
+    @y.setter
+    def y(self, value):
+        self._y = value
+
+    # Dunder Repr... called by 'print'
+    def __repr__(self):
+        return f"<AngryBird ({self._x}, {self._y})>"
+
+
+# JS to Python Classes cheat table
+#        JS                    Python
+#   constructor()         def __init__(self):
+#      super()            super().__init__()
+#   this.property           self.property
+#    this.method            self.method()
+# method(arg1, arg2){}    def method(self, arg1, ...)
+# get someProperty(){}    @property
+# set someProperty(){}    @someProperty.setter
+
+# List Comprehensions are a way to transform a list from one format to another
+#  - Pythonic Alternative to using map or filter
+#  - Syntax of a list comprehension
+#     - new_list = [value loop condition]
+# Using a for loop
+squares = []
+for i in range(10):
+    squares.append(i ** 2)
+print(squares)
+
+# value = i ** 2
+# loop = for i in range(10)
+squares = [i ** 2 for i in range(10)]
+print(list(squares))
+
+sentence = "the rocket came back from mars"
+vowels = [character for character in sentence if character in "aeiou"]
+print(vowels)
+
+# You can also use them on dictionaries. We can use the items() method
+# for the dictionary to loop through it getting the keys and values out at once
+person = {"name": "Corina", "age": 32, "height": 1.4}
+
+# This loops through and capitalizes the first letter of all keys
+newPerson = {key.title(): value for key, value in person.items()}
+print(list(newPerson.items()))
+ + diff --git a/Readings/python-basics.md b/Readings/python-basics.md new file mode 100644 index 00000000..25f56253 --- /dev/null +++ b/Readings/python-basics.md @@ -0,0 +1,1390 @@ +# **Notes** + +## **Basics** + +- **PEP8** : Python Enhancement Proposals, style-guide for Python. + +- `print` is the equivalent of `console.log`. + +- `#` is used to make comments in your code. + +```py +def foo(): + """ + The foo function does many amazing things that you + should not question. Just accept that it exists and + use it with caution. + """ + secretThing() +``` + +- Python has a built in help function that let's you see a description of the source code without having to navigate to it. + +--- + +## **Numbers** + +- Python has three types of numbers: + - **Integer** + - Positive and Negative Counting Numbers. + - No Decimal Point + - Created by a literal non-decimal pt number or with the `int()` constructor. + ```py + print(3) # => 3 + print(int(19)) # => 19 + print(int()) # => 0 + ``` + > Boolean is a subtype of integer in Python. + - **Floating Point Number** + - Decimal Numbers. + ```py + print(2.24) # => 2.24 + print(2.) # => 2.0 + print(float()) # => 0.0 + print(27e-5) # => 0.00027 + ``` + - **Complex Numbers** + - Consist of a real part and imaginary part. + - The `i` is switched to a `j` in programming. + ```py + print(7j) # => 7j + print(5.1+7.7j)) # => 5.1+7.7j + print(complex(3, 5)) # => 3+5j + print(complex(17)) # => 17+0j + print(complex()) # => 0j + ``` +- **Type Casting** : The process of converting one number to another. + +```py +# Using Float +print(17) # => 17 +print(float(17)) # => 17.0 + +# Using Int +print(17.0) # => 17.0 +print(int(17.0)) # => 17 + +# Using Str +print(str(17.0) + ' and ' + str(17)) # => 17.0 and 17 +``` + +- The arithmetic operators are the same between JS and Python, with two additions: + + - "\*\*" : Double asterisk for exponent. + - "//" : Integer Division. + +- > There are no spaces between math operations in Python. + +- Integer Division gives the other part of the number from Module; it is a way to do round down numbers replacing `Math.floor()` in JS. + +- There are no `++` and `--` in Python, the only shorthand operators are: +- ![pic](https://i.gyazo.com/745b12d4b84304462e53a69d8492c58d.png) + +--- + +## **Strings** + +- Python uses both single and double quotes. + +- You can escape strings like so `'Jodi asked, "What\'s up, Sam?"'` + +- Multiline strings use triple quotes. + +```py +print('''My instructions are very long so to make them +more readable in the code I am putting them on +more than one line. I can even include "quotes" +of any kind because they won't get confused with +the end of the string!''') +``` + +- Use the `len()` function to get the length of a string. + + ```py + print(len("Spaghetti")) # => 9 + ``` + +- Python uses `zero-based indexing` +- Python allows negative indexing (thank god!) + + ```py + print("Spaghetti"[-1]) # => i + print("Spaghetti"[-4]) # => e + ``` + +- Python let's you use ranges + ```py + print("Spaghetti"[1:4]) # => pag + print("Spaghetti"[4:-1]) # => hett + print("Spaghetti"[4:4]) # => (empty string) + ``` + - The end range is exclusive just like `slice` in JS. + +```py +# Shortcut to get from the beginning of a string to a certain index. +print("Spaghetti"[:4]) # => Spag +print("Spaghetti"[:-1]) # => Spaghett + +# Shortcut to get from a certain index to the end of a string. +print("Spaghetti"[1:]) # => paghetti +print("Spaghetti"[-4:]) # => etti +``` + +- The `index` string function is the equiv. of `indexOf()` in JS + +```py +print("Spaghetti".index("h")) # => 4 +print("Spaghetti".index("t")) # => 6 +``` + +- The `count` function finds out how many times a substring appears in a string. + +```py +print("Spaghetti".count("h")) # => 1 +print("Spaghetti".count("t")) # => 2 +print("Spaghetti".count("s")) # => 0 +print('''We choose to go to the moon in this decade and do the other things, +not because they are easy, but because they are hard, because that goal will +serve to organize and measure the best of our energies and skills, because that +challenge is one that we are willing to accept, one we are unwilling to +postpone, and one which we intend to win, and the others, too. +'''.count('the ')) # => 4 +``` + +- You can use `+` to concatenate strings, just like in JS. + +- You can also use "\*" to repeat strings or multiply strings. + +- Use the `format()` function to use placeholders in a string to input values later on. + +```py +first_name = "Billy" +last_name = "Bob" +print('Your name is {0} {1}'.format(first_name, last_name)) # => Your name is Billy Bob +``` + +- Shorthand way to use format function is: + `print(f'Your name is {first_name} {last_name}')` + +- Some useful string methods. + + - Note that in JS `join` is used on an Array, in Python it is used on String. + ![pic](https://i.gyazo.com/ed5094aa444e325b59ec3a11393b60f2.png) + +- There are also many handy testing methods. + ![pic](https://i.gyazo.com/af6244c64c06827fb19ac9cd86a75d17.png) + +--- + +## **Variables and Expressions** + +- **Duck-Typing** : Programming Style which avoids checking an object's type to figure out what it can do. + + - Duck Typing is the fundamental approach of Python. + +- Assignment of a value automatically declares. + +```py +a = 7 +b = 'Marbles' +print(a) # => 7 +print(b) # => Marbles +``` + +- You can chain variable assignments to give multiple var names the same value. + - Use with caution as this is highly unreadable + +```py +count = max = min = 0 +print(count) # => 0 +print(max) # => 0 +print(min) # => 0 +``` + +- The value and type of a variable can be re-assigned at any time. + +```js +a = 17 +print(a) # => 17 +a = 'seventeen' +print(a) # => seventeen +``` + +- `NaN` does not exist in Python, but you can 'create' it like so: + `print(float("nan"))` + +- Python replaces `null` with `none`. + - `none` is an object and can be directly assigned to a variable. + - Using none is a convenient way to check to see why an action may not be operating correctly in your program. + +--- + +## **Boolean Data Type** + +- One of the biggest benefits of Python is that it reads more like English than JS does. + ![pic](https://i.gyazo.com/3d9fb881df9245a42024aae4ee38a1c5.png) + +```py +# Logical AND +print(True and True) # => True +print(True and False) # => False +print(False and False) # => False + +# Logical OR +print(True or True) # => True +print(True or False) # => True +print(False or False) # => False + +# Logical NOT +print(not True) # => False +print(not False and True) # => True +print(not True or False) # => False +``` + +- By default, Python considers an object to be true UNLESS it is one of the following: + + - Constant `None` or `False` + - Zero of any numeric type. + - Empty Sequence or Collection. + +- `True` and `False` must be capitalized + +--- + +## **Comparison Operators** + +- Python uses all the same equality operators as JS. + +- In Python, equality operators are processed from left to right. + +- Logical operators are processed in this order: + + 1. **NOT** + 2. **AND** + 3. **OR** + +- Just like in JS, you can use `parentheses` to change the inherent order of operations. + +- **Short Circuit** : Stopping a program when a `true` or `false` has been reached. + ![pic](https://i.gyazo.com/ccbe5511757813a61e3833d13c43fd8b.png) + +--- + +## **Identity vs Equality** + +```py +print (2 == '2') # => False +print (2 is '2') # => False + +print ("2" == '2') # => True +print ("2" is '2') # => True + +# There is a distinction between the number types. +print (2 == 2.0) # => True +print (2 is 2.0) # => False +``` + +- In the Python community it is better to use `is` and `is not` over `==` or `!=` + +--- + +## **If Statements** + +```py +if name == 'Monica': + print('Hi, Monica.') +``` + +```py +if name == 'Monica': + print('Hi, Monica.') +else: + print('Hello, stranger.') +``` + +```py +if name == 'Monica': + print('Hi, Monica.') +elif age < 12: + print('You are not Monica, kiddo.') +elif age > 2000: + print('Unlike you, Monica is not an undead, immortal vampire.') +elif age > 100: + print('You are not Monica, grannie.') +``` + +- Remember the order of `elif` statements matter. + +--- + +## **While Statements** + +```py +spam = 0 +while spam < 5: + print('Hello, world.') + spam = spam + 1 +``` + +- `Break` statement also exists in Python. + +```py +spam = 0 +while True: + print('Hello, world.') + spam = spam + 1 + if spam >= 5: + break +``` + +- As are `continue` statements + +```py +spam = 0 +while True: + print('Hello, world.') + spam = spam + 1 + if spam < 5: + continue + break +``` + +--- + +## **Try/Except Statements** + +- Python equivalent to `try/catch` + +```py +a = 321 +try: + print(len(a)) +except: + print('Silently handle error here') + + # Optionally include a correction to the issue + a = str(a) + print(len(a) +``` + +```py +a = '321' +try: + print(len(a)) +except: + print('Silently handle error here') + + # Optionally include a correction to the issue + a = str(a) + print(len(a)) +``` + +- You can name an error to give the output more specificity. + +```py +a = 100 +b = 0 +try: + c = a / b +except ZeroDivisionError: + c = None +print(c) +``` + +- You can also use the `pass` commmand to by pass a certain error. + +```py +a = 100 +b = 0 +try: + print(a / b) +except ZeroDivisionError: + pass +``` + +- The `pass` method won't allow you to bypass every single error so you can chain an exception series like so: + +```py +a = 100 +# b = "5" +try: + print(a / b) +except ZeroDivisionError: + pass +except (TypeError, NameError): + print("ERROR!") +``` + +- You can use an `else` statement to end a chain of `except` statements. + +```py +# tuple of file names +files = ('one.txt', 'two.txt', 'three.txt') + +# simple loop +for filename in files: + try: + # open the file in read mode + f = open(filename, 'r') + except OSError: + # handle the case where file does not exist or permission is denied + print('cannot open file', filename) + else: + # do stuff with the file object (f) + print(filename, 'opened successfully') + print('found', len(f.readlines()), 'lines') + f.close() +``` + +- `finally` is used at the end to clean up all actions under any circumstance. + +```py +def divide(x, y): + try: + result = x / y + except ZeroDivisionError: + print("Cannot divide by zero") + else: + print("Result is", result) + finally: + print("Finally...") +``` + +- Using duck typing to check to see if some value is able to use a certain method. + +```py +# Try a number - nothing will print out +a = 321 +if hasattr(a, '__len__'): + print(len(a)) + +# Try a string - the length will print out (4 in this case) +b = "5555" +if hasattr(b, '__len__'): + print(len(b)) +``` + +--- + +## **Pass** + +- Pass Keyword is required to write the JS equivalent of : + +```js +if (true) { +} + +while (true) {} +``` + +```py +if True: + pass + +while True: + pass +``` + +--- + +## **Functions** + +- **Function** definition includes: + - The `def` keyword + - The name of the function + - A list of parameters enclosed in parentheses. + - A colon at the end of the line. + - One tab indentation for the code to run. + +```py +``` + +- You can use default parameters just like in JS + +```py +def greeting(name, saying="Hello"): + print(saying, name) + +greeting("Monica") +# Hello Monica + +greeting("Barry", "Hey") +# Hey Barry +``` + +- Keep in mind, default parameters must always come after regular parameters. + +```py +# THIS IS BAD CODE AND WILL NOT RUN +def increment(delta=1, value): + return delta + value +``` + +- You can specify arguments by name without destructuring in Python. + +```py +def greeting(name, saying="Hello"): + print(saying, name) + +# name has no default value, so just provide the value +# saying has a default value, so use a keyword argument +greeting("Monica", saying="Hi") +``` + +- The `lambda` keyword is used to create anonymous functions and are supposed to be `one-liners`. + +`toUpper = lambda s: s.upper()` + +--- +Notes +Formatted Strings +Remember that in Python join() is called on a string with an array/list passed in as the argument. +shopping_list = ['bread','milk','eggs'] +print(','.join(shopping_list)) +Python has a very powerful formatting engine. +format() is also applied directly to strings. +# Comma Thousands Separator + print('{:,}'.format(1234567890)) + '1,234,567,890' + +# Date and Time +d = datetime.datetime(2020, 7, 4, 12, 15, 58) +print('{:%Y-%m-%d %H:%M:%S}'.format(d)) +'2020-07-04 12:15:58' + +# Percentage +points = 190 +total = 220 +print('Correct answers: {:.2%}'.format(points/total)) +Correct answers: 86.36% + +# Data Tables +width=8 +print(' decimal hex binary') +print('-'*27) +for num in range(1,16): + for base in 'dXb': + print('{0:{width}{base}}'.format(num, base=base, width=width), end=' ') + print() +Getting Input from the Command Line +Python runs synchronously, all programs and processes will stop when listening for a user input. +The input function shows a prompt to a user and waits for them to type 'ENTER'. +Scripts vs Programs +Programming Script : A set of code that runs in a linear fashion. +The largest difference between scripts and programs is the level of complexity and purpose. Programs typically have many UI's. + +Python can be used to display html, css, and JS. +We will be using Python as an API (Application Programming Interface) + +Structured Data +Sequence : The most basic data structure in Python where the index determines the order. + +List +Tuple +Range +Collections : Unordered data structures, hashable values. + +Dictionaries +Sets +Iterable : Generic name for a sequence or collection; any object that can be iterated through. +Can be mutable or immutable. +Built In Data Types +Lists are the python equivalent of arrays. +empty_list = [] +departments = ['HR','Development','Sales','Finance','IT','Customer Support'] + +# You can instantiate +specials = list() + +# Test if a value is in a list. +print(1 in [1, 2, 3]) #> True +print(4 in [1, 2, 3]) #> False +Tuples : Very similar to lists, but they are immutable +# Instantiated with parentheses +time_blocks = ('AM','PM') + +# Sometimes instantiated without +colors = 'red','blue','green' +numbers = 1, 2, 3 + +# Tuple() built in can be used to convert other data into a tuple +tuple('abc') # returns ('a', 'b', 'c') +tuple([1,2,3]) # returns (1, 2, 3) +Think of tuples as constant variables. + +Ranges : A list of numbers which can't be changed; often used with for loops. +Declared using one to three parameters. +Start : opt. default 0, first # in sequence. +Stop : required next number past the last number in the sequence. +Step : opt. default 1, difference between each number in the sequence. +range(5) # [0, 1, 2, 3, 4] +range(1,5) # [1, 2, 3, 4] +range(0, 25, 5) # [0, 5, 10, 15, 20] +range(0) # [ ] +for let (i = 0; i < 5; i++) +for let (i = 1; i < 5; i++) +for let (i = 0; i < 25; i+=5) +for let(i = 0; i = 0; i++) +Keep in mind that stop is not included in the range. + +Dictionaries : Mappable collection where a hashable value is used as a key to ref. an object stored in the dictionary. +Mutable. +a = {'one':1, 'two':2, 'three':3} +b = dict(one=1, two=2, three=3) +c = dict([('two', 2), ('one', 1), ('three', 3)]) +a, b, and c are all equal + +Declared with curly braces of the built in dict() + +Benefit of dictionaries in Python is that it doesn't matter how it is defined, if the keys and values are the same the dictionaries are considered equal. + +Use the in operator to see if a key exists in a dictionary. + +Sets : Unordered collection of distinct objects; objects that need to be hashable. + +Always be unique, duplicate items are auto dropped from the set. +Common Uses: +Removing Duplicates +Membership Testing +Mathematical Operators: Intersection, Union, Difference, Symmetric Difference. +Standard Set is mutable, Python has a immutable version called frozenset. +Sets created by putting comma seperated values inside braces: + +school_bag = {'book','paper','pencil','pencil','book','book','book','eraser'} +print(school_bag) + +# Also can use set constructor to automatically put it into a set. +letters = set('abracadabra') +print(letters) +Built-In Functions +Functions using iterables + +filter(function, iterable) : creates new iterable of the same type which includes each item for which the function returns true. + +map(function, iterable) : creates new iterable of the same type which includes the result of calling the function on every item of the iterable. + +sorted(iterable, key=None, reverse=False) : creates a new sorted list from the items in the iterable. + +Output is always a list +key: opt function which coverts and item to a value to be compared. +reverse: optional boolean. +enumerate(iterable, start=0) : starts with a sequence and converts it to a series of tuples + +quarters = ['First', 'Second', 'Third', 'Fourth'] +print(enumerate(quarters)) +print(enumerate(quarters, start=1)) + +# (0, 'First'), (1, 'Second'), (2, 'Third'), (3, 'Fourth') +# (1, 'First'), (2, 'Second'), (3, 'Third'), (4, 'Fourth') +zip(*iterables) : creates a zip object filled with tuples that combine 1 to 1 the items in each provided iterable. +Functions that analyze iterables + +len(iterable) : returns the count of the number of items. + +max(*args, key=None) : returns the largest of two or more arguments. + +max(iterable, key=None) : returns the largest item in the iterable. + +key optional function which converts an item to a value to be compared. +min works the same way as max + +sum(iterable) : used with a list of numbers to generate the total. + +There is a faster way to concatenate an array of strings into one string, so do not use sum for that. +any(iterable) : returns True if any items in the iterable are true. + +all(iterable) : returns True is all items in the iterable are true. + +Working with dictionaries + +dir(dictionary) : returns the list of keys in the dictionary. +Working with sets + +Union : The pipe | operator or union(*sets) function can be used to produce a new set which is a combination of all elements in the provided set. +a = {1, 2, 3} +b = {2, 4, 6} +print(a | b) # => {1, 2, 3, 4, 6} +Intersection : The & operator ca be used to produce a new set of only the elements that appear in all sets. +a = {1, 2, 3} +b = {2, 4, 6} +print(a & b) # => {2} +Difference : The - operator can be used to produce a new set of only the elements that appear in the first set and NOT the others. + +Symmetric Difference : The ^ operator can be used to produce a new set of only the elements that appear in exactly one set and not in both. + +a = {1, 2, 3} +b = {2, 4, 6} +print(a - b) # => {1, 3} +print(b - a) # => {4, 6} +print(a ^ b) # => {1, 3, 4, 6} +For Statements +In python, there is only one for loop. + +Always Includes: +The for keyword +A variable name +The in keyword +An iterable of some kid +A colon +On the next line, an indented block of code called the for clause. +You can use break and continue statements inside for loops as well. + +You can use the range function as the iterable for the for loop. + +print('My name is') +for i in range(5): + print('Carlita Cinco (' + str(i) + ')') + +total = 0 +for num in range(101): + total += num +print(total) +Looping over a list in Python +for c in ['a', 'b', 'c']: + print(c) + +lst = [0, 1, 2, 3] +for i in lst: + print(i) +Common technique is to use the len() on a pre-defined list with a for loop to iterate over the indices of the list. +supplies = ['pens', 'staplers', 'flame-throwers', 'binders'] +for i in range(len(supplies)): + print('Index ' + str(i) + ' in supplies is: ' + supplies[i]) +You can loop and destructure at the same time. +l = [[1, 2], [3, 4], [5, 6]] +for a, b in l: + print(a, ', ', b) + +# Prints 1, 2 +# Prints 3, 4 +# Prints 5, 6 +You can use values() and keys() to loop over dictionaries. +spam = {'color': 'red', 'age': 42} +for v in spam.values(): + print(v) + +# Prints red +# Prints 42 + +for k in spam.keys(): + print(k) + +# Prints color +# Prints age +For loops can also iterate over both keys and values. +# Getting tuples +for i in spam.items(): + print(i) + +# Prints ('color', 'red') +# Prints ('age', 42) + + +# Destructuring to values +for k, v in spam.items(): + print('Key: ' + k + ' Value: ' + str(v)) + +# Prints Key: age Value: 42 +# Prints Key: color Value: red +Looping over string +for c in "abcdefg": + print(c) +More On Functions +Variable-length positional arguments : (*args) +def add(a, b, *args): + total = a + b; + for n in args: + total += n + return total + +add(1, 2) # Returns 3 + +add(2, 3, 4, 5) # Returns 14 +keyword arguments : (*kwargs) +def print_names_and_countries(greeting, **kwargs): + for k, v in kwargs.items(): + print(greeting, k, "from", v) + +print_names_and_countries("Hi", + Monica="Sweden", + Charles="British Virgin Islands", + Carlo="Portugal") +# Prints +# Hi Monica from Sweden +# Hi Charles from British Virgin Islands +# Hi Carlo from Portugal +When you order arguments within a function or function call, the args need to occur in a particular order: +formal positional args. +*args +keyword args with default values +**kwargs +def example(arg_1, arg_2, *args, **kwargs): + pass + +def example2(arg_1, arg_2, *args, kw_1="shark", kw_2="blowfish", **kwargs): + pass +Importing in Python +Modules are similar to packages in Node.js +Come in different types: Built-In, Third-Party, Custom. +All loaded using import statements. +Terms + +module : Python code in a separate file. +package : Path to a directory that contains modules. +**init.py** : Default file for a package. +submodule : Another file in a module's folder. +function : Function in a module. + +A module can be any file but it is usually created by placing a special file __init__.py into a folder. pic + +Try to avoid importing with wildcards in Python. + +Use multiple lines for clarity when importing. + +from urllib.request import ( + HTTPDefaultErrorHandler as ErrorHandler, + HTTPRedirectHandler as RedirectHandler, + Request, + pathname2url, + url2pathname, + urlopen, +) +Watching Out for Python 2 +Python 3 removed <> and only uses != + +format() was introduced with P3 +All strings in P3 are unicode and encoded. +md5 was removed. +ConfigParser was renamed to configparser +sets were killed in favor of set() class. + +print was a statement in P2, but is a function in P3. + +# Topics revisited (in python syntax) + +```py + + +def say_hi(name): + """<---- Multi-Line Comments and Docstrings + This is where you put your content for help() to inform the user + about what your function does and how to use it + """ + print(f"Hello {name}!") + + +print(say_hi("Michael")) # Should get the print inside the function, then None + +# Boolean Values +# Work the same as in JS, except they are title case: True and False +a = True +b = False + +# Logical Operators +# ! = not, || = or, && = and +print(True and True) +print(True and not True) +print(True or True) + +# Truthiness - Everything is True except... +# False - None, False, '', [], (), set(), range(0) + +# Number Values +# Integers are numbers without a floating decimal point +print(type(3)) # type returns the type of whatever argument you pass in +# Floating Point values are numbers with a floating decimal point +print(type(3.5)) + +# Type Casting +# You can convert between ints and floats (along with other types...) +print(float(3)) # If you convert a float to an int, it will truncate the decimal +print(int(4.5)) +print(type(str(3))) +# Python does not automatically convert types like JS +# print(17.0 + ' heyooo ' + 17) # TypeError + +# Arithmetic Operators +# ** - exponent (comparable to Math.pow(num, pow)) +# // - integer division +# There is no ++ or -- in Python + +# String Values +# We can use single quotes, double quotes, or f'' for string formats +# We can use triple single quotes for multiline strings +print( + """This here's a story +All about how +My life got twist +Turned upside down +""" +) + +# Three double quotes can also be used, but we typically reserve these for +# multi-line comments and function docstrings (refer to lines 6-9)(Nice :D) +# We use len() to get the length of something +print(len("Michael")) # 7 characters +print(len(["hey", "ho", "hey", "hey", "ho"])) # 5 list items +print(len({1, 2, 3, 4, 5, 6, 7, 9})) # 8 set items + +# We can index into strings, list, etc..self. +name = "Michael" +for i in range(len(name)): + print(name[i]) # M, i, c, h, a, e, l + +# We can index starting from the end as well, with negatives +occupation = "Full Stack Software Engineer" +print(occupation[-3]) # e + +# We can also get ranges in the index with the [start:stop:step] syntax +print(occupation[0:4:1]) # step and stop are optional, stop is exclusive +print(occupation[::4]) # beginning to end, every 4th letter +print(occupation[4:14:2]) # Let's get weird with it! +# NOTE: Indexing out of range will give you an IndexError + +# We can also get the index og things with the .index() method, similar to indexOf() +print(occupation.index("Stack")) +print(["Mike", "Barry", "Cole", "James", "Mark"].index("Cole")) + +# We can count how many times a substring/item appears in something as well +print(occupation.count("S")) +print( + """Now this here's a story all about how +My life got twist turned upside down +I forget the rest but the the the potato +smells like the potato""".count( + "the" + ) +) + +# We concatenate the same as Javascript, but we can also multiply strings +print("dog " + "show") +print("ha" * 10) + +# We can use format for a multitude of things, from spaces to decimal places +first_name = "Michael" +last_name = "Shuff" +print("Your name is {0} {1}".format(first_name, last_name)) + +# Useful String Methods +print("Hello".upper()) # HELLO +print("Hello".lower()) # hello +print("HELLO".islower()) # False +print("HELLO".isupper()) # True +print("Hello".startswith("he")) # False +print("Hello".endswith("lo")) # True +print("Hello There".split()) # [Hello, There] +print("hello1".isalpha()) # False, must consist only of letters +print("hello1".isalnum()) # True, must consist of only letters and numbers +print("3215235123".isdecimal()) # True, must be all numbers +# True, must consist of only spaces/tabs/newlines +print(" \n ".isspace()) +# False, index 0 must be upper case and the rest lower +print("MichaeL".istitle()) +print("Michael Lee".istitle()) # True! + +# Duck Typing - If it walks like a duck, and talks like a duck, it must be a duck +# Assignment - All like JS, but there are no special keywords like let or const +a = 3 +b = a +c = "heyoo" +b = ["reassignment", "is", "fine", "G!"] + +# Comparison Operators - Python uses the same equality operators as JS, but no === +# < - Less than +# > - Greater than +# <= - Less than or Equal +# >= - Greater than or Equal +# == - Equal to +# != - Not equal to +# is - Refers to exact same memory location +# not - ! +# Precedence - Negative Signs(not) are applied first(part of each number) +# - Multiplication and Division(and) happen next +# - Addition and Subtraction(or) are the last step +# NOTE: Be careful when using not along with == +print(not a == b) # True +# print(a == not b) # Syntax Error +print(a == (not b)) # This fixes it. Answer: False +# Python does short-circuit evaluation + +# Assignment Operators - Mostly the same as JS except Python has **= and //= (int division) + +# Flow Control Statements - if, while, for +# Note: Python smushes 'else if' into 'elif'! +if 10 < 1: + print("We don't get here") +elif 10 < 5: + print("Nor here...") +else: + print("Hey there!") + +# Looping over a string +for c in "abcdefgh": + print(c) + +# Looping over a range +for i in range(5): + print(i + 1) + +# Looping over a list +lst = [1, 2, 3, 4] +for i in lst: + print(i) + +# Looping over a dictionary +spam = {"color": "red", "age": 42, "items": [(1, "hey"), (2, "hooo!")]} +for v in spam.values(): + print(v) + +# Loop over a list of tuples and destructuring the values +# Assuming spam.items returns a list of tuples each containing two items (k, v) +for k, v in spam.items(): + print(f"{k}: {v}") + +# While loops as long as the condition is True +# - Exit loop early with break +# - Exit iteration early with continue +spam = 0 +while True: + print("Heyy girrllll") + spam += 1 + if spam < 5: + continue + break + + +# Functions - use def keyword to define a function in Python +def printCopyright(): + print("Copyright 2020, ya boi, Mike Shuff") + + +# Lambdas are one liners! (Should be at least, you can use parenthesis to disobey) +avg = lambda num1, num2: print(num1 + num2) + +avg(1, 2) +# Calling it with keyword arguments, order does not matter +avg(num2=20, num1=1252) +printCopyright() + +# We can give parameters default arguments like JS +def greeting(name, saying="Hello"): + print(saying, name) + + +greeting("Mike") # Hello Mike +greeting("Michael", saying="Hello there...") + +# A common gotcha is using a mutable object for a default parameter +# All invocations of the function reference the same mutable object +def append_item(item_name, item_list=[]): # Will it obey and give us a new list? + item_list.append(item_name) + return item_list + + +# Uses same item list unless otherwise stated which is counterintuitive +print(append_item("notebook")) +print(append_item("notebook")) +print(append_item("notebook", [])) + +# Errors - Unlike JS, if we pass the incorrect amount of arguments to a function, +# it will throw an error +# avg(1) # TypeError +# avg(1, 2, 2) # TypeError + +# ----------------------------------- DAY 2 ---------------------------------------- +# Functions - * to get rest of position arguments as tuple +# - ** to get rest of keyword arguments as a dictionary +# Variable Length positional arguments +def add(a, b, *args): + # args is a tuple of the rest of the arguments + total = a + b + for n in args: + total += n + return total + + +print(add(1, 2)) # args is None, returns 3 +print(add(1, 2, 3, 4, 5, 6)) # args is (3, 4, 5, 6), returns 21 + +# Variable Length Keyword Arguments +def print_names_and_countries(greeting, **kwargs): + # kwargs is a dictionary of the rest of the keyword arguments + for k, v in kwargs.items(): + print(greeting, k, "from", v) + + +print_names_and_countries( + "Hey there", Monica="Sweden", Mike="The United States", Mark="China" +) + +# We can combine all of these together +def example2(arg1, arg2, *args, kw_1="cheese", kw_2="horse", **kwargs): + pass + + +# Lists are mutable arrays +empty_list = [] +roomates = ["Beau", "Delynn"] +# List built-in function makes a list too +specials = list() +# We can use 'in' to test if something is in the list, like 'includes' in JS +print(1 in [1, 2, 4]) # True +print(2 in [1, 3, 5]) # False + +# Dictionaries - Similar to JS POJO's or Map, containing key value pairs +a = {"one": 1, "two": 2, "three": 3} +b = dict(one=1, two=2, three=3) +# Can use 'in' on dictionaries too (for keys) +print("one" in a) # True +print(3 in b) # False + +# Sets - Just like JS, unordered collection of distinct objects +bedroom = {"bed", "tv", "computer", "clothes", "playstation 4"} +# bedroom = set("bed", "tv", "computer", "clothes", "playstation 5") +school_bag = set( + ["book", "paper", "pencil", "pencil", "book", "book", "book", "eraser"] +) +print(school_bag) +print(bedroom) +# We can use 'in' on sets as wel +print(1 in {1, 2, 3}) # True +print(4 in {1, 3, 5}) # False + +# Tuples are immutable lists of items +time_blocks = ("AM", "PM") +colors = "red", "green", "blue" # Parenthesis not needed but encouraged +# The tuple built-in function can be used to convert things to tuples +print(tuple("abc")) +print(tuple([1, 2, 3])) +# 'in' may be used on tuples as well +print(1 in (1, 2, 3)) # True +print(5 in (1, 4, 3)) # False + +# Ranges are immutable lists of numbers, often used with for loops +# - start - default: 0, first number in sequence +# - stop - required, next number past last number in sequence +# - step - default: 1, difference between each number in sequence +range1 = range(5) # [0,1,2,3,4] +range2 = range(1, 5) # [1,2,3,4] +range3 = range(0, 25, 5) # [0,5,10,15,20] +range4 = range(0) # [] +for i in range1: + print(i) + +# Built-in functions: +# Filter +isOdd = lambda num: num % 2 == 1 + +filtered = filter(isOdd, [1, 2, 3, 4]) +print(list(filtered)) +for num in filtered: + print(f"first way: {num}") +print("--" * 20) +[print(f"list comprehension: {i}") for i in [1, 2, 3, 4, 5, 6, 7, 8] if i % 2 == 1] + +# Map +def toUpper(str): + return str.upper() + + +upperCased = map(toUpper, ["a", "b", "c", "d"]) +print(list(upperCased)) + +# Sorted +sorted_items = sorted(["john", "tom", "sonny", "Mike"]) +print(list(sorted_items)) # Notice uppercase comes before lowercase +# Using a key function to control the sorting and make it case insensitive +sorted_items = sorted(["john", "tom", "sonny", "Mike"], key=str.lower) +print(sorted_items) +# You can also reverse the sort +sorted_items = sorted(["john", "tom", "sonny", "Mike"], key=str.lower, reverse=True) +print(sorted_items) + +# Enumerate creates a tuple with an index for what you're enumerating +quarters = ["First", "Second", "Third", "Fourth"] +print(list(enumerate(quarters))) +print(list(enumerate(quarters, start=1))) + +# Zip takes list and combines them as key value pairs, or really however you need +keys = ("Name", "Email") +values = ("Buster", "cheetoh@johhnydepp.com") +zipped = zip(keys, values) +print(list(zipped)) +# You can zip more than 2 +x_coords = [0, 1, 2, 3, 4] +y_coords = [4, 6, 10, 9, 10] +z_coords = [20, 10, 5, 9, 1] +coords = zip(x_coords, y_coords, z_coords) +print(list(coords)) + +# Len reports the length of strings along with list and any other object data type +print_len = lambda item: print(len(item)) # doing this to save myself some typing + +print_len("Mike") +print_len([1, 5, 2, 10, 3, 10]) +print_len({1, 5, 10, 9, 10}) # 4 because there is a duplicate here (10) +print_len((1, 4, 10, 9, 20)) + +# Max will return the max number in a given scenario +print(max(1, 2, 35, 1012, 1)) + +# Min +print(min(1, 5, 2, 10)) +print(min([1, 4, 7, 10])) + +# Sum +print(sum([1, 2, 4])) + +# Any +print(any([True, False, False])) +print(any([False, False, False])) + +# All +print(all([True, True, False])) +print(all([True, True, True])) + +# Dir returns all the attributes of an object including it's methods and dunder methods +user = {"Name": "Bob", "Email": "bob@bob.com"} +print(dir(user)) + +# Importing packages and modules +# - Module - A Python code in a file or directory +# - Package - A module which is a directory containing an __init__.py file +# - Submodule - A module which is contained within a package +# - Name - An exported function, class, or variable in a module +# Unlike JS, modules export ALL names contained within them without any special export key + +# Assuming we have the following package with four submodules +# math +# | __init__.py +# | addition.py +# | subtraction.py +# | multiplication.py +# | division.py + +# If we peek into the addition.py file we see there's an add function +# addition.py +# We can import 'add' from other places because it's a 'name' and is automatically exported +def add(num1, num2): + return num1 + num2 + + +# Notice the . syntax because this package can import it's own submodules. +# Our __init__.py has the following files +# This imports the 'add' function +# And now it's also re-exported in here as well +# from .addition import add +# These import and re-export the rest of the functions from the submodule +# from .subtraction import subtract +# from .division import divide +# from .multiplication import multiply +# So if we have a script.py and want to import add, we could do it many ways + +# This will load and execute the 'math/__init__.py' file and give +# us an object with the exported names in 'math/__init__.py' +import math + +# print(math.add(1,2)) + +# This imports JUST the add from 'math/__init__.py' +# from math import add + +# print(add(1, 2)) + +# This skips importing from 'math/__init__.py' (although it still runs) +# and imports directly from the addition.py file +# from math.addition import add + +# This imports all the functions individually from 'math/__init__.py' +# from math import add, subtract, multiply, divide + +# print(add(1, 2)) +# print(subtract(2, 1)) + +# This imports 'add' renames it to 'add_some_numbers' +# from math import add as add_some_numbers + +# --------------------------------------- DAY 3 --------------------------------------- +# Classes, Methods, and Properties +class AngryBird: + # Slots optimize property access and memory usage and prevent you + # from arbitrarily assigning new properties the instance + __slots__ = ["_x", "_y"] + + # Constructor + def __init__(self, x=0, y=0): + # Doc String + """ + Construct a new AngryBird by setting it's position to (0, 0) + """ + ## Instance Variables + self._x = x + self._y = y + + # Instance Method + def move_up_by(self, delta): + self._y += delta + + # Getter + @property + def x(self): + return self._x + + # Setter + @x.setter + def x(self, value): + if value < 0: + value = 0 + self._x = value + + @property + def y(self): + return self._y + + @y.setter + def y(self, value): + self._y = value + + # Dunder Repr... called by 'print' + def __repr__(self): + return f"" + + +# JS to Python Classes cheat table +# JS Python +# constructor() def __init__(self): +# super() super().__init__() +# this.property self.property +# this.method self.method() +# method(arg1, arg2){} def method(self, arg1, ...) +# get someProperty(){} @property +# set someProperty(){} @someProperty.setter + +# List Comprehensions are a way to transform a list from one format to another +# - Pythonic Alternative to using map or filter +# - Syntax of a list comprehension +# - new_list = [value loop condition] +# Using a for loop +squares = [] +for i in range(10): + squares.append(i ** 2) +print(squares) + +# value = i ** 2 +# loop = for i in range(10) +squares = [i ** 2 for i in range(10)] +print(list(squares)) + +sentence = "the rocket came back from mars" +vowels = [character for character in sentence if character in "aeiou"] +print(vowels) + +# You can also use them on dictionaries. We can use the items() method +# for the dictionary to loop through it getting the keys and values out at once +person = {"name": "Corina", "age": 32, "height": 1.4} + +# This loops through and capitalizes the first letter of all keys +newPerson = {key.title(): value for key, value in person.items()} +print(list(newPerson.items())) + +``` diff --git a/Readings/right.html b/Readings/right.html new file mode 100644 index 00000000..7730e667 --- /dev/null +++ b/Readings/right.html @@ -0,0 +1,34 @@ + + + + + +C:/Users/bryan/Downloads/PYTHON-REPO/Readings + + + + + + + + +
Folders
<Go Back>
+
+ + + + + + + + + +
FileFileFileFile
(Tutorial...n.html Controlli...n.html 30-python...ets.md python-basics.md 
10 Extern...e.html How to bu...n.html A quick y...tes.md The Pytho...ers.md 
30-python...s.html python-basics.html An A-Z of...cks.md beginners.pdf 
A quick y...s.html The Pytho...s.html Automate-...hon.md importing...on.pdf 
An A-Z of...s.html (Tutorial...hon.md Controlli...hon.md jupyter-n...et.pdf 
Automate-...n.html 10 Extern...ove.md How to bu...hon.md numpy.pdf 
+ +

+Folders: 1
+Files: 24
+Size of all files: 2330135 KB

+ + + \ No newline at end of file diff --git a/directory.html b/directory.html new file mode 100644 index 00000000..7bbd7e2a --- /dev/null +++ b/directory.html @@ -0,0 +1,11 @@ + + + +Site Navigation + + + + + + + \ No newline at end of file diff --git a/exploring-python/Numpy.ipynb b/exploring-python/Numpy.ipynb new file mode 100644 index 00000000..c70fc988 --- /dev/null +++ b/exploring-python/Numpy.ipynb @@ -0,0 +1,2661 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "LNfAROLDPn4Y" + }, + "source": [ + "# Numpy \n", + "\n", + "\n", + "\n", + "* Basic library used in scientific calculations\n", + "\n", + "* Linear algebra, machine learning, data science\n", + "\n", + "* Multi-dimensional arrays\n", + "\n", + "* Fast access to multidimensional arrays\n", + "\n", + "* The difference from the lists is having a fixed size.\n", + "\n", + "\n", + "![numpy.PNG](data:image/png;base64,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)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "oaFwqdSgPJYE" + }, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "57ve9sX-P7Le" + }, + "outputs": [], + "source": [ + "a = np.array([1,2,3,4,5]) # 1st-degree array, vector" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "IYrYD-DIQJiw", + "outputId": "81dbb41b-399d-4a28-d455-265437ddfaa2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "50Cr6wPdQL9u", + "outputId": "cb5c2e1d-cc9c-4aae-9692-4a2b7a8468b6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(5,)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.shape " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "UBwXn9SfQPdb", + "outputId": "1a545220-7f56-4efd-bc87-c8b95e8642d5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a.ndim # return the dimension of an array" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 2, 3, 4, 5])" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "eM2FHcT4QWge", + "outputId": "742f28bc-30fb-49e9-852d-2fc4b489793a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "4\n", + "3\n" + ] + } + ], + "source": [ + "print(a[0])\n", + "print(a[3])\n", + "print(a[2])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "3GqnJxZRQdww", + "outputId": "8d55f421-5ee1-45d4-fc62-ca846637cc3e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 2 8 4 5]\n" + ] + } + ], + "source": [ + "a[2] = 8\n", + "\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "T4YHqQ25RDWn" + }, + "outputs": [], + "source": [ + "b = np.array([[1,2,3,4],\n", + " [5,6,7,8]]) #2nd-degree array" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "T1a-6fsjRZ-u", + "outputId": "3d59e0b6-c4f3-4259-bae1-6673a611685c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3, 4],\n", + " [5, 6, 7, 8]])" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "cYIkw2VVRlT7", + "outputId": "84afd9e0-ee91-4427-a266-7eccebaaf600" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "EaKBwnAlRozK", + "outputId": "41315af3-4a46-4580-9ea8-584a52a6bdf4" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(2, 4)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b.shape # 2nd-degree array with 2 row, 4 col." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3, 4],\n", + " [5, 6, 7, 8]])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "4AGngEh7Rrzb", + "outputId": "4ac85f3d-ec2f-4481-d8d1-b57c82fd1371" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "5\n", + "6\n" + ] + } + ], + "source": [ + "print(b[0,0]) \n", + "print(b[1,0]) \n", + "print(b[1,1]) #1st item of 1st row" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "sfj3k0nASWd5", + "outputId": "1a3e9004-6fe2-4a47-ff3a-2c5950c004ab" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 5 6\n" + ] + } + ], + "source": [ + "print(b[0,0],b[1,0],b[1,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "B7CWo6x7ScGt" + }, + "outputs": [], + "source": [ + "c = np.array([[1,2,3],\n", + " [4,5,6],\n", + " [7,8,9]])" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "BJolEGVYTku5", + "outputId": "0894f466-590b-46bf-b7cb-45d0a4305bd4" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "jB6xZrrSTl91", + "outputId": "9ab0e76b-dff2-4447-8dc3-4a03ff36c090" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "PQiTSvuyTqHo", + "outputId": "cc475b70-2a1f-401b-9d4e-732d529508ac" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 3)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "c.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "tzR7JdjfVW2O" + }, + "outputs": [], + "source": [ + "d = np.array([[[1,2,3],\n", + " [4,5,6],\n", + " [7,8,9]]])" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "MReC1memVgiv", + "outputId": "1b59f141-fba0-430e-d059-2971b3a81217" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[1, 2, 3],\n", + " [4, 5, 6],\n", + " [7, 8, 9]]])" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "iyKawQGfViJ4", + "outputId": "e7fdc5fc-5242-4849-f671-543e31c5c300" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.ndim # 3-dimension array" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "jr47fZl9VnH0", + "outputId": "16e6b0cb-920d-49eb-b722-2903cc28618c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 3, 3)" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "yjdoyhzSV7Ic", + "outputId": "fe8e05aa-c2c8-478d-c857-83f83e8b987d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d[0,1,1]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "mU7pzvKMWQO4" + }, + "source": [ + "### Arrays with Special Values" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "-dGCcLvSWMr2", + "outputId": "dbf87acb-0cd5-4590-929c-56a092664f4d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0. 0.]\n", + " [0. 0.]]\n" + ] + } + ], + "source": [ + "#Zero Array\n", + "\n", + "\n", + "s = np.zeros((2,2))\n", + "\n", + "print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "hf_AtIYYWkvZ", + "outputId": "d09ecdaa-b6db-4a69-98e3-10beb8a1de47" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "int64\n" + ] + } + ], + "source": [ + "s2 = np.ones((2,3)).astype(\"int64\").dtype\n", + "\n", + "print(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1. 1. 1.]\n", + " [1. 1. 1.]]\n" + ] + } + ], + "source": [ + "s2 = np.ones((2,3))\n", + "print(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "vx3qexEqWvL1", + "outputId": "ea2d52db-607f-48c0-de2b-d70a0120f28c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[8 8 8]\n", + " [8 8 8]\n", + " [8 8 8]]\n" + ] + } + ], + "source": [ + "\n", + "s3 = np.full((3,3),8)\n", + "\n", + "print(s3)" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 159 + }, + "colab_type": "code", + "id": "E9R0MuxNW4e-", + "outputId": "7e3c63cc-f910-4963-a881-1d7e0b10a737" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[9.27679712e-312 6.27463370e-322 0.00000000e+000 0.00000000e+000\n", + " 1.42417900e-306]\n", + " [5.30276956e+180 1.57076922e-076 4.57487963e-071 4.66499561e-086\n", + " 3.35959356e-143]\n", + " [6.01433264e+175 6.93885958e+218 5.56218858e+180 3.94356143e+180\n", + " 3.72782491e-057]\n", + " [7.80064249e-043 6.52055591e-042 9.35008708e-067 4.41198586e-143\n", + " 1.50008929e+248]]\n" + ] + } + ], + "source": [ + "# It creates a series of randomly determined elements according to the state of the memory.\n", + "\n", + "s4 = np.empty((4,5))\n", + "\n", + "print(s4)" + ] + }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 88 + }, + "colab_type": "code", + "id": "qFKWO-IMXZzq", + "outputId": "536ce149-e413-4217-b4ee-e43240deb491" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1. 0. 0. 0.]\n", + " [0. 1. 0. 0.]\n", + " [0. 0. 1. 0.]\n", + " [0. 0. 0. 1.]]\n" + ] + } + ], + "source": [ + "#diagonal array\n", + "\n", + "s5 = np.eye(4)\n", + "\n", + "print(s5)" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "nSwJ1RbGYDWa", + "outputId": "2bcfce3d-13aa-4433-b3dd-fc2856e5a921" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0 1 2 3 4 5 6 7 8 9]\n" + ] + } + ], + "source": [ + "s7 = np.arange(0,10,1) \n", + "\n", + "print(s7)" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "1jtSOsmAY1pQ", + "outputId": "b5b3fe57-aaef-40da-8f01-d58714944065" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2. 2.25 2.5 2.75 3. ]\n" + ] + } + ], + "source": [ + "s8 = np.linspace(2,3,5)\n", + "\n", + "print(s8)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "colab_type": "code", + "id": "DUmuguakX1em", + "outputId": "2f51779e-4771-4441-b9db-7b1d7abec17b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.76340755 0.53471369 0.46762585 0.85171004 0.95582832]\n", + " [0.70299103 0.15913386 0.7042347 0.38874101 0.93434943]\n", + " [0.78667396 0.61890382 0.4776483 0.22138073 0.45374143]\n", + " [0.57427484 0.7634074 0.71862918 0.15050893 0.37722183]\n", + " [0.27245849 0.2875156 0.25576563 0.28632725 0.64980458]]\n" + ] + } + ], + "source": [ + "s6 = np.random.random((5,5)) \n", + "\n", + "print(s6)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "GPlviTndZlNs", + "outputId": "cd5385e5-f25b-4249-9945-2f36d5bd46fd" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(10,)" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "array_random = np.random.randint(5,10, size = 10)\n", + "array_random.shape " + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 88 + }, + "colab_type": "code", + "id": "-EqS5efhZ51Y", + "outputId": "90ba1836-5fc4-40d1-d0fc-8d005e5881a5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[8, 9, 7, 7],\n", + " [7, 8, 7, 8],\n", + " [8, 6, 8, 6],\n", + " [6, 8, 6, 8]])" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.random.randint(5,10, size= (4,4))" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 124 + }, + "colab_type": "code", + "id": "CJtE67kOaIBS", + "outputId": "e03e0b13-f6e5-4957-c57b-c867ced373df" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[7 6 6]\n", + " [7 7 9]\n", + " [8 6 8]\n", + " [9 5 8]\n", + " [8 7 9]]\n", + "(5, 3)\n" + ] + } + ], + "source": [ + "#reshape\n", + "\n", + "d2 = np.random.randint(5,10, size = (5,3))\n", + "\n", + "print(d2)\n", + "\n", + "print(d2.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "-v1N5u1xaW3I", + "outputId": "c42a8bfe-bd51-4a71-fe07-324a34332a43" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[7, 6, 6, 7, 7],\n", + " [9, 8, 6, 8, 9],\n", + " [5, 8, 8, 7, 9]])" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.reshape(3,5) #The original matrix and the new one must have the same number of items." + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[7],\n", + " [6],\n", + " [6],\n", + " [7],\n", + " [7],\n", + " [9],\n", + " [8],\n", + " [6],\n", + " [8],\n", + " [9],\n", + " [5],\n", + " [8],\n", + " [8],\n", + " [7],\n", + " [9]])" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.reshape(15,1)" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "colab_type": "code", + "id": "E3fF-kX0bEZc", + "outputId": "0b31361d-e5d5-4d98-f7f9-60f93d2f3aef" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[9 9 8]\n", + " [5 8 6]\n", + " [5 5 7]\n", + " [9 7 8]\n", + " [9 9 7]]\n" + ] + } + ], + "source": [ + "d3 = np.random.randint(5,10, size = (5,3))\n", + "\n", + "print(d3)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "VWznb1VccVbX", + "outputId": "ffb8bc61-a09c-4afd-a58f-f2af5dfc8bd8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9 9 8 5 8 6 5 5 7 9 7 8 9 9 7]\n" + ] + } + ], + "source": [ + "d3 = d3.ravel()\n", + "\n", + "print(d3)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "at5eOfDpccRi", + "outputId": "0670e23f-a82b-453b-9a80-ad510200c2b5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(15,)" + ] + }, + "execution_count": 117, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "b9iUc78Xcfn2", + "outputId": "ad4abaa0-f6b0-421d-c9fa-c06d3a9c3685" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int32')" + ] + }, + "execution_count": 118, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([9, 9, 8, 5, 8, 6, 5, 5, 7, 9, 7, 8, 9, 9, 7])" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3.astype(\"int64\").dtype\n", + "d3" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [], + "source": [ + "d3 = d3.reshape(3,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[9, 9, 8, 5, 8],\n", + " [6, 5, 5, 7, 9],\n", + " [7, 8, 9, 9, 7]])" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "2cY50jkVck7x", + "outputId": "45528b9f-7f73-44d7-a476-e61165cc488b" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3.max()" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "yLZSqxUicn8M", + "outputId": "1e9bbb85-f712-4c66-c625-686e58d8a65e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3.min()" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "28AXNm6Ucpgx", + "outputId": "b1e8b0ba-9b9b-4976-a205-f6d4ee042fab" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[7, 8, 9, 9, 7],\n", + " [6, 5, 5, 7, 9],\n", + " [9, 9, 8, 5, 8]])" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3[::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "VW-zH91kcu1C" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[79 20 99 85 42 69 54 24 42 10]\n" + ] + } + ], + "source": [ + "news = np.random.randint(1,100,10)\n", + "\n", + "print(news)" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 141, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(news)" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 142, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "news.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10,)" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "news.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "YfwQ7uwpRyIM" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 144, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "news.argmax()" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "okmEldzoR0W6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "news.argmin()" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "6RAzHt1JR2hf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "52.4" + ] + }, + "execution_count": 146, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "news.mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "rBXAqPXWR-Z-" + }, + "source": [ + "## Stacking" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "DXGTBaHZR6Oa" + }, + "outputs": [], + "source": [ + "a = np.array([[1,2,3],[4,5,6]])\n", + "\n", + "b = np.array([[6,5,4], [3,2,1]])" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[6, 5, 4],\n", + " [3, 2, 1]])" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "unmWypIcSEfv" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6],\n", + " [6, 5, 4],\n", + " [3, 2, 1]])" + ] + }, + "execution_count": 150, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.vstack((a,b)) #vertical stacking" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "f0ZXDE8PSIzh" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3, 6, 5, 4],\n", + " [4, 5, 6, 3, 2, 1]])" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.hstack((a,b)) #horizontal stacking" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "23oZkyItSPYP" + }, + "source": [ + "## Concatenation" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "mTYlzQ48SM0B" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0 1]\n", + " [2 3]\n", + " [4 5]\n", + " [6 7]\n", + " [8 9]]\n" + ] + } + ], + "source": [ + "myArray = np.array([0,1,2,3,4,5,6,7,8,9]).reshape(5,2)\n", + "\n", + "print(myArray)" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "PLGnF7nNSXN7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0 1]\n", + " [2 3]\n", + " [4 5]\n", + " [6 7]\n", + " [8 9]\n", + " [0 1]\n", + " [2 3]\n", + " [4 5]\n", + " [6 7]\n", + " [8 9]]\n" + ] + } + ], + "source": [ + "print(np.concatenate([myArray,myArray], axis = 0)) #vertical " + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "qA03GoFRSff7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0 1 0 1]\n", + " [2 3 2 3]\n", + " [4 5 4 5]\n", + " [6 7 6 7]\n", + " [8 9 8 9]]\n" + ] + } + ], + "source": [ + "print(np.concatenate([myArray,myArray], axis = 1)) #horizontal" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "ZUmGC9ODSomz" + }, + "source": [ + "## Slicing" + ] + }, + { + "cell_type": "code", + "execution_count": 156, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "9L4C-b_ZSlvc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[2 3]\n", + " [6 7]]\n" + ] + } + ], + "source": [ + "a = np.array([[1,2,3,4],\n", + " [5,6,7,8],\n", + " [9,10,11,12]])\n", + "\n", + "b = a[:2, 1:3] \n", + "\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "wh8r1cEMSuAy" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "print(a[0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 161, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "k9nAHjvLSwt5" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "77\n" + ] + } + ], + "source": [ + "b[0,0] = 77 \n", + "\n", + "print(a[0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 162, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 77, 3, 4],\n", + " [ 5, 6, 7, 8],\n", + " [ 9, 10, 11, 12]])" + ] + }, + "execution_count": 162, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 163, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "VRNic9bDSzxr" + }, + "outputs": [], + "source": [ + "line1 = a[1,:] \n", + "line2 = a[1:2, :] \n", + "line3 = a[[1],:] " + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "TUexRz5ZS4dh" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5 6 7 8] (4,)\n", + "[[5 6 7 8]] (1, 4)\n", + "[[5 6 7 8]] (1, 4)\n" + ] + } + ], + "source": [ + "print(line1, line1.shape)\n", + "print(line2, line2.shape)\n", + "print(line3, line3.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 77, 3, 4],\n", + " [ 5, 6, 7, 8],\n", + " [ 9, 10, 11, 12]])" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 166, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "KSxCqS2_TGKT" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[77 6 10] (3,)\n", + "[[77]\n", + " [ 6]\n", + " [10]] (3, 1)\n" + ] + } + ], + "source": [ + "col1 = a[:,1]\n", + "col2 = a[:, 1:2]\n", + "\n", + "print(col1, col1.shape)\n", + "print(col2, col2.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 167, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 167, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col2.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 168, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 168, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "col1.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 169, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "xzT-ONxwTO6V" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 4 5]\n" + ] + } + ], + "source": [ + "t = np.array([[1,2],\n", + " [3,4],\n", + " [5,6]])\n", + "\n", + "print(t[[0,1,2],[0,1,0]]) " + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "DKevt062TSnx" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1 4 5]\n" + ] + } + ], + "source": [ + "print(np.array([t[0,0], t[1,1], t[2,0]]))" + ] + }, + { + "cell_type": "code", + "execution_count": 171, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "2C1i0Ho6TVWR" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1 2 3]\n", + " [ 4 5 6]\n", + " [ 7 8 9]\n", + " [10 11 12]]\n" + ] + } + ], + "source": [ + "s = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])\n", + "\n", + "print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 172, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "uxySP8koTXlt" + }, + "outputs": [], + "source": [ + "indis = np.array([0,2,0,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 2, 0, 1])" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "indis" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Imc_L_zDTZup" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 1 6 7 11]\n" + ] + } + ], + "source": [ + "print(s[np.arange(4), indis]) #([0,1,2,3],[0,2,0,1]) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "vY8ivMIcTwDX" + }, + "source": [ + "## Aritmetic Operations" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Y3mWYuRMTtp6" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'np' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m7\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m+\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'np' is not defined" + ] + } + ], + "source": [ + "x = np.array([[1,2],[3,4]], dtype= np.float64)\n", + "y = np.array([[5,6],[7,8]], dtype= np.float64)\n", + "\n", + "\n", + "print(x+y)\n", + "\n", + "print(np.add(x,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "InoPX9IfT2TD" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'x' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m-\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msubtract\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mNameError\u001b[0m: name 'x' is not defined" + ] + } + ], + "source": [ + "print(x-y)\n", + "\n", + "print(np.subtract(x,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 177, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "xgjf6TRXT4KE" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 5. 12.]\n", + " [21. 32.]]\n", + "[[-4. -4.]\n", + " [-4. -4.]]\n" + ] + } + ], + "source": [ + "print(x*y)\n", + "\n", + "print(np.subtract(x,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "L4WmyWO4T7N_" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[19. 22.]\n", + " [43. 50.]]\n" + ] + } + ], + "source": [ + "print(np.dot(x,y)) #This function returns the dot product of two arrays." + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [], + "source": [ + "# (2,3) ve (3,2)\n", + "# (2,2) ve (2,3)" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "oGUtI5C2UAzG" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.2 0.33333333]\n", + " [0.42857143 0.5 ]]\n", + "[[0.2 0.33333333]\n", + " [0.42857143 0.5 ]]\n" + ] + } + ], + "source": [ + "print(x/y)\n", + "\n", + "print(np.divide(x,y))" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "1g4Nst8kUCr9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[2. 3.]\n", + " [4. 9.]]\n" + ] + } + ], + "source": [ + "s = np.array([[4,9],[16,81]], dtype = np.float64)\n", + "\n", + "print(np.sqrt(s))" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "njZBwrrfUMma" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 16. 81.]\n", + " [ 256. 6561.]]\n" + ] + } + ], + "source": [ + "s = np.array([[4,9],[16,81]], dtype = np.float64)\n", + "\n", + "print(np.square(s))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "R6mLUA9lUbri" + }, + "outputs": [], + "source": [ + "#Calculate the exponential of all elements in the input array\n", + "\n", + "s = np.array([[4,9],[16,81]], dtype = np.float64)\n", + "print(np.exp(s))" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "J1lL22dDUekL" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 2.30258509 4.60517019 6.90775528 9.21034037 11.51292546 13.81551056]\n" + ] + } + ], + "source": [ + "v = np.array([10,100,1000,10000,100000,1000000])\n", + "\n", + "print(np.log(v))" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "BQC2eCOHUglI" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.5 , 1. , 0.8660254])" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = np.array([np.pi/6, np.pi/2, np.pi/3])\n", + "\n", + "np.sin(t)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "oLIpPcKzUvBW" + }, + "source": [ + "## Vector Product" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "OmSpdiGSUjze" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "219\n", + "219\n" + ] + } + ], + "source": [ + "x = np.array([[1,2],[3,4]])\n", + "y = np.array([[5,6],[7,8]])\n", + "\n", + "a = np.array([9,10])\n", + "b = np.array([11,12])\n", + "\n", + "\n", + "print(a.dot(b))\n", + "\n", + "print(np.dot(a,b))" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "EmnpSYU3Uz7f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[29 67]\n", + "[39 58]\n" + ] + } + ], + "source": [ + "print(x.dot(a))\n", + "\n", + "print(np.dot(a,x))" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "sYSiH6ezU2oP" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[127 173]\n", + "[127 173]\n" + ] + } + ], + "source": [ + "\n", + "print(y.dot(b))\n", + "\n", + "print(np.dot(y,b))" + ] + }, + { + "cell_type": "code", + "execution_count": 192, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "vsKhePngU4mi" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10\n", + "[4 6]\n", + "[3 7]\n" + ] + } + ], + "source": [ + "x = np.array([[1,2],[3,4]])\n", + "\n", + "print(np.sum(x))\n", + "\n", + "print(np.sum(x, axis = 0))\n", + "\n", + "print(np.sum(x, axis = 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "h9mesia-U7Lt" + }, + "source": [ + "## Transpose" + ] + }, + { + "cell_type": "code", + "execution_count": 193, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "fL-2y6ThVIAs" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 3]\n", + " [2 4]]\n" + ] + } + ], + "source": [ + "x = np.array([[1,2],\n", + " [3,4]])\n", + "\n", + "\n", + "print(x.T)" + ] + }, + { + "cell_type": "code", + "execution_count": 194, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "XA6X8tgmVLPb" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1]\n", + " [2]\n", + " [3]]\n" + ] + } + ], + "source": [ + "v = np.array([[1,2,3]])\n", + "\n", + "\n", + "print(v.T)" + ] + }, + { + "cell_type": "code", + "execution_count": 195, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "7WqO52kCVQa1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3]]\n", + "(1, 3)\n", + "[[1]\n", + " [2]\n", + " [3]]\n", + "(3, 1)\n" + ] + } + ], + "source": [ + "\n", + "t = np.array([[1,2,3]])\n", + "\n", + "\n", + "print(t)\n", + "\n", + "print(t.shape)\n", + "\n", + "print(t.T)\n", + "\n", + "v = t.T\n", + "\n", + "print(v.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 198, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "tcLo6EtbVRQv" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[1. 2. 2.5]\n", + "[1 2 2]\n" + ] + } + ], + "source": [ + "#Data Type Conversion\n", + "\n", + "x = np.array([1,2,2.5])\n", + "\n", + "print(x)\n", + "\n", + "x = x.astype(int)\n", + "\n", + "print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 199, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "RYPf6IQHVZEW" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2,)\n", + "(1, 2)\n", + "(1, 1, 2)\n", + "(1, 1, 1, 2)\n", + "\n", + "4\n", + "[[[[1]]]\n", + "\n", + "\n", + " [[[2]]]]\n" + ] + } + ], + "source": [ + "#Dimension Expansion\n", + "\n", + "y = np.array([1,2])\n", + "\n", + "print(y.shape)\n", + "\n", + "y = np.expand_dims(y, axis = 0)\n", + "\n", + "print(y.shape)\n", + "\n", + "y = np.expand_dims(y, axis = 0)\n", + "\n", + "print(y.shape)\n", + "\n", + "y = np.expand_dims(y, axis = 0)\n", + "\n", + "print(y.shape)\n", + "print(type(y))\n", + "print(y.ndim)\n", + "print(y.reshape(2,1,1,1))" + ] + }, + { + "cell_type": "code", + "execution_count": 200, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "e24Ud2sKVhg9" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2,)\n", + "(2, 1)\n", + "(2, 1, 1)\n", + "(2, 1, 1, 1)\n" + ] + } + ], + "source": [ + "x = np.array([1,2])\n", + "\n", + "print(x.shape)\n", + "\n", + "x = np.expand_dims(x, axis = 1)\n", + "\n", + "print(x.shape)\n", + "\n", + "x = np.expand_dims(x, axis = 1)\n", + "\n", + "print(x.shape)\n", + "\n", + "x = np.expand_dims(x, axis = 1)\n", + "\n", + "print(x.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Day_7.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exploring-python/basics.ipynb b/exploring-python/basics.ipynb new file mode 100644 index 00000000..48fa509d --- /dev/null +++ b/exploring-python/basics.ipynb @@ -0,0 +1,1422 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# What is Python?\n", + "\n", + "* Python is an interpreted, high-level and general-purpose programming language.\n", + "* object-oriented approach aim to help programmers write clear\n", + "* dynamically typed and garbage-collected.\n", + "* Python was created in the late 1980s by Guido van Rossum" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"Hello World!\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello World!" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print('Hello World')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello World" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"Hello1\")\n", + "print(\"Hello2\")\n", + "print(\"Hello3\")\n", + "print(\"Welcome to Our Python course\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello1\nHello2\nHello3\nWelcome to Our Python course" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print \"Hello World\"" + ], + "outputs": [ + { + "output_type": "error", + "ename": "SyntaxError", + "evalue": "Missing parentheses in call to 'print'. Did you mean print(\"Hello World\")? (, line 1)", + "traceback": [ + "\u001B[1;36m File \u001B[1;32m\"\"\u001B[1;36m, line \u001B[1;32m1\u001B[0m\n\u001B[1;33m print \"Hello World\"\u001B[0m\n\u001B[1;37m ^\u001B[0m\n\u001B[1;31mSyntaxError\u001B[0m\u001B[1;31m:\u001B[0m Missing parentheses in call to 'print'. Did you mean print(\"Hello World\")?\n" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(Hello)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "NameError", + "evalue": "name 'Hello' is not defined", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mNameError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mHello\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mNameError\u001B[0m: name 'Hello' is not defined" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"Hello')" + ], + "outputs": [ + { + "output_type": "error", + "ename": "SyntaxError", + "evalue": "EOL while scanning string literal (, line 1)", + "traceback": [ + "\u001B[1;36m File \u001B[1;32m\"\"\u001B[1;36m, line \u001B[1;32m1\u001B[0m\n\u001B[1;33m print(\"Hello')\u001B[0m\n\u001B[1;37m ^\u001B[0m\n\u001B[1;31mSyntaxError\u001B[0m\u001B[1;31m:\u001B[0m EOL while scanning string literal\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Version Control" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "!python --version" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Python 3.9.0" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comment" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#taking some notes \n", + "#taking some notes\n", + "#take a note" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\n", + "'''Michael Irwin Jordan is an American scientist, professor at the University of California, \n", + "Berkeley and researcher in machine learning, statistics, and artificial intelligence.\n", + "He is one of the leading figures in machine learning, \n", + "and in 2016 Science reported him as the world's most influential computer scientist.\n", + "'''.replace(\"\\n\",\" \")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "\"Michael Irwin Jordan is an American scientist, professor at the University of California, Berkeley and researcher in machine learning, statistics, and artificial intelligence. He is one of the leading figures in machine learning, and in 2016 Science reported him as the world's most influential computer scientist. \"" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\n", + "\"\"\"\n", + "write something\n", + "\"\"\"" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'\\nwrite something\\n'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Declaring Variables\n", + "\n", + "* variable = value\n", + "\n", + "* n = 5" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "n = 1 \n", + "print(n)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "1" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "p = n\n", + "print(p)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "1" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Data Types\n", + "* Integer\n", + "* Float\n", + "* String\n", + "* Boolean\n", + "* Complex\n", + "* Dictionary\n", + "* Tuple\n", + "* Set" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#String\n", + "hello = \"World\"" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(hello) #print variable\n", + "print(\"World\") #print value\n", + "print(n)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "World\nWorld\n1" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#type() \n", + "type(hello)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(type(hello)) #print data type" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#Integer\n", + "int_value = 5\n", + "int_value" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(type(int_value))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "t = 3.19\n", + "print(type(t))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type('x')" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#Boolean\n", + "t, f = True, False\n", + "print(type(t))\n", + "print(t)\n", + "print(f)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "\nTrue\nFalse" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#swapping\n", + "data1 = 7 \n", + "data2 = 12\n", + "data3 = 23\n", + "data4 = 33\n", + "\n", + "data1, data2, data3 , data4 = data2 , data1, data4, data3\n", + "print(data1, data2, data3, data4)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "12 7 33 23" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"data1:\", data1, \"data:\", data2)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "data1: 12 data: 7" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#length ifadesi bir string değerin uzunluğunu bulmamıza yarar.\n", + "len(\"Pythoneer\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "9" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "len(\"Welcome to Turkish AI Hub\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "25" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'World'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(len(hello)) #print data length " + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "5" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "p" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "len(5)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "object of type 'int' has no len()", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mlen\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;36m5\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m: object of type 'int' has no len()" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "len(15.6)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "object of type 'float' has no len()", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mlen\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;36m15.6\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m: object of type 'float' has no len()" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "data22 = \"Data Science\"\n", + "len(data22) " + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "len(\"Data Science\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = 15\n", + "b = 23\n", + "\n", + "a, b = b, a\n", + "print(a)\n", + "print(b)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "23\n15" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#F-string\n", + "name = \"Turkey\"\n", + "print(f'hello {name}') " + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "hello Turkey" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"Hello\", name)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello Turkey" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "name2 = \"Aslı\"\n", + "print(\"Hello {}\".format(name2))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello Aslı" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "data12 = 5\n", + "data13 = 90\n", + "print(\"My value:{} and Your value:{}\".format(data12, data13))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "My value:5 and Your value:90" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(f'My value: {data12} and your value: {data13}')" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "My value: 5 and your value: 90" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(\"My value:\" + str(data12) + \"Your Value:\" + str(data13))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "My value:5Your Value:90" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = 50" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(a)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(str(a))" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(a)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = str(a)" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'50'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(a)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Aritmetic Operations" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#exponential numbers\n", + "5**2" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "25" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "5**3" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "125" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "35+67" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "102" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"35\"+\"67\"" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'3567'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"Omer\" + \"Cengiz\"" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'OmerCengiz'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"35\" + 67 " + ], + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "can only concatenate str (not \"int\") to str", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[1;34m\"35\"\u001B[0m \u001B[1;33m+\u001B[0m \u001B[1;36m67\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m: can only concatenate str (not \"int\") to str" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"35\"*3 " + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'353535'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"hello\"*4" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'hellohellohellohello'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"hello\" \"world\"" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'helloworld'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "x = 10\n", + "\n", + "print(x+2)\n", + "print(x-2)\n", + "print(x*2)\n", + "print(x**2)\n", + "print(x**4)\n", + "print(x/2)\n", + "print(x//2) \n", + "print(x%2) " + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "12\n8\n20\n100\n10000\n5.0\n5\n0" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "y = 13\n", + "print(y/2)\n", + "print(y//2)\n", + "print(y % 2)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "6.5\n6\n1" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "z = 5\n", + "z+=1 # this statement equals to z= z+1 , meaning while the previous value of z is 5, the new z value becomes 6. \n", + "z" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "z +=2 #z = z + 2\n", + "z" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "z*=2 # z = z * 2\n", + "z" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "16" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/x-csharp", + "name": "C#", + "pygments_lexer": "csharp", + "version": "8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/exploring-python/part1.ipynb b/exploring-python/part1.ipynb new file mode 100644 index 00000000..a4f5e256 --- /dev/null +++ b/exploring-python/part1.ipynb @@ -0,0 +1,2626 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Logical Operations" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "t, f = True, False\n", + "print(type(t))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![truthtable.PNG](data:image/png;base64,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)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(t)\n", + "print(f)\n", + "print(t or f)\n", + "print(t and f)\n", + "print(not t) # not: True if operand is false (complements the operand)\n", + "print(t != f) # != not equal\n", + "print(t==f) # equal\n", + "" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "True\nFalse\nTrue\nFalse\nFalse\nTrue\nFalse" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### len()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello = 'Hello'\n", + "world = \"World\"" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(hello)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(len(hello))\n", + "print(world + \" \" + str(len(world)) + \"\\n\" + \"Hello\") " + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "5\nWorld 5\nHello" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world2 = '%s %d' % (world, len(world))\n", + "print(world2)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "World 5" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(world, len(world))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "World 5" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Type Conversion\n", + "* str() \n", + "* float() \n", + "* int()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(world + str(len(world)))\n", + "\n", + "print(world + \" \" + str(len(world)))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "World5\nWorld 5" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "str(\"Python\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Python'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "float(5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5.0" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(5.0)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "float" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "int(float(5.7))" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "float(\"6.2\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "6.2" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "float(\"Hello\")" + ], + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "could not convert string to float: 'Hello'", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mfloat\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"Hello\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mValueError\u001B[0m: could not convert string to float: 'Hello'" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "int(5.5)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Indexing and Slicing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello = \"Hello\"\n", + "print(hello)\n", + "print(hello[0])\n", + "print(hello[1])\n", + "print(hello[2])\n", + "print(hello[3])\n", + "print(hello[4])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello\nH\ne\nl\nl\no" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello2 = \" Hello\"\n", + "hello2[0]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "' '" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Hello'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(hello[5])" + ], + "outputs": [ + { + "output_type": "error", + "ename": "IndexError", + "evalue": "string index out of range", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mIndexError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mhello\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;36m5\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mIndexError\u001B[0m: string index out of range" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(world)\n", + "print(world[-1])\n", + "print(world[-3])\n", + "print(world[-5])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "World\nd\nr\nW" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world[-6]" + ], + "outputs": [ + { + "output_type": "error", + "ename": "IndexError", + "evalue": "string index out of range", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mIndexError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mworld\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;33m-\u001B[0m\u001B[1;36m6\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mIndexError\u001B[0m: string index out of range" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "job = \" Engineering\"\n", + "\n", + "print(job[-5])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "e" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(hello)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Hello" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Hello'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello[2:4] # [x:y] --> take the values from x th to y th but don't take y th value. " + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'ll'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'World'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world[1:4]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'orl'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(world[3:5])\n", + "\n", + "print(world[3:])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "ld\nld" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello[:4]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Hell'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello[:]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Hello'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello[::-1] " + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'olleH'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'World'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world[:-3]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Wo'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "len(world)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'Hello'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "hello[2:len(world)]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'llo'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "world[2:4:1] # [start:end:step]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'rl'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "city = \"istanbul\"\n", + "city[0:6:2]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'itn'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"t\" in city" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"y\" in city" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"anb\" in city" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "\"snl\" in city" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "n = 10\n", + "str(n)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'10'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "s = '13'\n", + "s\n", + "int(s)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "13" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "s = 'ist'\n", + "int(s)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: 'ist'", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[0ms\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;34m'ist'\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 2\u001B[1;33m \u001B[0mint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0ms\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mValueError\u001B[0m: invalid literal for int() with base 10: 'ist'" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "m = 8\n", + "print(float(m), m)\n", + "m" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "8.0 8" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "ai = 'artificial' + ' ' + 'intelligence'\n", + "print(ai)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "artificial intelligence" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "word = 'machine learning'\n", + "print(word.capitalize())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Machine learning" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(word.upper())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "MACHINE LEARNING" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(word.replace('machine','artificial'))" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "artificial learning" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "word" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "'machine learning'" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "word2 = \" artificial general intelligence\"\n", + "print(word2.strip())" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "artificial general intelligence" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "y = input(\"Please enter a city name: \") #input method always takes string type. \n", + "print(y)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Please enter a city name: 555\n555" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(y)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "x = int(input(\"Please enter an integer: \"))\n", + "print(x)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Please enter an integer: 4.3" + }, + { + "output_type": "error", + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: '4.3'", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mx\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0minput\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"Please enter an integer: \"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 2\u001B[0m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mx\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;31mValueError\u001B[0m: invalid literal for int() with base 10: '4.3'" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(x)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "month = 12\n", + "day = 365\n", + "\n", + "print('One year is ', month, 'months, and ', day, 'days.', sep =' ')\n", + "print('One year is ', month, ' months, and ', day, ' days.', sep ='')\n", + "\n", + "print(\"One year is \" + str(month) + \" months, and \" + str(day) + \" days.\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "One year is 12 months, and 365 days.\nOne year is 12 months, and 365 days.\nOne year is 12 months, and 365 days." + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Question:\n", + "\n", + "Create a program will compute the tax and the tip for a meal ordered at a restaurant. You can compute the tax as 8 percent of the meal amount and the tip as 10 percent of the meal amount (without the tax). The output from your program should include the tax amount, the tip amount, and the grand total for the meal including both the tax and the tip.\n", + "\n", + "\n", + "a)Define the cost of the meal in the beginning of your program.\n", + "\n", + "Some several example program runs:\n", + "\n", + "Cost of the meal is 25 Eur. \n", + "\n", + "Sample Run: The tax is 2.00 Eur and the tip is 2.50 Eur, making the total 29.50 Eur.\n", + "\n", + "Cost of the meal is 68 Eur.\n", + "\n", + "Sample Run: The tax is 5.44 Eur and the tip is 6.80000000000001 Eur, making the total 80.24 Eur.\n", + "\n", + "b)Input the cost of the meal from the user.\n", + "\n", + "Some several example program runs:\n", + "\n", + "Please enter the cost of your meal: 100 \n", + "\n", + "Sample Run: The tax is 8.00 Eur and the tip is 10.00 Eur, making the total 118.00 Eur.\n", + "\n", + "Please enter the cost of your meal: 68\n", + "\n", + "Sample Run: The tax is 5.44 Eur and the tip is 6.80 Eur, making the total 80.24 Eur." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Answer" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "# a)Define the cost of the meal in the beginning of your program.\n", + "\n", + "cost = 79\n", + "tax = cost * 0.08\n", + "tip = cost * 0.1\n", + "total = cost + tax + tip\n", + "\n", + "\n", + "\n", + "print(\"The tax is \" + str(tax) + \" Eur and the tip is \" + str(tip) + \" Eur, making the total \" + format(total, \".2f\") + \" Eur.\")\n", + "\n", + "\n", + "print(\"The tax is \" + format(tax, \".2f\") + \" Eur and the tip is \" + format(tip, \".2f\") + \" Eur, making the total \" + format(total, \".2f\") + \" Eur\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "The tax is 6.32 Eur and the tip is 7.9 Eur, making the total 93.22 Eur.\nThe tax is 6.32 Eur and the tip is 7.90 Eur, making the total 93.22 Eur" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "#b)Input the cost of the meal from the user.\n", + "\n", + "cost = float(input(\"Please enter the cost of your meal: \"))\n", + "tax = cost * 0.08\n", + "tip = cost * 0.1\n", + "total = cost + tax + tip\n", + "\n", + "\n", + "print(\"The tax is \" + str(tax) + \" Eur and the tip is \" + str(tip) + \" Eur, making the total \" + format(total, \".2f\") + \" Eur\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Please enter the cost of your meal: 45\nThe tax is 3.6 Eur and the tip is 4.5 Eur, making the total 53.10 Eur" + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lists" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + " # creating a list\n", + "mylist = [3,5,6,7]\n", + "print(mylist) " + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[3, 5, 6, 7]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "type(mylist)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(mylist[0])\n", + "print(mylist[2])\n", + "print(mylist[-1])\n", + "print(mylist[-3])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "3\n6\n7\n5" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = 5\n", + "print(a)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "5" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = 3\n", + "print(a)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "3" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist[2] = \"python\" # lists can be taken different types of data\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[3, 5, 'python', 7]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.append('course') # append(): adding some items end of the list \n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[3, 5, 'python', 7, 'course', 'course', 'course']" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist = [3,4,5,6,7]\n", + "mylist.append('course')\n", + "mylist.append('course')\n", + "print(mylist)\n", + "\n", + "thelast = mylist.pop() # pop(): removing the last item of the list \n", + "print(thelast)\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[3, 4, 5, 6, 7, 'course', 'course']\ncourse\n[3, 4, 5, 6, 7, 'course']" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[3, 4, 5, 6, 7, 'course']" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.index(\"course\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.index(4)" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.count(\"course\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list2 = [\"Python\",\"Java\",\"R\",\"JavaScript\",\"Ruby\",\"Python\",\"Python\"]\n", + "list2.count(\"Python\")" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[3, 4, 5, 6, 7, 'course']" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.remove(\"course\")\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[3, 4, 5, 6, 7]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.sort()\n", + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[3, 4, 5, 6, 7]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list3 = [100,23,87,13,1000]" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list3.sort()\n", + "list3" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[13, 23, 87, 100, 1000]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list4 = [41,23,78,99,37,2.9,2.8]\n", + "list4.sort()\n", + "list4" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[2.8, 2.9, 23, 37, 41, 78, 99]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list4.remove()" + ], + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "remove() takes exactly one argument (0 given)", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mlist4\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mremove\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m: remove() takes exactly one argument (0 given)" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list5 = [41,23,78,99,37,'python']\n", + "list5.sort()\n", + "list5" + ], + "outputs": [ + { + "output_type": "error", + "ename": "TypeError", + "evalue": "'<' not supported between instances of 'str' and 'int'", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mTypeError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[0mlist5\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;33m[\u001B[0m\u001B[1;36m41\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;36m23\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;36m78\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;36m99\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;36m37\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;34m'python'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 2\u001B[1;33m \u001B[0mlist5\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0msort\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 3\u001B[0m \u001B[0mlist5\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;31mTypeError\u001B[0m: '<' not supported between instances of 'str' and 'int'" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[3, 4, 5, 6, 7]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.remove(\"course\")\n", + "mylist.remove(\"python\")\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "list.remove(x): x not in list", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mmylist\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mremove\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"course\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 2\u001B[0m \u001B[0mmylist\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mremove\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"python\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 3\u001B[0m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mmylist\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;31mValueError\u001B[0m: list.remove(x): x not in list" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.remove(\"course\")\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "error", + "ename": "ValueError", + "evalue": "list.remove(x): x not in list", + "traceback": [ + "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[1;31mValueError\u001B[0m Traceback (most recent call last)", + "\u001B[1;32m\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mmylist\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mremove\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"course\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 2\u001B[0m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mmylist\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", + "\u001B[1;31mValueError\u001B[0m: list.remove(x): x not in list" + ] + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.sort()\n", + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[3, 4, 5, 6, 7]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist = [3,4,5,6,7]" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist.reverse()\n", + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[7, 6, 5, 4, 3]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist2 = [\"python\", \"course\", \"hello\"]\n", + "mylist2.sort()\n", + "mylist2" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "['course', 'hello', 'python']" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[7, 6, 5, 4, 3]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist3 = [1, 11, 111, 1111]\n", + "mylist.extend(mylist3)\n", + "mylist" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[7, 6, 5, 4, 3, 1, 11, 111, 1111, 1, 11, 111, 1111]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist4 = [1, 11, 111, 1111]\n", + "mylist.append(mylist4)\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[7, 6, 5, 4, 3, 1, 11, 111, 1111, 1, 11, 111, 1111, [1, 11, 111, 1111], [1, 11, 111, 1111]]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list_in_list = [\"python\",\"Java\",3.2, 4, 11, [5,65,7,8,9]]\n", + "print(list_in_list[5])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[5, 65, 7, 8, 9]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list_in_list[-1]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[5, 65, 7, 8, 9]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "mylist = [2, 3, 4, 5, 6, 'python', 'flutter', 'Android', 'JavaScript', 'dart', 3.2, 5.0]" + ], + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(mylist)\n", + "mylist.insert(5,55) # insert(x,y) --> adding x th index the y value but don't change the x th value, it remains the same.\n", + "print(mylist)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[2, 3, 4, 5, 6, 'python', 'flutter', 'Android', 'JavaScript', 'dart', 3.2, 5.0]\n[2, 3, 4, 5, 6, 55, 'python', 'flutter', 'Android', 'JavaScript', 'dart', 3.2, 5.0]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "a = list([1,2,3,4,5,6])\n", + "a " + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[1, 2, 3, 4, 5, 6]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "liste1 = list()\n", + "numbers = list(range(8))\n", + "\n", + "print(numbers)\n", + "print(liste1)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[0, 1, 2, 3, 4, 5, 6, 7]\n[]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "numbers2 = list(range(2,15,3)) #range(start, stop, step)\n", + "print(numbers2)\n", + "numbers2.reverse()\n", + "print(numbers2)" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[2, 5, 8, 11, 14]\n[14, 11, 8, 5, 2]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "numbers" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 5, 6, 7]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "print(numbers[2:5])" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "[2, 3, 4]" + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "numbers[5:8] = [10,11,12]\n", + "numbers" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4, 10, 11, 12]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "12 in numbers" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "15 in numbers" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "[1,2,3] + [ 4,5]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[1, 2, 3, 4, 5]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "[1,2,3] * 3" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[1, 2, 3, 1, 2, 3, 1, 2, 3]" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "list1 = [[1,2], 3, [4,5,6]]\n", + "list1[1]" + ], + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 1, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# If/Else Statements\n", + "\n", + "if \"condition\":\n", + "\n", + "\n", + "> \"doing sth\"\n", + "\n", + "print()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "course = \"python\"\n", + "\n", + "s = input(\"Please enter a character: \")\n", + "\n", + "if s in course:\n", + " print(\"Exist!\")\n", + "else:\n", + " print(\"Don't exist...\")\n", + "" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Please enter a character: u\nDon't exist..." + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "course = \"python\"\n", + "\n", + "s = input(\"Please enter a character: \")\n", + "\n", + "if s not in course:\n", + " print(\"Don't exist...\")\n", + "else:\n", + " print(\"Exist!\")" + ], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": "Please enter a character: u\nDon't exist..." + } + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "dotnet_interactive": { + "language": "csharp" + } + }, + "source": [ + "" + ], + "outputs": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "file_extension": ".cs", + "mimetype": "text/x-csharp", + "name": "C#", + "pygments_lexer": "csharp", + "version": "8.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/exploring-python/part2.ipynb b/exploring-python/part2.ipynb new file mode 100644 index 00000000..dc54ea8c --- /dev/null +++ b/exploring-python/part2.ipynb @@ -0,0 +1,1107 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2BfTgNJxj4l_" + }, + "source": [ + "# Conditional Statements \n", + "\n", + "## If\n", + "\n", + "if \"condition\":\n", + "\n", + "\n", + "> \"do something\" \n", + "\n", + "\n", + "print()" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "LXqRwY8TkEt4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter a number: 5\n", + "Result: 5\n" + ] + } + ], + "source": [ + "num = int(input(\"Please enter a number: \"))\n", + "\n", + "if num < 0: \n", + " num *= -1 #num = num*-1\n", + "print(\"Result: \", num)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "kBKf25lKyDbS" + }, + "source": [ + "# If-Else\n", + "\n", + "if \"condition\":\n", + "\n", + "\n", + "> \"do something\" \n", + "\n", + "else:\n", + "\n", + "\n", + "\n", + "> \"do something another\" \n", + "\n", + "\n", + "\n", + "print()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "2sRlaG6I4h-Y" + }, + "source": [ + "# If-Elif-Else\n", + "\n", + "if \"condition\":\n", + "\n", + "\n", + "> \"do something\" \n", + "\n", + "elif \"condition-2\":\n", + "\n", + "\n", + "\n", + "> \"do something another\" \n", + "\n", + "elif \"condition-3\":\n", + "\n", + "\n", + "\n", + "> \"do something another\" \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "else:\n", + "\n", + "\n", + "\n", + "> \"do something different\" \n", + "\n", + "\n", + "\n", + "print()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "rLCMo9Kuxe4Y" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter your score: 3\n", + "Very bad, you should work hard..\n" + ] + } + ], + "source": [ + "score = int(input(\"Please enter your score: \"))\n", + "\n", + "if score <= 40:\n", + " print(\"Very bad, you should work hard..\")\n", + "elif score <= 60:\n", + " print(\"Nice but you should work more..\")\n", + "elif score <= 100:\n", + " print(\"Congratulation!\")\n", + "else:\n", + " print(\"Invalid score!!!\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "O0r1rOWX8-F6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x, 9\n" + ] + } + ], + "source": [ + "x = 8\n", + "\n", + "if x > 4:\n", + " x = x+1\n", + "elif x > 5:\n", + " x = x+2\n", + "elif x > 7:\n", + " x = x+3\n", + "\n", + "print (\"x, \", x)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "d_JbM3Yz-Mxq" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x, 11\n" + ] + } + ], + "source": [ + "x = 5\n", + "\n", + "if x > 4:\n", + " x = x+1\n", + "\n", + "if x > 5:\n", + " x = x+2\n", + "\n", + "if x > 7:\n", + " x = x+3\n", + "\n", + "print (\"x, \", x)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "**************ATM Giriş Paneli**************\n", + "Lütfen kullanıcı adınızı girinizOmer\n", + "Lütfen Parolanızı giriniz.Cengiz\n", + "Parolanız hatalı\n" + ] + } + ], + "source": [ + "print(\"**************ATM Giriş Paneli**************\")\n", + "\n", + "kullanici_adi = \"Omer\"\n", + "parola =\"hello\"\n", + "\n", + "kullanici_adi1 =input(\"Lütfen kullanıcı adınızı giriniz\")\n", + "\n", + "parola1= input(\"Lütfen Parolanızı giriniz.\")\n", + "\n", + "if (kullanici_adi != kullanici_adi1 and parola == parola1):\n", + " print(\"Kullanıcı adınız hatalı\")\n", + "elif (kullanici_adi==kullanici_adi1 and parola != parola1):\n", + " print(\"Parolanız hatalı\")\n", + "elif (kullanici_adi != kullanici_adi1 and parola!= parola1):\n", + " print(\"Kullanıcı adınız ve parolanız hatalıdır.\")\n", + "else:\n", + " print(\"Tebrikler, Başarıyla giriş yaptınız\")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "İlker and Eylül\n" + ] + } + ], + "source": [ + "x = 10\n", + "\n", + "if x > 5:\n", + " if x >7:\n", + " print(\"İlker and Eylül\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "gDwccPO2_c0R" + }, + "source": [ + "# Question\n", + "\n", + "At a particular company, employees’ salaries are raised progressively, calculated using the following formula:\n", + "\n", + "salary = salary + salary x (raise percentage) \n", + "\n", + "Raises are predefined as given below, according to the current salary of the worker. For instance, if the worker’s current salary is less than or equal to 1000 TL, then its salary is increased 15%.\n", + "\n", + "\n", + "Range | Percentage\n", + "--- | ---\n", + "0 < salary ≤ 1000 | 15%\n", + "1000 < salary ≤ 2000 |10%\n", + "2000 < salary ≤ 3000| 5%\n", + "3000 < salary | 2.5%\n", + "\n", + "\n", + "Write a program that asks the user to enter his/her salary. Then your program should calculate and print the raised salary of the user.\n", + "\n", + "Some example program runs:\n", + "\n", + "Please enter your salary: 1000\n", + "\n", + "Your raised salary is 1150.0.\n", + "\n", + "Please enter your salary: 2500\n", + "\n", + "Your raised salary is 2625.0." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Po9n8VAwAimY" + }, + "source": [ + "# Answer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "ECbPU-yVAgwR" + }, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "uLq_XcOJDv4_" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter your salary: -5\n", + "Invalid value\n" + ] + } + ], + "source": [ + "salary = float(input(\"Please enter your salary: \"))\n", + "\n", + "if salary < 0:\n", + " print(\"Invalid value\")\n", + "else:\n", + "\n", + " if 0 < salary <= 1000:\n", + " salary = salary + salary * 0.15\n", + " elif salary <= 2000:\n", + " salary = salary + salary * 0.1\n", + " elif salary <= 3000:\n", + " salary = salary + salary * 0.05\n", + " else:\n", + " salary = salary + salary * 0.025\n", + "\n", + " print(\"Your raised salary is\", salary)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "alFtTZs0FyXs" + }, + "source": [ + "# While Loop Structure\n", + "\n", + "Condition Intro\n", + "\n", + "while :\n", + "\n", + "\n", + "\n", + "> \"true statement\"\n", + "\n", + "> \"true statement\"\n", + "\n", + "> condition update\n", + "\n", + "\n", + "A logical condition is repeated as long as it has a logical true value. For ending the loop, that condition must become false. \n", + "\n", + "\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "t2hN1ADgUKdI" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Value:0\n", + "Value:1\n", + "Value:2\n", + "Value:3\n", + "Value:4\n", + "Value:5\n", + "Value:6\n", + "Value:7\n", + "Value:8\n" + ] + } + ], + "source": [ + "num = 0\n", + "\n", + "while num < 9:\n", + " print(\"Value:{}\".format(num))\n", + " num = num +1" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num2 = 0\n", + "\n", + "while num2 != 9:\n", + " print(\"Value:\", num2)\n", + " num2 +=2\n", + "\n", + "#infinite loop" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num3 = int(input(\"Please enter an integer between 1 and 10: \"))\n", + "\n", + "while num3 < 1 or num3 > 10: \n", + " print(\"Invalid value!!!!\")\n", + " sayi3 = int(input(\"Please enter an integer between 1 and 10: \"))\n", + "print(\"Congrats...\") " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "num3 = int(input(\"Please enter an integer between 1 and 10: \"))\n", + "\n", + "while num3 < 1 or num3 > 10: \n", + " print(\"Invalid value!!!!\")\n", + " num3 = int(input(\"Please enter an integer between 1 and 10: \"))\n", + " \n", + " \n", + "print(\"Congrats!!...\") " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Wxh9hTfQaTXB" + }, + "source": [ + "## Print items of a list " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "tOoDBo33Y9O0" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t = [1,2,3,4,5,6]\n", + "len(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 th item: 1\n", + "1 th item: 2\n", + "2 th item: 3\n", + "3 th item: 4\n", + "4 th item: 5\n", + "5 th item: 6\n" + ] + } + ], + "source": [ + "i = 0 #counter value\n", + "\n", + "while (i < len(t)):\n", + " #i+=1\n", + " print(i, \"th item: \", t[i])\n", + " i+=1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "pSN-AL8A62bc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter a value: Sefa\n", + "Enter a value: Berkcan\n", + "Enter a value: exit\n", + "Enter a value: Deniz\n", + "Enter a value: Burcu\n", + "Enter a value: Kaan\n", + "Enter a value: Osman\n", + "Enter a value: Exit\n" + ] + } + ], + "source": [ + "while True:\n", + " a = input(\"Enter a value: \")\n", + " if a == \"Exit\":\n", + " break" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HytO2C2ib-vf" + }, + "source": [ + "# For Loop Structure\n", + "\n", + "\n", + "for \"repeated value\" in \"list\":\n", + "\n", + "\n", + "\n", + "> \"true statement\"\n", + "\n", + "\n", + "\n", + "\n", + "It takes the items as in sequence and processes them in a loop.\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "BgahixcjcC_a", + "outputId": "eb57d5dd-ea82-4e64-dbfd-78f1975c3e6b" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "45\n", + "57\n" + ] + } + ], + "source": [ + "\"\"\"\n", + "a[0]\n", + "a[1]\n", + "a[2]\n", + "\"\"\"\n", + "\n", + "\n", + "a = [2,45,57]\n", + "\n", + "for i in a: \n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i = 5\n", + "i in range(5)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list1 = list(range(5))\n", + "list1" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['P', 'y', 't', 'h', 'o', 'n']" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list2 = list(\"Python\")\n", + "list2" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ZD6pp2A9cglb" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n" + ] + } + ], + "source": [ + "for i in range(5):\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "sSRS5oGOdr0t" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "P\n", + "y\n", + "t\n", + "h\n", + "o\n", + "n\n", + " \n", + "C\n", + "o\n", + "u\n", + "r\n", + "s\n", + "e\n" + ] + } + ], + "source": [ + "for i in \"Python Course\":\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "c8G-3iFNkrH4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Python\n", + "Course\n" + ] + } + ], + "source": [ + "for i in \"Python Course\".split():\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 106 + }, + "colab_type": "code", + "id": "6Pvl_Pps6fbR", + "outputId": "3e4efa0a-e2db-45bc-8678-0f023d135a8a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n" + ] + } + ], + "source": [ + "for i in range(10):\n", + " if i == 5: \n", + " break\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 177 + }, + "colab_type": "code", + "id": "vTRaCu7N6ife", + "outputId": "fed997ca-c6fc-4e8c-ba4d-9054a3bb9178" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0\n", + "1\n", + "2\n", + "3\n", + "4\n", + "6\n", + "7\n", + "8\n", + "9\n" + ] + } + ], + "source": [ + "for i in range(10):\n", + " if i == 5:\n", + " continue\n", + " print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "fZKEer8umXFk", + "outputId": "386a0f8c-b501-42f5-ed1a-e9eb8151d947" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 4, 9, 16, 25, 36, 49]\n" + ] + } + ], + "source": [ + "nums = list(range(8))\n", + "\n", + "squares = []\n", + "\n", + "for i in nums:\n", + " squares.append(i**2)\n", + "print(squares)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "fnfkGpJanbCF", + "outputId": "599faa82-fd86-4f1c-f20e-0a7f509b9f32" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 1, 2, 3, 4, 5, 6, 7]\n", + "[0, 1, 4, 9, 16, 25, 36, 49]\n" + ] + } + ], + "source": [ + "nums = list(range(8))\n", + "print(nums)\n", + "squares = [i**2 for i in nums]\n", + "print(squares)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "msKp56Y1ozOk", + "outputId": "b6e0e99f-1151-4d2e-f75e-1cd6b4313083" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0, 4, 16, 36]\n", + "[1, 27, 125, 343]\n" + ] + } + ], + "source": [ + "nums = list(range(8))\n", + "\n", + "even_squares = [i**2 for i in nums if i % 2 == 0]\n", + "\n", + "odd_squares = [i**3 for i in nums if i% 2 == 1]\n", + "\n", + "print(even_squares)\n", + "print(odd_squares)" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "BAIT9kSGrHTn", + "outputId": "e6b50121-df29-4196-d07d-b3c5de4df535" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "8\n", + "20\n", + "27\n", + "92\n", + "127\n", + "127\n" + ] + } + ], + "source": [ + "mylist = [3,5,12,7,65,35]\n", + "\n", + "sum1 = 0\n", + "\n", + "for i in mylist:\n", + " sum1 = sum1 + i #sum += i\n", + " print(sum1)\n", + " \n", + "print(sum1)\n", + " #print(sum1)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sNWHEuYTuGUk" + }, + "source": [ + "### Find the max item of a list" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "6MnAca4Ht13-", + "outputId": "5676296a-aa01-468a-9236-5cb866f0eb28" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "max1: 5\n", + "i: 5\n", + "max1: 12\n", + "i: 12\n", + "max1: 65\n", + "i: 65\n", + "65\n" + ] + } + ], + "source": [ + "mylist = [3,5,12,7,65,35]\n", + "print(mylist[0])\n", + "\n", + "max1 = mylist[0]\n", + "\n", + "for i in mylist:\n", + " if i > max1:\n", + " max1 = i\n", + " print(\"max1: \", max1)\n", + " print(\"i: \", i)\n", + "print(max1)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "RzvtIqRPwMjJ" + }, + "source": [ + "### Summation of list items" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(1, 4), (2, 5), (3, 6)]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list1 = [1,2,3]\n", + "list2 = [4,5,6]\n", + "\n", + "list(zip(list1,list2))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "SkyZxq07vZcv", + "outputId": "c20dc7f4-59e0-4e4a-9359-152d241ac4aa" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[5, 7, 9]\n" + ] + } + ], + "source": [ + "list1 = [1,2,3]\n", + "list2 = [4,5,6]\n", + "\n", + "list3 = [a + b for a,b in zip(list1,list2)]\n", + "\n", + "print(list3)" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Day_3.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exploring-python/part3.ipynb b/exploring-python/part3.ipynb new file mode 100644 index 00000000..984df254 --- /dev/null +++ b/exploring-python/part3.ipynb @@ -0,0 +1,2507 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "HHgvBhnB5_uo" + }, + "source": [ + "\n", + "## Question-1\n", + "\n", + "Write a program that inputs an integer value (stop_number) from the user and prints the sum of all numbers from 0 to stop_number. You can assume the user will enter a valid value." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "N32FAirH5-J2" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter a stop number: 9\n", + "0\n", + "1\n", + "3\n", + "6\n", + "10\n", + "15\n", + "21\n", + "28\n", + "36\n", + "36\n" + ] + } + ], + "source": [ + "stop_number = int(input(\"Please enter a stop number: \"))\n", + "\n", + "result = 0\n", + "for i in range(0, stop_number):\n", + " result = result + i\n", + " print(result)\n", + "print(result)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "G63Y7XEL6KmJ" + }, + "source": [ + "## Question-2\n", + "\n", + "Extend your program to also input the start_number from the user. In this case, your program will add all numbers from start_number to stop_number. You can assume that the user will enter two valid values." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "10xHuwEH6LeW" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter a start number: 3\n", + "Please enter a stop number: 9\n", + "33\n" + ] + } + ], + "source": [ + "start_number = int(input(\"Please enter a start number: \"))\n", + "stop_number = int(input(\"Please enter a stop number: \"))\n", + "\n", + "result = 0\n", + "for i in range(start_number, stop_number):\n", + " result += i\n", + " \n", + "print(result) " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "_Bu5hGFw6QOK" + }, + "source": [ + "## Question-3\n", + "\n", + "Extend your program to check if the start_number is an integer between 0 and 100. If so, your program will continue to ask for the second input and perform calculations; otherwise, it prints an error and stops execution." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "VofmbOeA6Tlg" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter a start number: 23\n", + "Please enter a stop number: 55\n", + "1232\n" + ] + } + ], + "source": [ + "start_number = int(input(\"Please enter a start number: \"))\n", + "\n", + "if 0 <= start_number <= 100:\n", + " stop_number = int(input(\"Please enter a stop number: \"))\n", + " \n", + " if start_number <= stop_number <= 100:\n", + " \n", + " result = 0\n", + " for i in range(start_number, stop_number):\n", + " result += i\n", + " print(result)\n", + " else:\n", + " print(\"Invalid stop number\")\n", + "\n", + " \n", + "else:\n", + " print(\"Invalid start number\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "9NqX9G3F8uZQ" + }, + "source": [ + "### Modules\n", + "\n", + "They are tools that contain some functions and attributes that enable us to perform some functions easily. It provides the opportunity to use these functions it hosts in different files and programs over and over again. Thanks to the modules, Python has become a much more useful and easy-to-implement.\n", + "\n", + "In order to use any module in Python, we first need to 'import' it. Importing means making functions and attributes within one module available from within another program.\n", + "\n", + "**import **" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "MDmE3VeY2BUv" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter you guess: 5\n", + "Please enter a greater number!!\n", + "Please enter you guess: 30\n", + "Please enter a smaller number!!\n", + "Please enter you guess: 23\n", + "Please enter a smaller number!!\n", + "Please enter you guess: 12\n", + "Please enter a smaller number!!\n", + "Please enter you guess: 7\n", + "Please enter a greater number!!\n", + "Looseer..The number was: 9\n" + ] + } + ], + "source": [ + "import random as rnd\n", + "\n", + "secret = rnd.randint(1,100)\n", + "\n", + "check = False\n", + "\n", + "#guess = int(input(\"Please enter you guess: \"))\n", + "\n", + "for x in range(5):\n", + " guess = int(input(\"Please enter you guess: \"))\n", + " if guess == secret:\n", + " print(\"Congrats!!\")\n", + " check = True\n", + " break\n", + " elif guess < secret:\n", + " print(\"Please enter a greater number!!\")\n", + " else: \n", + " print(\"Please enter a smaller number!!\")\n", + " \n", + "if not check:\n", + " print(\"Looseer..The number was: \", secret)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "IdVXxCBHJ07g" + }, + "source": [ + "# Dictionaries\n", + "\n", + "\n", + "\n", + "* A data type in Python.\n", + "* Dictionaries are indexed by keys and these keys can be a String and integer type.\n", + "* Shown as key:value pairs and keys are the unique values.\n", + "* {}\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{}\n" + ] + }, + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d = {}\n", + "\n", + "print(d)\n", + "type(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "n5qcMd-GLsKa", + "outputId": "b93ee552-50e7-49ba-cc11-8d09887643f1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'python': 1, 'course': 2}\n" + ] + } + ], + "source": [ + "d = {\"python\":1, \"course\":2}\n", + "print(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "EX9oMWnHL7fq", + "outputId": "011a543e-a1fa-4d88-d8e8-822e4a806955" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning', 'artificial': 'intelligence'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2 = {\"machine\":\"learning\", \"artificial\":\"intelligence\" }\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "eckt9hWHMKyB", + "outputId": "2574c92e-966b-4f7a-faf9-b6b782bda0b4" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'intelligence'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2[\"artificial\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning', 'artificial': 'intelligence', 'java': 'programming'}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2[\"java\"] = \"programming\"\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'programming'}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2[\"ruby\"] = \"programming\"\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2[\"ruby\"] = \"language\"\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'python': 1, 'course': 2}" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "EtB2gyEmMWjy", + "outputId": "f16e2223-550d-401d-b669-228d34ce8982" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d[\"course\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "t2flZAV2NIIq", + "outputId": "9ee61c7c-b81b-4965-d128-fdb44d16e691" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language',\n", + " 'deep': 'learning'}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2[\"deep\"] = \"learning\"\n", + "d2\n", + "#print(d2)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'python': 1, 'course': 2}" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "ntLDke2enyh6", + "outputId": "e64c7450-f5cb-4ef4-ac96-c32e702e799d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['python', 'course'])\n" + ] + } + ], + "source": [ + "print(d.keys())" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['machine', 'artificial', 'java', 'ruby', 'deep'])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "RRCll5K-oEW6", + "outputId": "ca0a5e9d-4b4c-4f91-fc2e-6581f76dc6f2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_values(['learning', 'intelligence', 'programming', 'language', 'learning'])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.values()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "YYzF_DyGoHWm", + "outputId": "efa04009-abdf-40e1-d177-cb046ff201b7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_items([('machine', 'learning'), ('artificial', 'intelligence'), ('java', 'programming'), ('ruby', 'language'), ('deep', 'learning')])" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.items()" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "rcKOifmfoap9", + "outputId": "fdea2f68-ed1b-45c2-ba42-54e7e56b2ae4" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "machine\n", + "artificial\n", + "java\n", + "ruby\n", + "deep\n" + ] + } + ], + "source": [ + "for k in d2.keys():\n", + " print(k)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "bhSGEUT5oqc3", + "outputId": "c72bb74e-5010-476f-a289-f63ff4e68572" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1\n", + "2\n" + ] + } + ], + "source": [ + "for v in d.values():\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "learning\n", + "intelligence\n", + "programming\n", + "language\n", + "learning\n" + ] + } + ], + "source": [ + "for v in d2.values():\n", + " print(v)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language',\n", + " 'deep': 'learning'}" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "j5Oyr1AFpC4f", + "outputId": "98ea8ef2-915c-4dd4-d0c9-d5987b97b12d", + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Key: machine Value: learning\n", + "Key: artificial Value: intelligence\n", + "Key: java Value: programming\n", + "Key: ruby Value: language\n", + "Key: deep Value: learning\n" + ] + } + ], + "source": [ + "for k,v in d2.items():\n", + " print(\"Key:\", k, \"Value:\", v)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "ffQvbfgepJVv", + "outputId": "12edae3a-2b66-4279-e6fc-10c4f9d005b1" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "course\n" + ] + } + ], + "source": [ + "for k,v in d.items():\n", + " if v == 2:\n", + " print(k)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "fmxKFTs4pqwP", + "outputId": "ed84dd19-da07-4772-bacf-be7d9f95e991" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'python': 1, 'course': 2}" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "iy6FAQxHpt6Q", + "outputId": "a59e0324-fb84-4c14-e723-2e535c09105c" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'python': 1, 'course': 2, 'a': [3, 4, 5]}" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d[\"a\"] = [3,4,5]\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "AINo_32Upzyv", + "outputId": "81ed10a8-59f8-4d29-afc5-f81281ae6541" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'course': 2, 'a': [3, 4, 5]}" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.pop(\"python\")\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'python'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0md\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"python\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0md\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyError\u001b[0m: 'python'" + ] + } + ], + "source": [ + "d.pop(\"python\")\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'course': 2, 'a': [3, 4, 5]}" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "U8QBwgp0sSJi", + "outputId": "4f9ed760-c159-42e8-8a03-79180334dd79" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "89k7tFi_sWJO", + "outputId": "ac845006-5d16-42f4-f51d-e974b74e4be8" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"a\" in d" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "XdyIf0L1sYRM", + "outputId": "bc09b449-a697-4c67-8ed4-e28ad9b6b118" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"aa\" in d" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "oJvHWYyouN9w", + "outputId": "c495cd2c-67ce-466d-82e4-7d47ec3a6fbf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language',\n", + " 'deep': 'learning'}" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "uAtvUx9Jsf0w", + "outputId": "d29e5cc0-99f0-4bb7-e5e3-4a625922c45b" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'programming'" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2.get(\"java\")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "GobxPk3fuWi2" + }, + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'd2' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0md2\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Global AI Hub\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mNameError\u001b[0m: name 'd2' is not defined" + ] + } + ], + "source": [ + "d2.get(\"Global AI Hub\")" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language',\n", + " 'deep': 'learning'}" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "nyH6npGYuhRD", + "outputId": "b5a8ef56-c1cb-449b-9903-c426bb8c9fc7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 69, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "del d2[\"deep\"]\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'Deep Learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 71, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2['machine'] = \"Deep Learning\"\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 73, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'Deep Learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 73, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2['machine'] = \"Deep Learning\"\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'Deep Learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 75, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2_copy = d2.copy()\n", + "d2_copy" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'Deep Learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language',\n", + " 'deep': 'AI'}" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2_copy['deep'] = 'AI'\n", + "d2_copy" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'machine': 'Deep Learning',\n", + " 'artificial': 'intelligence',\n", + " 'java': 'programming',\n", + " 'ruby': 'language'}" + ] + }, + "execution_count": 78, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "rED5dTIhvSO6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "human has 2 legs \n", + "human has 2 legs.\n", + "cat has 4 legs \n", + "cat has 4 legs.\n", + "spider has 8 legs \n", + "spider has 8 legs.\n" + ] + } + ], + "source": [ + "d4 = {\"human\":2,\n", + " \"cat\":4,\n", + " \"spider\":8\n", + " }\n", + "\n", + "for i in d4:\n", + " leg = d4[i]\n", + " print(\"%s has %d legs \" % (i,leg))\n", + " print(str(i) + \" has \" + str(leg) +\" legs.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "CGzBpPlgwUTX" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "human has 2 legs.\n", + "cat has 4 legs.\n", + "spider has 8 legs.\n" + ] + } + ], + "source": [ + "d4 = {\"human\":2, \"cat\":4, \"spider\":8}\n", + "\n", + "for i,leg in d4.items():\n", + " print(str(i) + \" has \" + str(leg) +\" legs.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "SZia6YVqwfNU" + }, + "outputs": [], + "source": [ + "districts = {\"İstanbul\":[\"Bostancı\", \"Beşiktaş\", \"Kadıköy\"], \n", + " \"Ankara\":[\"Çankaya\", \"Gölbaşı\", \"Kızılcahamam\"],\n", + " \"İzmir\":[\"Çeşme\",\"Bornova\",\"Foça\"]}" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "4HyiNDwcwfAD", + "outputId": "a86d855c-34d6-4fc9-8e7e-41e9a86886d5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['Bostancı', 'Beşiktaş', 'Kadıköy']" + ] + }, + "execution_count": 86, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "districts[\"İstanbul\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "CMpXSAUuxmmB", + "outputId": "38b5e335-106e-42b7-c858-ce434d89d35e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(districts)" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "yOyreuu_xqgL", + "outputId": "87123a0c-a302-4bd5-a654-8068fd82540d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "list" + ] + }, + "execution_count": 88, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(districts[\"Ankara\"])" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "jTxblvirxu9I", + "outputId": "d36d9562-0810-4db1-9518-22c5345cae09" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Ç'" + ] + }, + "execution_count": 96, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "districts[\"İzmir\"][0][0]" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "b2gxQlCvyMcq", + "outputId": "6aaa7b71-8b1c-4ea7-e638-5e4ea791648d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Foça'" + ] + }, + "execution_count": 97, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "districts[\"İzmir\"][2]" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "Take2YvbyQSd", + "outputId": "4a7d1fd9-e522-45a1-bfe0-677d77004955" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}\n" + ] + } + ], + "source": [ + "#creating a dictionary from a list\n", + "\n", + "\n", + "nums = list(range(9)) # [0,1,2,3,4,5,6,7,8]\n", + "\n", + "even_sqr = {x: x**2 for x in nums if x % 2 == 0}\n", + "print(even_sqr)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "Ak4uMk3pzHZI" + }, + "source": [ + "# Sets\n", + "\n", + "\n", + "* A set, unlike lists, is a collection of data in no particular order; items cannot be accessed by indexing.\n", + "* Just like mathematical sets, it cannot contain more than one of the same items.\n", + "\n", + "* An item can only be added once in sets. So a set cannot have two identical elements.\n", + "* We use the set() function to create an empty set.\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "QgZuDyx3yvn9", + "outputId": "5661fe2b-3797-4b21-f74f-a5d733a64ad0" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{5, 6, 8, 'abc', 'python'}" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s = {\"python\", 5,6,8,5,6,\"abc\", \"python\",\"python\",\"python\",\"python\",\"python\",\"python\",\"python\",\"python\",\"python\"}\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "KmzyF9b--0Ci", + "outputId": "0fd6f24f-f616-40e2-da1e-ea76843cbcd7" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "set" + ] + }, + "execution_count": 101, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "empty = set()\n", + "type(empty)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "8qLJrT9VAUvf", + "outputId": "49d3a738-03e5-45f9-a284-eab1cd844848" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 102, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "empty2 = {}\n", + "type(empty2)" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "cH4PCXOhAZpS", + "outputId": "4de26760-75fc-49bc-dae2-a1b72febd89d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'abc', 5, 6, 8, 'python'}\n" + ] + } + ], + "source": [ + "s2 = set([\"python\", 5,6,8,5,6,\"abc\", \"python\"])\n", + "print(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "TLu1Ec_bA__q" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'l', 'n', 'i', 'a', 'p', 'e'}\n" + ] + }, + { + "data": { + "text/plain": [ + "{'a', 'e', 'i', 'l', 'n', 'p'}" + ] + }, + "execution_count": 112, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ne = set(\"pineapple\")\n", + "print(ne)\n", + "ne" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 186 + }, + "colab_type": "code", + "id": "JEA3fgi7BXBR", + "outputId": "ffaeb6f0-240c-4dea-a179-4b98c7051dca" + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unhashable type: 'dict'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m#Bu hata neden alındı.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;34m\"a\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"b\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'a'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m5\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;36m6\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: unhashable type: 'dict'" + ] + } + ], + "source": [ + "#Bu hata neden alındı.\n", + "y = {\"a\",\"b\",{'a':[1,2,3]},5,6}\n", + "print(y) " + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "WNZzrXshBy-0", + "outputId": "7683a43d-ecba-44c9-bb94-c53a70bba02d" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{5, 6, 8, 'abc', 'python'}" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s2" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "k1IVnwKEB0Wn", + "outputId": "c7eefb52-3522-4954-f90a-b7cdc30e4ee2" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "6 in s2" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "GUtmrwfhB2mj", + "outputId": "d52e785c-6aa7-4397-ed56-a0599cdbe4f5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "9 in s2" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "lPvxuypLB4Pg", + "outputId": "f13d4e43-966b-4b31-8bdc-12093592e187" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 123, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "wCijI6-vCEj6", + "outputId": "b59118c9-6059-4002-d1aa-283b6761f5f4" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{5, 6, 8, 'abc', 'ai', 'python'}" + ] + }, + "execution_count": 124, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s2.add(\"ai\")\n", + "s2" + ] + }, + { + "cell_type": "code", + "execution_count": 126, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "tPq001PuCLO3", + "outputId": "82b1466c-46b1-45f9-adc7-6b87b13c6763" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'abc', 5, 6, 8, 'python', 'ai'}\n" + ] + }, + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 126, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s2.add(\"ai\")\n", + "print(s2)\n", + "len(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 127, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "EGZnvf9WCRYk", + "outputId": "2d503674-8139-4afc-bbbb-da3515931d25" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'abc', 5, 6, 8, 'python'}\n" + ] + } + ], + "source": [ + "s2.remove(\"ai\")\n", + "print(s2)" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "wtZoskbUDQMN", + "outputId": "effe7b2c-3db1-4a91-9e5e-99f0789e16cd" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}\n", + "{0.0, 1.0, 2.0, 1.7320508075688772, 1.4142135623730951, 2.23606797749979, 2.449489742783178, 2.6457513110645907, 2.8284271247461903, 3.0}\n" + ] + } + ], + "source": [ + "#karekök bulma\n", + "from math import sqrt\n", + "\n", + "#import math \n", + "\n", + "print({x for x in list(range(10))})\n", + "\n", + "print({sqrt(x) for x in list(range(10))})\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "sp_E8xAhG21y" + }, + "source": [ + "# Tuples\n", + "\n", + "\n", + "\n", + "* It is an ordered data structure, it has an index value like lists, it can contain all data types.\n", + "* Unlike lists, they have a structure that cannot be changed. If we have more than one unchangeable values, we can collect them in a bunch.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "8Rui2302H8jD", + "outputId": "c925805c-b8c6-48bd-ce59-62df117086be" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1, 2, 3, 4, 5)\n", + "\n" + ] + } + ], + "source": [ + "tupl = (1,2,3,4,5)\n", + "print(tupl)\n", + "print(type(tupl))" + ] + }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "wZffTxPsIqqI", + "outputId": "e043064f-a416-46bd-adcc-9f739ff992f9" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 132, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tuple2 = () \n", + "type(tuple2)" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "IrvB1HzGLYBZ", + "outputId": "dab4ddd5-3799-493f-c314-8f71b67320b8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n" + ] + } + ], + "source": [ + "print(tupl[3])" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "y_9FkBJORo5y", + "outputId": "ec7d4abf-777d-4363-c014-9b5ed5c69101" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 134, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tupl[-2]" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "ZPMFZi-qRs4a", + "outputId": "7b3703ec-141d-4ba4-9a4c-d48e3c9ce5d6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 2, 3, 4)" + ] + }, + "execution_count": 135, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tupl[:4]" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "TeT5RXH1R6Gv", + "outputId": "94499c40-f15e-4f5d-8c59-f68470a8ca10" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 136, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dm3 = (\"asli\", 5, 8, \"september\")\n", + "dm3.index(\"september\")" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "wRks9wXwSRhJ", + "outputId": "03b8bf14-973e-4413-c16d-60b29f14d26e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 137, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dm3.count(5)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 239 + }, + "colab_type": "code", + "id": "Bo_JC5jkSWMf", + "outputId": "c8777e9c-074f-42d5-9e72-bf7c154eb653" + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mdm4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\"apple\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"pear\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"strawberry\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mdm4\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"cherry\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdm4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "dm4 = (\"apple\",\"pear\",\"strawberry\")\n", + "\n", + "dm4[0] = \"cherry\"\n", + "\n", + "print(dm4)" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mdm4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\"apple\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"pear\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"strawberry\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mdm4\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"cherry\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdm4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "dm4 = (\"apple\",\"pear\",\"strawberry\")\n", + "\n", + "dm4[3] = \"cherry\"\n", + "\n", + "print(dm4)" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('apple', 'pear', 'strawberry')" + ] + }, + "execution_count": 143, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dm4" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "twLyvUivSoBr" + }, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'tuple' object has no attribute 'remove'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mdm4\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mremove\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"pear\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'remove'" + ] + } + ], + "source": [ + "dm4.remove(\"pear\")" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "vSdY0CMtTLrH", + "outputId": "46eabc10-590c-478e-9d08-10b78b3f1a5d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{(0, 1): 0, (1, 2): 1, (2, 3): 2, (3, 4): 3, (4, 5): 4, (5, 6): 5, (6, 7): 6, (7, 8): 7, (8, 9): 8, (9, 10): 9}\n" + ] + } + ], + "source": [ + "# creating a dictionary in which tuples are keys.\n", + "\n", + "a = {(x, x+1): x for x in range(10)}\n", + "print(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "hX8AvulwTm-D", + "outputId": "d25b0273-6de6-427c-8979-4a21b1c0309c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "s5 = (5,6)\n", + "\n", + "print(type(s5))" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "Cc0NzYWbT21n", + "outputId": "994340a4-9c84-4ec7-ccc5-deeab889f5ee" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[s5]" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "3XIfNKugUB1h", + "outputId": "88af65b6-2839-49f5-9326-ad97e1807fda" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 149, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[(3,4)]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Question" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [], + "source": [ + "vegetables = ['squash', 'pea', 'carrot', 'potato']\n", + "vegetables.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['carrot', 'pea', 'potato', 'squash']" + ] + }, + "execution_count": 152, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vegetables" + ] + }, + { + "cell_type": "code", + "execution_count": 153, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['carrot', 'pea', 'potato', 'squash']" + ] + }, + "execution_count": 153, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "vegetables" + ] + }, + { + "cell_type": "code", + "execution_count": 154, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['apple', 'apricot', 'banana', 'pineapple', 'watermelon']" + ] + }, + "execution_count": 154, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruit = ['watermelon','pineapple', 'apple', 'banana', 'apricot']\n", + "sorted(fruit)" + ] + }, + { + "cell_type": "code", + "execution_count": 155, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['watermelon', 'pineapple', 'apple', 'banana', 'apricot']" + ] + }, + "execution_count": 155, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fruit" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Day_4.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exploring-python/part4.ipynb b/exploring-python/part4.ipynb new file mode 100644 index 00000000..45cd3713 --- /dev/null +++ b/exploring-python/part4.ipynb @@ -0,0 +1,1402 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "6vddxASQcwOx" + }, + "source": [ + "# Functions\n", + "\n", + "Functions are blocks of code that can be used over and over again to perform a specific action.\n", + "\n", + "As we know, in Python, there are print (), len () etc. Many available functions are defined.\n", + "\n", + "We can use it in our own code by providing access to functions defined in libraries, modules and packages. These are called predefined functions, embedded functions (built-in) or library functions. We can use ready-made functions as well as create our own functions. (User-defined)\n", + "\n", + "\n", + "Functions prevent code repetition and our code stays more modular and organized.\n", + "\n", + "\n", + "*****\n", + "\n", + "def \"function_name\"(parameter1,parameter2,..):\n", + "\n", + "\n", + "> \"Do something\"\n", + "\n", + " return \"return something\" (depends on functionality) \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "xmv4r_jCboXC" + }, + "outputs": [], + "source": [ + "def hello():\n", + " print(\"Hello Everyone!!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "9WyymUQqgSBQ" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Everyone!!\n" + ] + } + ], + "source": [ + "hello() #calling the func #the functions don't have any parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "0mNT-X0DoP7y" + }, + "outputs": [], + "source": [ + "def hello(name):\n", + " print(\"Hello \" + name)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "DxZKzFIuoW08" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Asli\n" + ] + } + ], + "source": [ + "hello(\"Asli\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def func_in_func(name1):\n", + " return hello(name1)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Ugurcan\n" + ] + } + ], + "source": [ + "func_in_func(\"Ugurcan\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 70 + }, + "colab_type": "code", + "id": "3AoI1i0igZC7", + "outputId": "96d5c07a-fb7e-4965-b107-d7e3419b4e3d" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!!\n", + "Google\n", + "Hello World!!\n", + "Hello World!!\n", + "Hello World!!\n", + "Hello World!!\n" + ] + } + ], + "source": [ + "def func1():\n", + " print(\"Hello World!!\")\n", + "\n", + "\n", + "func1()\n", + "print(\"Google\")\n", + "func1()\n", + "func1()\n", + "func1()\n", + "func1()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "iiSPTWt3hJHo" + }, + "outputs": [], + "source": [ + "def summ(a,b):\n", + " summ = a + b\n", + " print(summ)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "WNgM1TR4haRG" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "13.5\n" + ] + } + ], + "source": [ + "summ(6.0,7.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 52 + }, + "colab_type": "code", + "id": "MfnQx9FFhd5H", + "outputId": "ef0339f9-f195-40fb-cad8-a3c231726c26" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "17\n" + ] + } + ], + "source": [ + "t = summ(8,9)\n", + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "NiymGvuihkZ2" + }, + "outputs": [], + "source": [ + "def func(x,y):\n", + " summ = x + y\n", + " multip = x * y\n", + " return (summ,multip)\n", + "\n", + "#t = summ \n", + "#c = multip\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "SbtW4TLdh7Pp", + "outputId": "b2dd6bb7-6769-4d82-96ee-d622de955917" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "68 1035\n" + ] + } + ], + "source": [ + "t,c = func(23,45)\n", + "\n", + "print(t,c)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(68, 1035)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "func(23,45)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Nca_Rpf9iC-x" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sum of the values: 68, Multiplying of the values: 1035\n" + ] + } + ], + "source": [ + "print(\"Sum of the values: \" + str(t) + \", Multiplying of the values: \" + str(c))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "5IS0ARTJiPY1" + }, + "outputs": [], + "source": [ + "#Let's write a function that it will square the entered number, but will be terminated when you enter the number 5 and give us an error message.\n", + "\n", + "\n", + "def sqr(x):\n", + " if x == 5:\n", + " return (\"Terminated because you entered 5\")\n", + "\n", + " result = x **2\n", + " return (result)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "w0Am5qkekKNH", + "outputId": "3a1be730-2c76-47b4-a44f-87f746392359" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sqr(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "-A1MrkLDkMju" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Terminated because you entered 5'" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sqr(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "gsu2kbuJnKmx" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Terminated because you entered 5\n" + ] + } + ], + "source": [ + "d = sqr(5)\n", + "print(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ewtG6xuRkQsy" + }, + "outputs": [], + "source": [ + "# Let's write a function that tells you whether the entered number is positive, negative or zero.\n", + "\n", + "\n", + "\n", + "def func(x):\n", + " if x > 0:\n", + " return (\"Positive\")\n", + " elif x < 0:\n", + " return (\"Negative\")\n", + " else:\n", + " return (\"Zero\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "UQ3T_8UTlJ8u" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Negative\n", + "Positive\n", + "Positive\n", + "Zero\n", + "Negative\n", + "Negative\n" + ] + } + ], + "source": [ + "for i in [-2,5,6,0,-4,-7]:\n", + " print(func(i))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "_gih-r9xlZBr" + }, + "outputs": [], + "source": [ + "#factorial calculation\n", + "#0! = 1\n", + "#1!= 1\n", + "#2!= 2 * 1 =2\n", + "#6! = 6 * 5* 4 *3 * 2 *1 = 720\n", + "\n", + "\n", + "def factorial(num):\n", + " factorial = 1\n", + " if (num == 0 or num == 1):\n", + " print(\"Factorial: \", factorial)\n", + " else:\n", + " while (num >= 1):\n", + " factorial = factorial * num\n", + " num -= 1\n", + " print(\"Factorial: \", factorial)\n", + "\n", + "\n", + "# 1 * 5 = 5 = factorial\n", + "# 5 * 4 = 20\n", + "# 20 * 3 = 60\n", + "#60 * 2 = 120\n", + "# 120 * 1 = 120" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "T5ykiNt_yeck" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Factorial: 120\n" + ] + } + ], + "source": [ + "factorial(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "def faktoriyel(sayi):\n", + " faktoriyel = 1\n", + " for i in range(1,sayi+1):\n", + " faktoriyel *= i\n", + " return faktoriyel\n" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "120" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "faktoriyel(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "OQBMccOwyhl9" + }, + "outputs": [], + "source": [ + "#using for loop\n", + "\n", + "def factorial2(num2):\n", + " factorial2 = 1\n", + " if (num2 == 0 or num2 == 1):\n", + " print(\"Factorial: \", factorial2)\n", + " else:\n", + " for i in range(factorial2, num2+1): \n", + " factorial2 *= i \n", + " print(\"Factorial: \", factorial2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "3e4oPm5yy3Co" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Factorial: 720\n" + ] + } + ], + "source": [ + "factorial2(6)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "blFFawxml7wW" + }, + "outputs": [], + "source": [ + "def factorial3(nums):\n", + " factorial3 = 1\n", + " if (nums == 0 or nums == 1):\n", + " return (\"Factorial: \", factorial3)\n", + " else:\n", + " for i in range(factorial3, nums+1):\n", + " factorial3 *= i \n", + " return (factorial3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "HVWS7rb9mAIf" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "720\n" + ] + } + ], + "source": [ + "x = factorial3(6)\n", + "print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "720" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "HIUms-AlzQu9" + }, + "outputs": [], + "source": [ + "def hello2(name, capLetter = False):\n", + " if capLetter:\n", + " print(\"Hello \" + name.upper())\n", + " else:\n", + " print(\"Hello \" + name)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "DkHm9Vtw0O4M" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello asli\n" + ] + } + ], + "source": [ + "hello2(\"asli\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "dYyDrfTn0TOS" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello ASLI\n" + ] + } + ], + "source": [ + "hello2(\"Asli\", capLetter= True)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#lambda function\n", + "(lambda x: x + 1)(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Full name: Guido Van Rossum'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "full_name = lambda first, last: f'Full name: {first.title()} {last.title()}'\n", + "full_name('guido', 'van rossum')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### * args and ** kwargs\n", + "* args (Non Keyword Arguments)\n", + "* kwargs (Keyword Arguments)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "AzJDy8xD1Rbm" + }, + "outputs": [], + "source": [ + "def multp(*args):\n", + " result = 1\n", + " for i in args:\n", + " result *= i\n", + " print(result) \n", + "\n", + "# *args keeps the data as tuple type." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "crk-VWf912z_", + "outputId": "251acfa4-5dcc-44fc-ff37-89e125cab82e" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n", + "20\n", + "120\n", + "840\n", + "6720\n", + "60480\n" + ] + } + ], + "source": [ + "multp(4,5,6,7,8,9)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def multp1(*args):\n", + " result = 2\n", + " for i in args:\n", + " result *= i # result = result * i\n", + " print(result) \n", + "\n", + "\n", + "# *args keeps the data as tuple type." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[4, 5, 6, 7, 4, 5, 6, 7]\n" + ] + } + ], + "source": [ + "multp1([4,5,6,7])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "sp9bJPmu1-lF", + "outputId": "0aab548b-3a1f-4c19-ddfe-8287e43ee2f6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4\n", + "12\n", + "48\n", + "240\n" + ] + } + ], + "source": [ + "multp1(2,3,4,5)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4, 5, 6, 4, 5, 6, 4, 5, 6]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "[4,5,6] * 3" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'name': 'Murat', 'name2': 'Ömer', 'number': 12345, 'can': 'Emir', 'beril': 'yılmaz'}\n" + ] + } + ], + "source": [ + "def func_kwargs(**kwargs):\n", + " print(kwargs)\n", + " \n", + "func_kwargs(name = \"Murat\", name2 = \"Ömer\", number=12345, can='Emir', beril='yılmaz')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "M_gEN02J7Z6P" + }, + "outputs": [], + "source": [ + "def salaryCalc(salary):\n", + "\n", + " if salary < 0:\n", + " return(\"Invalid value\")\n", + " else:\n", + " if 0 < salary <= 1000:\n", + " salary = salary + salary * 0.15\n", + " elif salary <= 2000:\n", + " salary = salary + salary * 0.1\n", + " elif salary <= 3000:\n", + " salary = salary + salary * 0.05\n", + " else:\n", + " salary = salary + salary * 0.025\n", + "\n", + " return (\"New salary: \", salary)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Tp8kE5iH7-_x" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'Invalid value'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "salaryCalc(-5)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('New salary: ', 920.0)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "salaryCalc(800)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "I9BT87fl-Kgr" + }, + "outputs": [], + "source": [ + "\n", + "def salaryCalc2():\n", + "\n", + " salary = float(input(\"Please enter your current salary: \"))\n", + "\n", + " if salary < 0:\n", + " return(\"Invalid value\")\n", + " else:\n", + " if 0 < salary <= 1000:\n", + " salary = salary + salary * 0.15\n", + " elif salary <= 2000:\n", + " salary = salary + salary * 0.1\n", + " elif salary <= 3000:\n", + " salary = salary + salary * 0.05\n", + " else:\n", + " salary = salary + salary * 0.025\n", + "\n", + " return (\"New salary: \", salary)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "bF1ty6Cc8U_X" + }, + "outputs": [], + "source": [ + "new_salary = salaryCalc2() \n", + "print(new_salary)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "6sOO_4CbBygM" + }, + "source": [ + "### Let's write a function that returns a random word from a list.\n", + "\n", + "### Modules\n", + "\n", + "import numpy\n", + "\n", + "import tensorflow as tf\n", + "\n", + "import myModules\n", + "\n", + "myModules.myFunc()\n", + "\n", + "from myModules import *\n", + "\n", + "myFunc()" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "fyf2VtDZ3ALS" + }, + "outputs": [], + "source": [ + "words = [\"artificial\",\"intelligence\",\"machine\",\"learning\",\"python\",\"programming\"]\n", + "\n", + "\n", + "#from random import *\n", + "import random as rnd\n", + "\n", + "def randomWord(words):\n", + " index = rnd.randint(0, len(words)-1)\n", + " return words[index]\n", + " \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(words)" + ] + }, + { + "cell_type": "code", + "execution_count": 116, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "vdt230OzC_DR", + "outputId": "d86a979d-f371-44b4-9769-3b074686680c" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "python\n" + ] + } + ], + "source": [ + "word = randomWord(words)\n", + "print(word)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "MfFOsrA6AfmC" + }, + "source": [ + "### Global & Local Variables" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "7_UD1zAn_lxX", + "outputId": "943b58cd-497e-4cec-962f-37084451f85a" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n" + ] + } + ], + "source": [ + "x = 5\n", + "\n", + "print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "IisEjgqpAqCi" + }, + "outputs": [], + "source": [ + "def display():\n", + " x = 4\n", + " return(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "6dhEuYDjAylB", + "outputId": "3d88f156-bdd1-411b-9fcb-93715c02d292" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "display()" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "dPUxfagJA7Gn", + "outputId": "ba6bf99f-ba77-4498-b6f5-fe4c2328d920" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n" + ] + } + ], + "source": [ + "print(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "WJreHgrGllCV" + }, + "source": [ + "## Methods\n", + "\n", + "Functions are called by name, it can take parameters inside and optionally the resulting value can be used outside of the function.\n", + "\n", + "\n", + "Methods are also called by name, in many ways they are like functions, but calling is performed through an object such as a String or list.\n", + "\n", + "\n", + "object.methodName(parameter)" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "G56qfrjqDEDP" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter a name: kübra\n", + "KÜBRA\n" + ] + } + ], + "source": [ + "s = input(\"Please enter a name: \")\n", + "\n", + "\n", + "print(s.upper())" + ] + }, + { + "cell_type": "code", + "execution_count": 130, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 5, 6]" + ] + }, + "execution_count": 130, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#it does not return any value\n", + "list1 = [1,2,3,4,5,6]\n", + "\n", + "list1.remove(4)\n", + "list1" + ] + }, + { + "cell_type": "code", + "execution_count": 129, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3, 5, 6]" + ] + }, + "execution_count": 129, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list1" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 133, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list1.index(6)" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "7DzoBNeApbzZ", + "outputId": "1574c1d7-156b-4650-f3b6-8a2b22b98eed" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "5\n" + ] + } + ], + "source": [ + "#return the index of the element with the highest value in a given list.\n", + "\n", + "myList = [45,7,23,6,12,78]\n", + "\n", + "maxElement = max(myList)\n", + "\n", + "maxIndex = myList.index(maxElement)\n", + "\n", + "print(maxIndex)" + ] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Day_5.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exploring-python/part5.ipynb b/exploring-python/part5.ipynb new file mode 100644 index 00000000..1dcccba2 --- /dev/null +++ b/exploring-python/part5.ipynb @@ -0,0 +1,1417 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "cma2IKnL9e-M" + }, + "source": [ + "# Exceptions \n", + "\n", + "* Programmer Errors \n", + "* Program Bugs \n", + "* Exceptions\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 132 + }, + "colab_type": "code", + "id": "1YGSrszE9cch", + "outputId": "30e93b4a-a466-4cd9-a46d-1698dece3e55" + }, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "Missing parentheses in call to 'print'. Did you mean print(\"Hello World!\")? (, line 3)", + "output_type": "error", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m3\u001b[0m\n\u001b[1;33m print \"Hello World!\"\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m Missing parentheses in call to 'print'. Did you mean print(\"Hello World!\")?\n" + ] + } + ], + "source": [ + "# error example,SyntaxError.\n", + "\n", + "print \"Hello World!\" " + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "OMnUYXwD_msy" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter the first integer: 6\n", + "Enter the second integer: 7\n", + "6 + 7 = 67\n" + ] + } + ], + "source": [ + "#bug example.\n", + "\n", + "num1 = input(\"Enter the first integer: \")\n", + "num2 = input(\"Enter the second integer: \")\n", + "\n", + "print(num1, \"+\", num2, \"=\", num1 + num2)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "n0Ux_gF9CthH" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 6\n", + "Second integer: 7.4\n" + ] + }, + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: '7.4'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mnum3\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"First integer: \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0mnum4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Second integer: \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"/\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"=\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum3\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mnum4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: '7.4'" + ] + } + ], + "source": [ + "#exception example, ValueError.\n", + "\n", + "num3 = int(input(\"First integer: \"))\n", + "num4 = int(input(\"Second integer: \"))\n", + "\n", + "print(num3, \"/\",num4, \"=\", num3/num4)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Second integer: 7.4\n" + ] + }, + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: '7.4'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mnum4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Second integer: \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mnum4\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: '7.4'" + ] + } + ], + "source": [ + "num4 = int(input(\"Second integer: \"))\n", + "num4" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(3.8)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "D9_dw3TqA0wc" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 7\n", + "Second integer: 0\n" + ] + }, + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mnum4\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Second integer: \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 7\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum3\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"/\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"=\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum3\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mnum4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: division by zero" + ] + } + ], + "source": [ + "# ZeroDivisionError.\n", + "\n", + "\n", + "num3 = int(input(\"First integer: \"))\n", + "num4 = int(input(\"Second integer: \"))\n", + "\n", + "print(num3, \"/\",num4, \"=\", num3/num4)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "bz2U4A64BnWJ" + }, + "source": [ + "## Exception Handling\n", + "\n", + "\n", + "try:\n", + "\n", + "\n", + "> the situations where we can get exceptions\n", + "\n", + "except \"Exception Name\":\n", + "\n", + "\n", + "> the operations in case of exceptions\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + }, + "colab_type": "code", + "id": "-2Dkw2H4BpCX", + "outputId": "f81b0a41-db10-4a9d-852e-00eaf498e0d4" + }, + "outputs": [ + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: 'Alan Turing'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"Alan Turing\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: 'Alan Turing'" + ] + } + ], + "source": [ + "x = \"Alan Turing\"\n", + "\n", + "int(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "rAhmuTE9B8cy" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Please enter an integer value!!!\n" + ] + } + ], + "source": [ + "try:\n", + " int(x)\n", + "\n", + "except ValueError:\n", + " print(\"Please enter an integer value!!!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "E4QMEl4YC5cR" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 4\n", + "Second integer: 0\n" + ] + }, + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[0mnum4_int\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum4\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum3_int\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"/\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mnum4_int\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"=\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum3_int\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mnum4_int\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: division by zero" + ] + } + ], + "source": [ + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except ValueError:\n", + " print(\"Please enter an integer value!!!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ttj6eITbCYik" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 4\n", + "Second integer: 0\n", + "Please enter the second input different than 0 value!!!\n", + "Enter a integer number3\n" + ] + }, + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except ZeroDivisionError:\n", + " print(\"Please enter the second input different than 0 value!!!\")\n", + " ebru = int(input(\"Enter a integer number\"))\n", + "ebru" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "qgTSl8xJFrnP" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 0\n", + "Second integer: 0\n", + "Please enter the second input different than 0 value!!!\n" + ] + } + ], + "source": [ + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except ValueError:\n", + " print(\"Please enter an integer value!!!\")\n", + "except ZeroDivisionError:\n", + " print(\"Please enter the second input different than 0 value!!!\")\n", + "except:\n", + " print(\"Unknown error...\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;36m3.4\u001b[0m\u001b[1;33m/\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "3.4/0" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "bGy694JBF4nv" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 2.5\n", + "Second integer: 3\n", + "Error!!!\n" + ] + } + ], + "source": [ + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except (ValueError, ZeroDivisionError):\n", + " print(\"Error!!!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: '3.5'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"3.5\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: '3.5'" + ] + } + ], + "source": [ + "int(\"3.5\")" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "tu1cCIfjJiFM" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 5\n", + "Second integer: 5.2\n", + "Error!!!\n", + "Error message: invalid literal for int() with base 10: '5.2'\n" + ] + } + ], + "source": [ + "#try/except/as\n", + "\n", + "\n", + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except ValueError as error:\n", + " print(\"Error!!!\")\n", + " print(\"Error message: \", error)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "g07-ysSCGQvw" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First number: (Press q for quit the program): 3\n", + "Second number: 0\n", + "Error!\n", + "Please try again!\n", + "First number: (Press q for quit the program): 3\n", + "Second number: 3.2\n", + "Error!\n", + "Please try again!\n", + "First number: (Press q for quit the program): 0\n", + "Second number: 2\n", + "0 / 2 = 0.0\n", + "First number: (Press q for quit the program): q\n" + ] + } + ], + "source": [ + "#exception handling in loop structure\n", + "\n", + "\n", + "while True:\n", + " num1 = input(\"First number: (Press q for quit the program): \")\n", + "\n", + " if num1 == \"q\":\n", + " break\n", + "\n", + " num2 = input(\"Second number: \")\n", + "\n", + " try:\n", + " num1_int = int(num1)\n", + " num2_int = int(num2)\n", + " print(num1_int, \"/\", num2_int, \"=\", num1_int / num2_int)\n", + " except (ValueError, ZeroDivisionError):\n", + " print(\"Error!\")\n", + " print(\"Please try again!\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "First integer: 5\n", + "Second integer: 0\n", + "Error!!!\n", + "Error message: division by zero\n" + ] + } + ], + "source": [ + "#try/except/as\n", + "\n", + "\n", + "num3 = input(\"First integer: \")\n", + "num4 = input(\"Second integer: \")\n", + "\n", + "try:\n", + " num3_int = int(num3)\n", + " num4_int = int(num4)\n", + "\n", + " print(num3_int, \"/\",num4_int, \"=\", num3_int/num4_int)\n", + "\n", + "except (ValueError, ZeroDivisionError) as error:\n", + " print(\"Error!!!\")\n", + " print(\"Error message: \", error)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "S7czCxD3KTKx" + }, + "outputs": [], + "source": [ + "\"\"\"\n", + "exception handling in functions\n", + "using raise command\n", + "\"\"\"\n", + "\n", + "\n", + "def reverse(s):\n", + "\n", + " if (type(s) != str):\n", + " raise ValueError(\"Please enter a String type.\")\n", + " else:\n", + " return s[::-1]\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "2t0fmpb7MOfp", + "outputId": "676c7296-d80c-4b98-8fc2-1851888d1699" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'nohtyp'" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "reverse(\"python\")" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Qp4QI6GhzBgC" + }, + "outputs": [ + { + "ename": "ValueError", + "evalue": "Please enter a String type.", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mreverse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m12\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32m\u001b[0m in \u001b[0;36mreverse\u001b[1;34m(s)\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 9\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0ms\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 10\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Please enter a String type.\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 11\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 12\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m-\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: Please enter a String type." + ] + } + ], + "source": [ + "reverse(12)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab_type": "text", + "id": "H6k8jXA_OKDH" + }, + "source": [ + "# Intro to Object Oriented Programming\n", + "\n", + "Every entity we see around us is an object.\n", + "Each object has its own attributes and a set of functions (methods) they perform.\n", + "\n", + "The concept we call class is also the data types that enable us to generate objects.\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "class Car():\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], + "source": [ + "def hello():\n", + " pass" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "RvIjixb-ONiw" + }, + "outputs": [], + "source": [ + "class Car():\n", + " colour = \"yellow\"\n", + " brand = \"xyz\"\n", + " door = 4\n", + " model = 1987\n" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 35 + }, + "colab_type": "code", + "id": "PHXc3gzoZVRK", + "outputId": "be0b6557-da92-46cc-8241-1bb3137466fb" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "<__main__.Car object at 0x000002797141FD88>\n" + ] + } + ], + "source": [ + "car1 = Car()\n", + "\n", + "print(car1)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "8Z38odyhZj2x" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1987\n", + "xyz\n", + "4\n", + "yellow\n" + ] + } + ], + "source": [ + "print(car1.model)\n", + "print(car1.brand)\n", + "print(car1.door)\n", + "print(car1.colour)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ASMwsKZQZ73S" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'yellow'" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "car2 = Car()\n", + "\n", + "car2.colour" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "gvURL79zaMSZ" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "1987" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#We can also call attributes over the class without creating an object.\n", + "\n", + "Car.model" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 36 + }, + "colab_type": "code", + "id": "D-bSYoMcaRbD", + "outputId": "2193f663-a22d-434c-9ff0-c2d7d39765bd" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'xyz'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Car.brand" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "ODInfukGbGLo" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['__class__',\n", + " '__delattr__',\n", + " '__dict__',\n", + " '__dir__',\n", + " '__doc__',\n", + " '__eq__',\n", + " '__format__',\n", + " '__ge__',\n", + " '__getattribute__',\n", + " '__gt__',\n", + " '__hash__',\n", + " '__init__',\n", + " '__init_subclass__',\n", + " '__le__',\n", + " '__lt__',\n", + " '__module__',\n", + " '__ne__',\n", + " '__new__',\n", + " '__reduce__',\n", + " '__reduce_ex__',\n", + " '__repr__',\n", + " '__setattr__',\n", + " '__sizeof__',\n", + " '__str__',\n", + " '__subclasshook__',\n", + " '__weakref__',\n", + " 'brand',\n", + " 'colour',\n", + " 'door',\n", + " 'model']" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dir(car1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "iB2P1I88aZTB" + }, + "source": [ + "### __init()__\n", + "\n", + "In order to create each object with different values at the beginning,\n", + "we need to send the values of the objects.\n", + "For this, we use a special method: __init () __\n", + "\n", + "The init () method is defined as a constructor function.\n", + "\n", + "It is the first function that is automatically called up while creating our objects.\n", + "\n", + "By defining this method specially, we can create our objects with different values.\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "VdPxg1DUbrRE" + }, + "outputs": [], + "source": [ + "class Car2():\n", + "\n", + " def __init__(self): \n", + " print(\"init function calling...\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "rukOVNMxc3_T" + }, + "source": [ + "\n", + "self= to access any variable or other methods in the defined class.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "BVfHG7DXcdGj", + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "init function calling...\n" + ] + } + ], + "source": [ + "car = Car2()" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "HSQQs2f0eZpr" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "red\n", + "xyz\n" + ] + } + ], + "source": [ + "class Car3():\n", + "\n", + " def __init__(self, colour, brand, door):\n", + " self.colour = colour\n", + " self.brand = brand\n", + " self.door = door\n", + "\n", + "\n", + "red_car = Car3(\"red\", \"abc\",2)\n", + "\n", + "yellow_car = Car3(\"yellow\", \"xyz\", 4)\n", + "\n", + "print(red_car.colour)\n", + "print(yellow_car.brand)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "Awm6VrLEObqE" + }, + "outputs": [ + { + "ename": "TypeError", + "evalue": "__init__() missing 3 required positional arguments: 'colour', 'brand', and 'door'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mblue_car\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCar3\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: __init__() missing 3 required positional arguments: 'colour', 'brand', and 'door'" + ] + } + ], + "source": [ + "blue_car = Car3()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "__init__() missing 1 required positional argument: 'door'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mblue_car\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mCar3\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"blue\"\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;34m\"xyz\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: __init__() missing 1 required positional argument: 'door'" + ] + } + ], + "source": [ + "blue_car = Car3(\"blue\",\"xyz\")" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "bnm\n", + "blue\n", + "10\n" + ] + } + ], + "source": [ + "blue_car = Car3(\"blue\",\"bnm\",10)\n", + "\n", + "print(blue_car.brand)\n", + "print(blue_car.colour)\n", + "print(blue_car.door)" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "YjSEGRYrfQ69" + }, + "outputs": [], + "source": [ + "class Person():\n", + " name = \"\"\n", + " age = 0\n", + "\n", + " def __init__(self, personName, personAge):\n", + " self.name = personName\n", + " self.age = personAge\n", + "\n", + "\n", + " def welcomePerson(self):\n", + " print(\"Hello \" + self.name)\n", + "\n", + " \n", + " def showAge(self):\n", + " print(self.age)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "GeZqS15XhmM7" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Asli\n" + ] + } + ], + "source": [ + "person1 = Person (\"Asli\", 28)\n", + "\n", + "person1.welcomePerson()" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": { + "colab": {}, + "colab_type": "code", + "id": "imIm2qrdjESE" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "28\n" + ] + } + ], + "source": [ + "person1.showAge()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Question" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "class Person3():\n", + " def __init__(self, name, age):\n", + " self.name = name\n", + " self.age = age\n", + " self.language = []\n", + " \n", + " def welcomePerson(self):\n", + " print(\"Hello\",self.name)\n", + " \n", + " def showAge(self):\n", + " print(self.age)\n", + " \n", + " def addLanguage(self,new_lang):\n", + " print(\"Adding new language\")\n", + " self.language.append(new_lang)\n", + " def showInfo(self):\n", + " print(\"{} is {} years old\".format(self.name,self.age))\n", + " print(\"He can speak:\")\n", + " for i in self.language:\n", + " print(i)\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 75, + "metadata": {}, + "outputs": [], + "source": [ + "Ferhat = Person3(\"Ferhat\",21) " + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "<__main__.Person3 at 0x27972501548>" + ] + }, + "execution_count": 77, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Ferhat" + ] + }, + { + "cell_type": "code", + "execution_count": 78, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding new language\n" + ] + } + ], + "source": [ + "Ferhat.addLanguage(\"Spanish\")" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "21\n" + ] + } + ], + "source": [ + "Ferhat.showAge()" + ] + }, + { + "cell_type": "code", + "execution_count": 81, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ferhat is 21 years old\n", + "He can speak:\n", + "Spanish\n" + ] + } + ], + "source": [ + "Ferhat.showInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": 82, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello Ferhat\n" + ] + } + ], + "source": [ + "Ferhat.welcomePerson()" + ] + }, + { + "cell_type": "code", + "execution_count": 83, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding new language\n" + ] + } + ], + "source": [ + "Ferhat.addLanguage(\"Spanish\")" + ] + }, + { + "cell_type": "code", + "execution_count": 84, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ferhat is 21 years old\n", + "He can speak:\n", + "Spanish\n", + "Spanish\n" + ] + } + ], + "source": [ + "Ferhat.showInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": 85, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adding new language\n" + ] + } + ], + "source": [ + "Ferhat.addLanguage(\"English\")" + ] + }, + { + "cell_type": "code", + "execution_count": 86, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Ferhat is 21 years old\n", + "He can speak:\n", + "Spanish\n", + "Spanish\n", + "English\n" + ] + } + ], + "source": [ + "Ferhat.showInfo()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "colab": { + "collapsed_sections": [], + "name": "Day_6.ipynb", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/exploring-python/right.html b/exploring-python/right.html new file mode 100644 index 00000000..2b6cb43d --- /dev/null +++ b/exploring-python/right.html @@ -0,0 +1,31 @@ + + + + + +C:/Users/bryan/Downloads/PYTHON-REPO/exploring-python + + + + + + + + +
Folders
<Go Back>
+
+ + + + + + +
FileFileFileFile
working-w...e.html part1.ipynb part3.ipynb part5.ipynb 
basics.ipynb part2.ipynb part4.ipynb working-w...ode.md 
Numpy.ipynb 
+ +

+Folders: 1
+Files: 9
+Size of all files: 699769 KB

+ + + \ No newline at end of file diff --git a/exploring-python/working-w-jupyter-vscode.html b/exploring-python/working-w-jupyter-vscode.html new file mode 100644 index 00000000..5ce61424 --- /dev/null +++ b/exploring-python/working-w-jupyter-vscode.html @@ -0,0 +1,234 @@ + + + + + + + working-w-jupyter-vscode + + + +

Working with Jupyter Notebooks in Visual Studio Code

+
+

Working with Jupyter Notebooks in Visual Studio Code

+
+

Jupyter (formerly IPython Notebook) is an open-source project that lets you easily combine Markdown text and executable Python source code on one canvas called a notebook. Visual Studio Code supports working with Jupyter Notebooks natively, as well as through Python code files. This topic covers the native support available for Jupyter Notebooks and demonstrates how to:

+
    +
  • Create, open, and save Jupyter Notebooks
  • +
  • Work with Jupyter code cells
  • +
  • View, inspect, and filter variables using the Variable explorer and Data viewer
  • +
  • Connect to a remote Jupyter server
  • +
  • Debug a Jupyter notebook
  • +
+

Setting up your environment#

+

To work with Jupyter notebooks, you must activate an Anaconda environment in VS Code, or another Python environment in which you’ve installed the Jupyter package. To select an environment, use the Python: Select Interpreter command from the Command Palette (Ctrl+Shift+P).

+

Once the appropriate environment is activated, you can create and open a Jupyter Notebook, connect to a remote Jupyter server for running code cells, and export a Jupyter Notebook as a Python file.

+
+

Note: By default, the Visual Studio Code Python extension will open a Jupyter Notebook (.ipynb) in the Notebook Editor. If you want to disable this behavior you can turn it off in settings. (Python > Data Science: Use Notebook Editor).

+
+

Create or open a Jupyter Notebook#

+

You can create a Jupyter Notebook by running the Jupyter: Create Blank New Jupyter Notebook command from the Command Palette (Ctrl+Shift+P) or by creating a new .ipynb file in your workspace. When you select the file, the Notebook Editor is launched allowing you to edit and run code cells.

+
+Blank Jupyter Notebook
Blank Jupyter Notebook
+
+

If you have an existing Jupyter Notebook, you can open it in the Notebook Editor by double-clicking on the file and opening with Visual Studio Code, through the Visual Studio Code, or using the Command Palette Jupyter: Open in Notebook Editor command.

+

Once you have a Notebook created, you can run a code cell using the green run icon above the cell and the output will appear directly below the code cell.

+
+Run Jupyter code cell
Run Jupyter code cell
+
+

Trusted Notebooks#

+

It’s possible for malicious source code to be contained in a Jupyter Notebook. With that in mind, to help protect you, any Notebook that’s not created with VS Code on your local machine (or explicitly set to Trusted by you) is considered Not Trusted. When a Notebook is Not Trusted, VS Code will not render Markdown cells or display the output of code cells within the Notebook. Instead, just the source of Markdown and code cells will be shown. The Notebook is essentially in read-only mode, with toolbars disabled and no ability to edit the file, until you set it as Trusted.

+
+

Note: Before setting a Notebook as Trusted, it is up to you to verify that the source code and Markdown are safe to run. VS Code does not perform any sanitizing of Markdown, it merely prevents it from being rendered until a Notebook is marked as Trusted to help protect you from malicious code.

+
+

When you first open a Notebook that’s Not Trusted, the following notification prompt is displayed.

+
+Trusted Notebook prompt
Trusted Notebook prompt
+
+

If you select Trust, the Notebook will be trusted going forward. If you opt not to trust the Notebook, then Not Trusted will be displayed in the toolbar and the Notebook will remain in a read-only state as described previously. If you select Trust all notebooks, you will be taken to settings, where you can specify that all Notebooks opened in VS Code be trusted. That means you will no longer be prompted to trust individual notebooks and harmful code could automatically run.

+
+Trust status in toolbar
Trust status in toolbar
+
+

You can relaunch the trust notification prompt after reviewing the Notebook by clicking on the Not Trusted status.

+

Save your Jupyter Notebook#

+

You can save your Jupyter Notebook using the keyboard combo Ctrl+S or through the save icon on the Notebook Editor toolbar.

+
+Notebook Editor save icon
Notebook Editor save icon
+
+
+

Note: At present, you must use the methods discussed above to save your Notebook. The File>Save menu does not save your Notebook, just the toolbar icon or keyboard command.

+
+

Export your Jupyter Notebook#

+

You can export a Jupyter Notebook as a Python file (.py), a PDF, or an HTML file. To export, just click the convert icon on the main toolbar. You’ll then be presented with file options from the Command Palette.

+
+Convert Jupyter Notebook to Python file
Convert Jupyter Notebook to Python file
+
+
+

Note: For PDF export, you must have TeX installed. If you don’t, you will be notified that you need to install it when you select the PDF option. Also, be aware that if you have SVG-only output in your Notebook, they will not be displayed in the PDF. To have SVG graphics in a PDF, either ensure that your output includes a non-SVG image format or else you can first export to HTML and then save as PDF using your browser.

+
+

Work with code cells in the Notebook Editor#

+

The Notebook Editor makes it easy to create, edit, and run code cells within your Jupyter Notebook.

+

Create a code cell#

+

By default, a blank Notebook will have an empty code cell for you to start with and an existing Notebook will place one at the bottom. Add your code to the empty code cell to get started.

+
msg = "Hello world"
+print(msg)
+
+Simple Jupyter code cell
Simple Jupyter code cell
+
+

Code cell modes#

+

While working with code cells a cell can be in three states, unselected, command mode, and edit mode. The current state of a cell is indicated by a vertical bar to the left of a code cell. When no bar is visible, the cell is unselected.

+
+Unselected Jupyter code cell
Unselected Jupyter code cell
+
+

An unselected cell isn’t editable, but you can hover over it to reveal additional cell specific toolbar options. These additional toolbar options appear directly below and to the left of the cell. You’ll also see when hovering over a cell that an empty vertical bar is present to the left.

+
+Simple Jupyter code cell being hovered over
Simple Jupyter code cell being hovered over
+
+

When a cell is selected, it can be in two different modes. It can be in command mode or in edit mode. When the cell is in command mode, it can be operated on and accept keyboard commands. When the cell is in edit mode, the cell’s contents (code or Markdown) can be modified.

+

When a cell is in command mode, the vertical bar to the left of the cell will be solid to indicate it’s selected.

+
+Code cell in command mode
Code cell in command mode
+
+

When you’re in edit mode, the vertical bar will have diagonal lines.

+
+Code cell in edit mode
Code cell in edit mode
+
+

To move from edit mode to command mode, press the ESC key. To move from command mode to edit mode, press the Enter key. You can also use the mouse to change the mode by clicking the vertical bar to the left of the cell or out of the code/Markdown region in the code cell.

+

Add additional code cells#

+

Code cells can be added to a Notebook using the main toolbar, a code cell’s vertical toolbar, the add code cell icon at the bottom of the Notebook, the add code cell icon at the top of the Notebook (visible with hover), and through keyboard commands.

+
+Add code cells
Add code cells
+
+

Using the plus icon in the main toolbar will add a new cell directly below the currently selected cell. Using the add cell icons at the top and bottom of the Jupyter Notebook, will add a code cell at the top and bottom respectively. And using the add icon in the code cell’s toolbar, will add a new code cell directly below it.

+

When a code cell is in command mode, the A key can be used to add a cell above and the B can be used to add a cell below the selected cell.

+

Select a code cell#

+

The selected code cell can be changed using the mouse, the up/down arrow keys on the keyboard, and the J (down) and K (up) keys. To use the keyboard, the cell must be in command mode.

+

Run a single code cell#

+

Once your code is added, you can run a cell using the green run arrow and the output will be displayed below the code cell.

+
+Run Jupyter code cell
Run Jupyter code cell
+
+

You can also use key combos to run a selected code cell. Ctrl+Enter runs the currently selected cell, Shift+Enter runs the currently selected cell and inserts a new cell immediately below (focus moves to new cell), and Alt+Enter runs the currently selected cell and inserts a new cell immediately below (focus remains on current cell). These keyboard combos can be used in both command and edit modes.

+

Run multiple code cells#

+

Running multiple code cells can be accomplished in a number of ways. You can use the double arrow in the toolbar of the Notebook Editor to run all cells within the Notebook or the run icons with directional arrows to run all cells above or below the current code cell.

+
+Run multiple code cells
Run multiple code cells
+
+

Run code by line#

+

To help diagnose issues with your Notebook code, run-by-line lets you step through the code of a cell in a line-by-line fashion. While stepping through code you can view the state of variables at each step via the variable explorer or hover your mouse over variables to see data tips.

+

To start a session, just click the run-by-line icon to the right of the run cell icon on the cell’s toolbar.

+
+Start run code cell by line
Start run code cell by line
+
+
+Run code cell by line
Run code cell by line
+
+

Once in a run-by-line session, you can run the currently highlighted line of code by pressing the icon again. To exit, just click the stop button next to the run-by-line icon in the cell.

+

Move a code cell#

+

Moving code cells up or down within a Notebook can be accomplished using the vertical arrows beside each code cell. Hover over the code cell and then click the up arrow to move the cell up and the down arrow to move the cell down.

+
+Move a code cell
Move a code cell
+
+

Delete a code cell#

+

Deleting a code cell can be accomplished by hovering over a code cell and using the delete icon in the code cell toolbar or through the keyboard combo dd when the selected code cell is in command mode.

+
+Delete a code cell
Delete a code cell
+
+

Undo your last change#

+

You can use the z key to undo your previous change, for example, if you’ve made an accidental edit you can undo it to the previous correct state, or if you’ve deleted a cell accidentally you can recover it.

+

Switch between code and Markdown#

+

The Notebook Editor allows you to easily change code cells between Markdown and code. By default a code cell is set for code, but just click the Markdown icon (or the code icon, if Markdown was previously set) in the code cell’s toolbar to change it.

+
+Markdown toolbar icon
Markdown toolbar icon
+
+

Once Markdown is set, you can enter Markdown formatted content to the code cell. Once you select another cell or toggle out of the content selection, the Markdown content is rendered in the Notebook Editor.

+
+Raw Markdown displayed in code cell
Raw Markdown displayed in code cell
+
+
+Rendered Markdown displayed in code cell
Rendered Markdown displayed in code cell
+
+

You can also use the keyboard to change the cell type. When a cell is selected and in command mode, the M key switches the cell type to Markdown and the Y key switches the cell type to code.

+

Clear output or restart/interrupt the kernel#

+

If you’d like to clear the code cell output or restart/interrupt the kernel, you can accomplish that using the main Notebook Editor toolbar.

+
+Additional Notebook Editor toolbar commands
Additional Notebook Editor toolbar commands
+
+

Enable/Disable line numbers#

+

You can enable or disable line numbering within a code cell using the L key.

+
+Line numbers enabled in code cell
Line numbers enabled in code cell
+
+

IntelliSense support in the Jupyter Notebook Editor#

+

The Python Jupyter Notebook Editor window has full IntelliSense – code completions, member lists, quick info for methods, and parameter hints. You can be just as productive typing in the Notebook Editor window as you are in the code editor.

+
+IntelliSense support
IntelliSense support
+
+

Variable explorer and data viewer#

+

Within the Python Notebook Editor, it’s possible to view, inspect, and filter the variables within your current Jupyter session. By clicking the Variables icon in the top toolbar after running code and cells, you’ll see a list of the current variables, which will automatically update as variables are used in code.

+
+Variable Explorer
Variable Explorer
+
+

For additional information about your variables, you can also double-click on a row or use the Show variable in data viewer button next to the variable to see a more detailed view of a variable in the Data Viewer. Once open, you can filter the values by searching over the rows.

+
+Data Viewer
Data Viewer
+
+
+

Note: Variable explorer is enabled by default, but can be turned off in settings (Python > Data Science: Show Jupyter Variable Explorer).

+
+

Plot viewer#

+

The Plot Viewer gives you the ability to work more deeply with your plots. In the viewer you can pan, zoom, and navigate plots in the current session. You can also export plots to PDF, SVG, and PNG formats.

+

Within the Notebook Editor window, double-click any plot to open it in the viewer, or select the plot viewer button on the upper left corner of the plot (visible on hover).

+
+Plot Viewer icon in the Notebook Editor
Plot Viewer icon in the Notebook Editor
+
+
+Plot Viewer with a selected plot
Plot Viewer with a selected plot
+
+
+

Note: There is support for rendering plots created with matplotlib and Altair.

+
+

Debug a Jupyter Notebook#

+

If you need additional debug support in order to diagnose an issue in your code cells, you can export it as a Python file. Once exported as a Python file, the Visual Studio Code debugger lets you step through your code, set breakpoints, examine state, and analyze problems. Using the debugger is a helpful way to find and correct issues in notebook code. To debug your Python file:

+
    +
  1. In VS Code, if you haven’t already, activate a Python environment in which Jupyter is installed.

  2. +
  3. From your Jupyter Notebook (.ipynb) select the convert button in the main toolbar.

    +
    +Convert Jupyter Notebook to Python file
    Convert Jupyter Notebook to Python file
    +
    +

    Once exported, you’ll have a .py file with your code that you can use for debugging.

  4. +
  5. After saving the .py file, to start the debugger, use one of the following options:

    +
      +
    • For the whole Notebook, open the Command Palette (Ctrl+Shift+P) and run the Python: Debug Current File in Python Interactive Window command.
    • +
    • For an individual cell, use the Debug Cell adornment that appears above the cell. The debugger specifically starts on the code in that cell. By default, Debug Cell just steps into user code. If you want to step into non-user code, you need to uncheck Data Science: Debug Just My Code in the Python extension settings (Ctrl+,).
    • +
  6. +
  7. To familiarize yourself with the general debugging features of VS Code, such as inspecting variables, setting breakpoints, and other activities, review VS Code debugging.

  8. +
  9. As you find issues, stop the debugger, correct your code, save the file, and start the debugger again.

  10. +
  11. When you’re satisfied that all your code is correct, use the Python Interactive window to export the Python file as a Jupyter Notebook (.ipynb).

  12. +
+

Connect to a remote Jupyter server#

+

You can offload intensive computation in a Jupyter Notebook to other computers by connecting to a remote Jupyter server. Once connected, code cells run on the remote server rather than the local computer.

+

To connect to a remote Jupyter server:

+
    +
  1. Run the Jupyter: Specify local or remote Jupyter server for connections command from the Command Palette (Ctrl+Shift+P).

  2. +
  3. When prompted to Pick how to connect to Jupyter, select Existing: Specify the URI of an existing server.

    +
    +Choose to connect to an existing server
    Choose to connect to an existing server
    +
  4. +
  5. When prompted to Enter the URI of a Jupyter server, provide the server’s URI (hostname) with the authentication token included with a ?token= URL parameter. (If you start the server in the VS Code terminal with an authentication token enabled, the URL with the token typically appears in the terminal output from where you can copy it.) Alternatively, you can specify a username and password after providing the URI.

    +
    +Prompt to supply a Jupyter server URI
    Prompt to supply a Jupyter server URI
    +
  6. +
+
+

Note: For added security, Microsoft recommends configuring your Jupyter server with security precautions such as SSL and token support. This helps ensure that requests sent to the Jupyter server are authenticated and connections to the remoter server are encrypted. For guidance about securing a notebook server, see the Jupyter docs.

+
+

08/15/2019

+

Source

+ + diff --git a/exploring-python/working-w-jupyter-vscode.md b/exploring-python/working-w-jupyter-vscode.md new file mode 100644 index 00000000..90e00512 --- /dev/null +++ b/exploring-python/working-w-jupyter-vscode.md @@ -0,0 +1,268 @@ +# Working with Jupyter Notebooks in Visual Studio Code + +> Working with Jupyter Notebooks in Visual Studio Code + +[Jupyter](https://jupyter-notebook.readthedocs.io/en/latest/) (formerly IPython Notebook) is an open-source project that lets you easily combine Markdown text and executable Python source code on one canvas called a **notebook**. Visual Studio Code supports working with Jupyter Notebooks natively, as well as through [Python code files](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/docs/python/jupyter-support-py). This topic covers the native support available for Jupyter Notebooks and demonstrates how to: + +* Create, open, and save Jupyter Notebooks +* Work with Jupyter code cells +* View, inspect, and filter variables using the Variable explorer and Data viewer +* Connect to a remote Jupyter server +* Debug a Jupyter notebook + +Setting up your environment[#](#_setting-up-your-environment) +------------------------------------------------------------- + +To work with Jupyter notebooks, you must activate an Anaconda environment in VS Code, or another Python environment in which you've installed the [Jupyter package](https://pypi.org/project/jupyter/). To select an environment, use the **Python: Select Interpreter** command from the Command Palette (Ctrl+Shift+P). + +Once the appropriate environment is activated, you can create and open a Jupyter Notebook, connect to a remote Jupyter server for running code cells, and export a Jupyter Notebook as a Python file. + +> **Note:** By default, the Visual Studio Code Python extension will open a Jupyter Notebook (.ipynb) in the Notebook Editor. If you want to disable this behavior you can turn it off in settings. (Python > Data Science: Use Notebook Editor). + +Create or open a Jupyter Notebook[#](#_create-or-open-a-jupyter-notebook) +------------------------------------------------------------------------- + +You can create a Jupyter Notebook by running the **Jupyter: Create Blank New Jupyter Notebook** command from the Command Palette (Ctrl+Shift+P) or by creating a new .ipynb file in your workspace. When you select the file, the Notebook Editor is launched allowing you to edit and run code cells. + +![Blank Jupyter Notebook](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-01.png) + +If you have an existing Jupyter Notebook, you can open it in the Notebook Editor by double-clicking on the file and opening with Visual Studio Code, through the Visual Studio Code, or using the Command Palette **Jupyter: Open in Notebook Editor** command. + +Once you have a Notebook created, you can run a code cell using the green run icon above the cell and the output will appear directly below the code cell. + +![Run Jupyter code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-03.png) + +Trusted Notebooks[#](#_trusted-notebooks) +----------------------------------------- + +It's possible for malicious source code to be contained in a Jupyter Notebook. With that in mind, to help protect you, any Notebook that's not created with VS Code on your local machine (or explicitly set to **Trusted** by you) is considered **Not Trusted**. When a Notebook is **Not Trusted**, VS Code will not render Markdown cells or display the output of code cells within the Notebook. Instead, just the source of Markdown and code cells will be shown. The Notebook is essentially in read-only mode, with toolbars disabled and no ability to edit the file, until you set it as **Trusted**. + +> **Note**: Before setting a Notebook as **Trusted**, it is up to you to verify that the source code and Markdown are safe to run. VS Code does not perform any sanitizing of Markdown, it merely prevents it from being rendered until a Notebook is marked as **Trusted** to help protect you from malicious code. + +When you first open a Notebook that's **Not Trusted**, the following notification prompt is displayed. + +![Trusted Notebook prompt](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-trusted-prompt.png) + +If you select **Trust**, the Notebook will be trusted going forward. If you opt not to trust the Notebook, then **Not Trusted** will be displayed in the toolbar and the Notebook will remain in a read-only state as described previously. If you select **Trust all notebooks**, you will be taken to settings, where you can specify that all Notebooks opened in VS Code be trusted. That means you will no longer be prompted to trust individual notebooks and harmful code could automatically run. + +![Trust status in toolbar](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-trust-status-bar.png) + +You can relaunch the trust notification prompt after reviewing the Notebook by clicking on the **Not Trusted** status. + +Save your Jupyter Notebook[#](#_save-your-jupyter-notebook) +----------------------------------------------------------- + +You can save your Jupyter Notebook using the keyboard combo Ctrl+S or through the save icon on the Notebook Editor toolbar. + +![Notebook Editor save icon](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-toolbar-save.png) + +> **Note:** At present, you must use the methods discussed above to save your Notebook. The **File**\>**Save** menu does not save your Notebook, just the toolbar icon or keyboard command. + +Export your Jupyter Notebook[#](#_export-your-jupyter-notebook) +--------------------------------------------------------------- + +You can export a Jupyter Notebook as a Python file (.py), a PDF, or an HTML file. To export, just click the convert icon on the main toolbar. You'll then be presented with file options from the Command Palette. + +![Convert Jupyter Notebook to Python file](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-toolbar-convert.png) + +> **Note:** For PDF export, you must have TeX installed. If you don't, you will be notified that you need to install it when you select the PDF option. Also, be aware that if you have SVG-only output in your Notebook, they will not be displayed in the PDF. To have SVG graphics in a PDF, either ensure that your output includes a non-SVG image format or else you can first export to HTML and then save as PDF using your browser. + +Work with code cells in the Notebook Editor[#](#_work-with-code-cells-in-the-notebook-editor) +--------------------------------------------------------------------------------------------- + +The Notebook Editor makes it easy to create, edit, and run code cells within your Jupyter Notebook. + +### Create a code cell[#](#_create-a-code-cell) + +By default, a blank Notebook will have an empty code cell for you to start with and an existing Notebook will place one at the bottom. Add your code to the empty code cell to get started. + + msg = "Hello world" + print(msg) + +![Simple Jupyter code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-02.png) + +### Code cell modes[#](#_code-cell-modes) + +While working with code cells a cell can be in three states, unselected, command mode, and edit mode. The current state of a cell is indicated by a vertical bar to the left of a code cell. When no bar is visible, the cell is unselected. + +![Unselected Jupyter code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-02.png) + +An unselected cell isn't editable, but you can hover over it to reveal additional cell specific toolbar options. These additional toolbar options appear directly below and to the left of the cell. You'll also see when hovering over a cell that an empty vertical bar is present to the left. + +![Simple Jupyter code cell being hovered over](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-02a.png) + +When a cell is selected, it can be in two different modes. It can be in command mode or in edit mode. When the cell is in command mode, it can be operated on and accept keyboard commands. When the cell is in edit mode, the cell's contents (code or Markdown) can be modified. + +When a cell is in command mode, the vertical bar to the left of the cell will be solid to indicate it's selected. + +![Code cell in command mode](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-09.png) + +When you're in edit mode, the vertical bar will have diagonal lines. + +![Code cell in edit mode](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-10.png) + +To move from edit mode to command mode, press the ESC key. To move from command mode to edit mode, press the Enter key. You can also use the mouse to **change the mode** by clicking the vertical bar to the left of the cell or out of the code/Markdown region in the code cell. + +### Add additional code cells[#](#_add-additional-code-cells) + +Code cells can be added to a Notebook using the main toolbar, a code cell's vertical toolbar, the add code cell icon at the bottom of the Notebook, the add code cell icon at the top of the Notebook (visible with hover), and through keyboard commands. + +![Add code cells](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-07.png) + +Using the plus icon in the main toolbar will add a new cell directly below the currently selected cell. Using the add cell icons at the top and bottom of the Jupyter Notebook, will add a code cell at the top and bottom respectively. And using the add icon in the code cell's toolbar, will add a new code cell directly below it. + +When a code cell is in command mode, the A key can be used to add a cell above and the B can be used to add a cell below the selected cell. + +### Select a code cell[#](#_select-a-code-cell) + +The selected code cell can be changed using the mouse, the up/down arrow keys on the keyboard, and the J (down) and K (up) keys. To use the keyboard, the cell must be in command mode. + +### Run a single code cell[#](#_run-a-single-code-cell) + +Once your code is added, you can run a cell using the green run arrow and the output will be displayed below the code cell. + +![Run Jupyter code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-03.png) + +You can also use key combos to run a selected code cell. Ctrl+Enter runs the currently selected cell, Shift+Enter runs the currently selected cell and inserts a new cell immediately below (focus moves to new cell), and Alt+Enter runs the currently selected cell and inserts a new cell immediately below (focus remains on current cell). These keyboard combos can be used in both command and edit modes. + +### Run multiple code cells[#](#_run-multiple-code-cells) + +Running multiple code cells can be accomplished in a number of ways. You can use the double arrow in the toolbar of the Notebook Editor to run all cells within the Notebook or the run icons with directional arrows to run all cells above or below the current code cell. + +![Run multiple code cells](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-04.png) + +### Run code by line[#](#_run-code-by-line) + +To help diagnose issues with your Notebook code, run-by-line lets you step through the code of a cell in a line-by-line fashion. While stepping through code you can view the state of variables at each step via the variable explorer or hover your mouse over variables to see data tips. + +To start a session, just click the run-by-line icon to the right of the run cell icon on the cell's toolbar. + +![Start run code cell by line](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-11a.png) + +![Run code cell by line](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-11.png) + +Once in a run-by-line session, you can run the currently highlighted line of code by pressing the icon again. To exit, just click the stop button next to the run-by-line icon in the cell. + +### Move a code cell[#](#_move-a-code-cell) + +Moving code cells up or down within a Notebook can be accomplished using the vertical arrows beside each code cell. Hover over the code cell and then click the up arrow to move the cell up and the down arrow to move the cell down. + +![Move a code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-05.png) + +### Delete a code cell[#](#_delete-a-code-cell) + +Deleting a code cell can be accomplished by hovering over a code cell and using the delete icon in the code cell toolbar or through the keyboard combo dd when the selected code cell is in command mode. + +![Delete a code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-06.png) + +### Undo your last change[#](#_undo-your-last-change) + +You can use the z key to undo your previous change, for example, if you've made an accidental edit you can undo it to the previous correct state, or if you've deleted a cell accidentally you can recover it. + +### Switch between code and Markdown[#](#_switch-between-code-and-markdown) + +The Notebook Editor allows you to easily change code cells between Markdown and code. By default a code cell is set for code, but just click the Markdown icon (or the code icon, if Markdown was previously set) in the code cell's toolbar to change it. + +![Markdown toolbar icon](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-code-cells-08.png) + +Once Markdown is set, you can enter Markdown formatted content to the code cell. Once you select another cell or toggle out of the content selection, the Markdown content is rendered in the Notebook Editor. + +![Raw Markdown displayed in code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-markdown-03.png) + +![Rendered Markdown displayed in code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-markdown-02.png) + +You can also use the keyboard to change the cell type. When a cell is selected and in command mode, the M key switches the cell type to Markdown and the Y key switches the cell type to code. + +### Clear output or restart/interrupt the kernel[#](#_clear-output-or-restartinterrupt-the-kernel) + +If you'd like to clear the code cell output or restart/interrupt the kernel, you can accomplish that using the main Notebook Editor toolbar. + +![Additional Notebook Editor toolbar commands](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-toolbar-additional-commands.png) + +### Enable/Disable line numbers[#](#_enabledisable-line-numbers) + +You can enable or disable line numbering within a code cell using the L key. + +![Line numbers enabled in code cell](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-line-number.png) + +IntelliSense support in the Jupyter Notebook Editor[#](#_intellisense-support-in-the-jupyter-notebook-editor) +------------------------------------------------------------------------------------------------------------- + +The Python Jupyter Notebook Editor window has full IntelliSense – code completions, member lists, quick info for methods, and parameter hints. You can be just as productive typing in the Notebook Editor window as you are in the code editor. + +![IntelliSense support](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-intellisense.png) + +Variable explorer and data viewer[#](#_variable-explorer-and-data-viewer) +------------------------------------------------------------------------- + +Within the Python Notebook Editor, it's possible to view, inspect, and filter the variables within your current Jupyter session. By clicking the **Variables** icon in the top toolbar after running code and cells, you'll see a list of the current variables, which will automatically update as variables are used in code. + +![Variable Explorer](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-variable-explorer.png) + +For additional information about your variables, you can also double-click on a row or use the **Show variable in data viewer** button next to the variable to see a more detailed view of a variable in the Data Viewer. Once open, you can filter the values by searching over the rows. + +![Data Viewer](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-data-viewer.png) + +> **Note:** Variable explorer is enabled by default, but can be turned off in settings (Python > Data Science: Show Jupyter Variable Explorer). + +Plot viewer[#](#_plot-viewer) +----------------------------- + +The Plot Viewer gives you the ability to work more deeply with your plots. In the viewer you can pan, zoom, and navigate plots in the current session. You can also export plots to PDF, SVG, and PNG formats. + +Within the Notebook Editor window, double-click any plot to open it in the viewer, or select the plot viewer button on the upper left corner of the plot (visible on hover). + +![Plot Viewer icon in the Notebook Editor](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-plot-viewer.png) + +![Plot Viewer with a selected plot](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-plot-viewer-02.png) + +> **Note:** There is support for rendering plots created with [matplotlib](https://matplotlib.org/) and [Altair](https://altair-viz.github.io/index.html). + +Debug a Jupyter Notebook[#](#_debug-a-jupyter-notebook) +------------------------------------------------------- + +If you need additional debug support in order to diagnose an issue in your code cells, you can export it as a Python file. Once exported as a Python file, the Visual Studio Code debugger lets you step through your code, set breakpoints, examine state, and analyze problems. Using the debugger is a helpful way to find and correct issues in notebook code. To debug your Python file: + +1. In VS Code, if you haven't already, activate a Python environment in which Jupyter is installed. + +2. From your Jupyter Notebook (.ipynb) select the convert button in the main toolbar. + + ![Convert Jupyter Notebook to Python file](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/native-toolbar-convert.png) + + Once exported, you'll have a .py file with your code that you can use for debugging. + +3. After saving the .py file, to start the debugger, use one of the following options: + + * For the whole Notebook, open the Command Palette (Ctrl+Shift+P) and run the **Python: Debug Current File in Python Interactive Window** command. + * For an individual cell, use the **Debug Cell** adornment that appears above the cell. The debugger specifically starts on the code in that cell. By default, **Debug Cell** just steps into user code. If you want to step into non-user code, you need to uncheck **Data Science: Debug Just My Code** in the Python extension settings (Ctrl+,). +4. To familiarize yourself with the general debugging features of VS Code, such as inspecting variables, setting breakpoints, and other activities, review [VS Code debugging](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/docs/editor/debugging). + +5. As you find issues, stop the debugger, correct your code, save the file, and start the debugger again. + +6. When you're satisfied that all your code is correct, use the Python Interactive window to export the Python file as a Jupyter Notebook (.ipynb). + + +Connect to a remote Jupyter server[#](#_connect-to-a-remote-jupyter-server) +--------------------------------------------------------------------------- + +You can offload intensive computation in a Jupyter Notebook to other computers by connecting to a remote Jupyter server. Once connected, code cells run on the remote server rather than the local computer. + +To connect to a remote Jupyter server: + +1. Run the **Jupyter: Specify local or remote Jupyter server for connections** command from the Command Palette (Ctrl+Shift+P). + +2. When prompted to **Pick how to connect to Jupyter**, select **Existing: Specify the URI of an existing server**. + + ![Choose to connect to an existing server](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/connect-to-existing.png) + +3. When prompted to **Enter the URI of a Jupyter server**, provide the server's URI (hostname) with the authentication token included with a `?token=` URL parameter. (If you start the server in the VS Code terminal with an authentication token enabled, the URL with the token typically appears in the terminal output from where you can copy it.) Alternatively, you can specify a username and password after providing the URI. + + ![Prompt to supply a Jupyter server URI](chrome-extension://cjedbglnccaioiolemnfhjncicchinao/assets/docs/python/jupyter/enter-url-auth-token.png) + + +> **Note:** For added security, Microsoft recommends configuring your Jupyter server with security precautions such as SSL and token support. This helps ensure that requests sent to the Jupyter server are authenticated and connections to the remoter server are encrypted. For guidance about securing a notebook server, see the [Jupyter docs](https://jupyter-notebook.readthedocs.io/en/stable/public_server.html#securing-a-notebook-server). + +08/15/2019 + + +[Source](https://code.visualstudio.com/docs/python/jupyter-support) diff --git a/left.html b/left.html index 75616e8a..d4535960 100644 --- a/left.html +++ b/left.html @@ -16,9 +16,12 @@ Folders <RETURN TO NAVIGATION> DOCS -learn-pyt...amples +exploring-python +learn-pyt...amples +node_modules prac-4-beginners python-mega-algo +Readings
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json new file mode 100644 index 00000000..370c0d6d --- /dev/null +++ b/node_modules/.package-lock.json @@ -0,0 +1,15 @@ +{ + "name": "PYTHON-REPO", + "lockfileVersion": 2, + "requires": true, + "packages": { + "node_modules/pandoc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pandoc/-/pandoc-0.2.0.tgz", + "integrity": "sha1-iXz0XRHnLvbF195menwwM2xdNhs=", + "engines": { + "node": ">= 0.4.0" + } + } + } +} diff --git a/node_modules/pandoc/.npmignore b/node_modules/pandoc/.npmignore new file mode 100644 index 00000000..6c7b69a0 --- /dev/null +++ b/node_modules/pandoc/.npmignore @@ -0,0 +1 @@ +.gitignore diff --git a/node_modules/pandoc/CHANGELOG b/node_modules/pandoc/CHANGELOG new file mode 100644 index 00000000..1394324e --- /dev/null +++ b/node_modules/pandoc/CHANGELOG @@ -0,0 +1,20 @@ +node-pandoc Changes +=================== + +Version 0.2.0 +------------- + +Breaking Changes + + * A callback is now required when calling convert(), which was previously not + the case. It makes no sense to run the function without a callback though. + +Fixed Bugs + + * Fixed an off by one error that oddly seems to only be showing up in Node + 0.6.x, but not 0.4.x. + +Version 0.1.0 +------------- + +Initial Release diff --git a/node_modules/pandoc/LICENSE b/node_modules/pandoc/LICENSE new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/node_modules/pandoc/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/pandoc/Makefile b/node_modules/pandoc/Makefile new file mode 100644 index 00000000..93b37598 --- /dev/null +++ b/node_modules/pandoc/Makefile @@ -0,0 +1,12 @@ +NODE := `which node nodejs` + +JSHINT_CHECK := ./build/jshint-check.js + +all: hint + +hint: + @@for file in `find . -name "*.js" | grep -v '^\./build/'`; do \ + echo "Hinting: $$file"; \ + ${NODE} ${JSHINT_CHECK} $$file; \ + echo "--------------------------"; \ + done diff --git a/node_modules/pandoc/NOTICE b/node_modules/pandoc/NOTICE new file mode 100644 index 00000000..fc18e952 --- /dev/null +++ b/node_modules/pandoc/NOTICE @@ -0,0 +1,2 @@ +node-pandoc +Copyright 2011 Sam Bisbee diff --git a/node_modules/pandoc/README b/node_modules/pandoc/README new file mode 100644 index 00000000..10276b95 --- /dev/null +++ b/node_modules/pandoc/README @@ -0,0 +1,59 @@ +node-pandoc +=========== + +Version 0.2.0 +https://github.com/sbisbee/node-pandoc + +A node module that wraps the Pandoc tool (http://johnmacfarlane.net/pandoc/), +allowing you to covert between markup types in node. + +Compatability +------------- + +node-pandoc is tested against Node v0.6.x and v0.7.x. + +Examples +-------- + +At a very basic level this library allows you to convert one markup type into +one or many. Supported markup types depends on how you installed Pandoc. + + * Convert markdown into HTML + +var pandoc = require('pandoc'); + +pandoc.convert('markdown', mdText, [ 'html' ], function(result, err) { + console.log(result.html); //outputs html + console.log(result.markdown); //outputs the original markdown +}); + + * Convert HTML into reStructredTest and plain text + +var pandoc = require('pandoc'); + +pandoc.convert('html', htmlText, [ 'rst', 'plain' ], function(result, err) { + console.log(result.rst); //outputs the reStructured Text + console.log(result.plain); //outputs the plain text + console.log(result.html); //outputs the HTML text +}); + + * Deal with errors (err is the exit status code from pandoc) + +var pandoc = require('pandoc'); + +pandoc.convert('invalid', moreInvalid, [], function(result, err) { + if(err) { + console.log('pandoc exited with status code ' + err); + } + else { + //do stuff + } +}); + +License +------- + +node-pandoc is released under the Apache License, version 2.0. See the file +named LICENSE for more information. + +Copyright information is in the NOTICE file. diff --git a/node_modules/pandoc/package.json b/node_modules/pandoc/package.json new file mode 100644 index 00000000..9caa83b9 --- /dev/null +++ b/node_modules/pandoc/package.json @@ -0,0 +1,17 @@ +{ + "author": "Sam Bisbee (http://www.sbisbee.com)", + "name": "pandoc", + "description": "A wrapper around the pandoc tool.", + "version": "0.2.0", + "homepage": "https://github.com/sbisbee/node-pandoc", + "repository": { + "type": "git", + "url": "git://github.com/sbisbee/node-pandoc.git" + }, + "main": "pandoc", + "engines": { + "node": ">= 0.4.0" + }, + "dependencies": {}, + "devDependencies": {} +} diff --git a/node_modules/pandoc/pandoc.js b/node_modules/pandoc/pandoc.js new file mode 100644 index 00000000..5aa2b0cd --- /dev/null +++ b/node_modules/pandoc/pandoc.js @@ -0,0 +1,148 @@ +/* + * node-pandoc + * + * This is the main, and currently only, file. It wraps the `pandoc` command + * using node's child_process module. Since we still have to support node 0.4.x + * (latest stable) we have to use spawn instead of fork(). + */ + +var spawn = require('child_process').spawn; + +// The global command line args for pandocs. +var globalArgs = { + //what the user provided + provided: null, + + //whether to persist between convert() calls + persist: false, + + //resets back to defaults + reset: function() { + this.provided = null; + this.persist = false; + } +}; + +/* + * type is the input markup's type + * + * input is the input markup + * + * types is an array of markup types to convert to or a single type as a string + * + * callback will be passed an object mapping markup type to markup, unless + * there was an error in which case it gets passed (null, statusCode) + */ +exports.convert = function(type, input, types, callback) { + var res = {}; + var numResponses = 0; + var targetResponses; + + var pandoc; + var args; + + var i; + + if(!type || typeof type !== 'string') { + throw 'Invalid source markup type: must be a string.'; + } + + if(!input || typeof input !== 'string') { + throw 'Invalid markup type: must be a string.'; + } + + if(typeof types !== 'string' && !Array.isArray(types)) { + throw 'Invalid destination types: must be a string or an array of strings.'; + } + + if(types.length <= 0) { + throw 'No destination types provided (empty array).'; + } + + if(typeof callback !== 'function') { + if(callback) { + throw 'Invalid callback provided: must be a function.'; + } + else { + throw 'No callback provided: must be a function.'; + } + } + + //what we're going to send to the callback if there are no pandoc errors + res[type] = input; + + targetResponses = types.length; + + if(typeof types === 'string') { + types = [ types ]; + } + + for(i in types) { + if(types.hasOwnProperty(i)) { + if(typeof types[i] !== 'string') { + throw 'Invalid destination type provided: non-string value found in array.'; + } + + /* + * This if-block filters out the target markup type because we already set + * it on the res object. + */ + if(!res[types[i]]) { + args = globalArgs.provided || []; + args.push('-f', type, '-t', types[i]); + + pandoc = spawn('pandoc', args); + + //so that we have the target type in scope on('data') - love ya some asynch + pandoc.stdout.targetType = types[i]; + + pandoc.stdout.on('data', function(data) { + //data will be a binary stream if you don't cast it to a string + res[this.targetType] = data + ''; + }); + + pandoc.on('exit', function(code, signal) { + numResponses++; + + if(code !== 0) { + callback(null, code); + } + else if(numResponses === targetResponses) { + callback(res); + } + }); + + //pipe them the input + pandoc.stdin.write(input, 'utf8'); + pandoc.stdin.end(); + + if(!globalArgs.persist) { + globalArgs.reset(); + } + } + } + } +}; + +/* + * args is an array of command line arguments that should be passed to pandoc + * on the next call. If set to a non-array value, then default args will be + * used. The default behavior is that they will be thrown away before the next + * call. + * + * persist is a boolean that when set to true will persist the provided args + * for future calls. + * + * Returns this module so you can chain this funciton with convert(). + */ +exports.args = function(args, persist) { + if(Array.isArray(args)) { + globalArgs.provided = args; + globalArgs.persist = persist; + } + else { + globalArgs.reset(); + } + + return exports; +}; diff --git a/node_modules/pandoc/right.html b/node_modules/pandoc/right.html new file mode 100644 index 00000000..458773f7 --- /dev/null +++ b/node_modules/pandoc/right.html @@ -0,0 +1,30 @@ + + + + + +C:/Users/bryan/Downloads/PYTHON-REPO/node_modules/pandoc + + + + + + + + +
Folders
<Go Back>
+
+ + + + + +
FileFileFileFile
CHANGELOG Makefile README package.json 
LICENSE NOTICE pandoc.js 
+ +

+Folders: 1
+Files: 7
+Size of all files: 17734 KB

+ + + \ No newline at end of file diff --git a/node_modules/right.html b/node_modules/right.html new file mode 100644 index 00000000..572f7b2f --- /dev/null +++ b/node_modules/right.html @@ -0,0 +1,23 @@ + + + + + +C:/Users/bryan/Downloads/PYTHON-REPO/node_modules + + + + + + + + +
Folders
<Go Back> pandoc
+
+ +

+Folders: 2
+

+ + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..d3dd1807 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,27 @@ +{ + "name": "PYTHON-REPO", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "pandoc": "^0.2.0" + } + }, + "node_modules/pandoc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pandoc/-/pandoc-0.2.0.tgz", + "integrity": "sha1-iXz0XRHnLvbF195menwwM2xdNhs=", + "engines": { + "node": ">= 0.4.0" + } + } + }, + "dependencies": { + "pandoc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pandoc/-/pandoc-0.2.0.tgz", + "integrity": "sha1-iXz0XRHnLvbF195menwwM2xdNhs=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..89e34a89 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "pandoc": "^0.2.0" + } +} diff --git a/prac-4-beginners/practices/ch04_first_lines/readme.html b/prac-4-beginners/practices/ch04_first_lines/readme.html new file mode 100644 index 00000000..e922d408 --- /dev/null +++ b/prac-4-beginners/practices/ch04_first_lines/readme.html @@ -0,0 +1,119 @@ + + + + + + + readme + + + + +

Practice Exercises for first lines of code

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

REPL

+

REPL stands for Read-Eval-Print-Loop and is the interactive environment you get when you type python in the terminal / command prompt. Remember, on macOS and Linux, you start Python 3’s REPL by typing python3.

+

Variables and values

+

Variables are names that we use to refer to data that could change or is complex to write directly. Values are the data that is currently assigned to that variable. We used pythontutor.com to explore this.

+

Examples:

+ +

Using built-in libraries

+

Python comes with many included libraries (hundreds!). To use one of these libraries, such as sys, you must tell Python you want to load it. This is done with the import keyword.

+

Example:

+ +

Getting input from users

+

Getting input from users is done with the input function.

+

Example:

+ +

Converting data

+

Certain operations (like math and string concatenation) require the correct data types.

+

Data is converted to numerical types using the type name (int, float, etc). Here are a few examples:

+ +

Exercises

+

Now it’s your turn. Here are some ideas to practice.

+
    +
  1. Run the Python REPL and verify you have Python 3.6 or higher.
  2. +
  3. Create a variable which is a whole number, compute the square and cube of it (i.e. x^2 and x^3, although that is not the Python code needed).
  4. +
  5. Ask a user for their name and age. Write code to tell them how many years you are older than them (negative numbers for younger is fine at this point).
  6. +
  7. Use the built-in library datetime and the function datetime.datetime.now() to determine the current year and print that to REPL using an f-string.
  8. +
  9. Take one of these sets of code and visualize them with pythontutor.com
  10. +
+ + diff --git a/prac-4-beginners/practices/ch04_first_lines/right.html b/prac-4-beginners/practices/ch04_first_lines/right.html index 325b71fb..0dbebfb9 100644 --- a/prac-4-beginners/practices/ch04_first_lines/right.html +++ b/prac-4-beginners/practices/ch04_first_lines/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 2540 KB

+Files: 2
+Size of all files: 10719 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch05_interactive_code/readme.html b/prac-4-beginners/practices/ch05_interactive_code/readme.html new file mode 100644 index 00000000..500323fb --- /dev/null +++ b/prac-4-beginners/practices/ch05_interactive_code/readme.html @@ -0,0 +1,129 @@ + + + + + + + readme + + + + +

Practice exercises for interactive code

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

Running Python code

+

If you have a Python file, it can be executed inside PyCharm by simply right-clicking and choosing Run. Outside of PyCharm, you execute it like this:

+ +

Remember to use either python or python3 based on your system setup.

+

if / else statements

+

The essential lesson from this chapter is how code makes decisions to do one thing or another. The first building block are simple this or that type of processes. These are done with if statements.

+ +

We can also have code that has two or more branches with elif and else:

+ +

while loops

+

When you need to repeat an operation as long as some condition is met, the while loop is the thing you want.

+ +

Is a number even or odd?

+

This seems like a simple question to answer but requires a new operation. The modulo operator. This is basically the remainder of a division. For example, 19 / 5 is 3 as a whole number (int). But we know that there is a remainder of 4 for whole number math. In Python we express this as:

+ +

Then we can test whether a number is even if it is evenly divisible by 2 or has a remainder of 0:

+ +

Exercises

+

Now it’s your turn. Here are some ideas to practice.

+
    +
  1. Create a hello_world.py file and execute it with Python. This can be in PyCharm or in another editor and using the technique above. Seems trivial but will help you verify everything is working right there. Just have the program output “Hello world”
  2. +
  3. Write a program that requests a number from the user. Have the program print “Even” or “Odd” depending on whether they entered an even or odd number.
  4. +
  5. Extend the program above to repeatedly ask that question as long as the user enters a nonzero number. But if they enter 0, it should then stop asking and say goodbye.
  6. +
  7. Take one of these sets of code and visualize them with pythontutor.com
  8. +
+ + diff --git a/prac-4-beginners/practices/ch05_interactive_code/right.html b/prac-4-beginners/practices/ch05_interactive_code/right.html index 59f91214..69331ec2 100644 --- a/prac-4-beginners/practices/ch05_interactive_code/right.html +++ b/prac-4-beginners/practices/ch05_interactive_code/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 2852 KB

+Files: 2
+Size of all files: 12596 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch06-organizing-code-with-functions/readme.html b/prac-4-beginners/practices/ch06-organizing-code-with-functions/readme.html new file mode 100644 index 00000000..f71028c8 --- /dev/null +++ b/prac-4-beginners/practices/ch06-organizing-code-with-functions/readme.html @@ -0,0 +1,108 @@ + + + + + + + readme + + + + +

Practice exercises for organizing with functions

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

Function with parameters (input data)

+

When we have code that we want to reuse or isolate and treat as a single concept (black box), we define functions. Here is a basic function:

+ +

Function that generates data (return values)

+

Functions can also return values to be used later:

+ +

We can then use these functions together as follows:

+ +

A main method and running “the program”

+

As we saw, it’s a good convention to have an overall organizing function that is what the whole program does at the top of the file. I called this main, for example:

+ +

And you must remember to run this at the end of your program to actually make it execute. We added these two lines as the final of the source file:

+ +

Exercises

+

Now it’s your turn. Your practice exercise is to take the M&M guessing game we created back in chapter 5 (interactive code) and clean it up using functions. Make a copy of the file in this folder called guessinggame.py. That’s what we started with. There are probably 3-4 functions that you can create to help organize and isolate parts of this application. Use the core concepts above to help.

+ + diff --git a/prac-4-beginners/practices/ch06-organizing-code-with-functions/right.html b/prac-4-beginners/practices/ch06-organizing-code-with-functions/right.html index c756d0c7..3199595e 100644 --- a/prac-4-beginners/practices/ch06-organizing-code-with-functions/right.html +++ b/prac-4-beginners/practices/ch06-organizing-code-with-functions/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md guessinggame.py 
readme.html readme.md guessinggame.py 

Folders: 1
-Files: 2
-Size of all files: 2552 KB

+Files: 3
+Size of all files: 9782 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch07_data_structures/readme.html b/prac-4-beginners/practices/ch07_data_structures/readme.html new file mode 100644 index 00000000..83a85927 --- /dev/null +++ b/prac-4-beginners/practices/ch07_data_structures/readme.html @@ -0,0 +1,124 @@ + + + + + + + readme + + + + +

Practice exercises for data structures

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

Creating a static dictionary

+

You can create a dictionary a number of ways. How you do this depends on how much data is static and how much is dynamic as part of the program’s execution.

+ +

Creating a dynamic dictionary

+

If you have dynamic data, this requires something else to build them:

+ +

Reading values from a dictionary

+ +

Exercises

+

Now it’s your turn. Try this practice below.

+

The core idea in this chapter was about dictionaries and data structures in general. Create a simple program that creates a dictionary called d such that the following runs without error and prints what is expected:

+ + + diff --git a/prac-4-beginners/practices/ch07_data_structures/right.html b/prac-4-beginners/practices/ch07_data_structures/right.html index 3a348fb3..c5599ebd 100644 --- a/prac-4-beginners/practices/ch07_data_structures/right.html +++ b/prac-4-beginners/practices/ch07_data_structures/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 1982 KB

+Files: 2
+Size of all files: 10877 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch08_problem_solving/readme.html b/prac-4-beginners/practices/ch08_problem_solving/readme.html new file mode 100644 index 00000000..720ff6f3 --- /dev/null +++ b/prac-4-beginners/practices/ch08_problem_solving/readme.html @@ -0,0 +1,40 @@ + + + + + + + readme + + + +

Practice Exercises for problem solving

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

Michael’s problem solving techniques

+

Here are a few of the ideas I use to get traction while solving a problem

+
    +
  1. Divide and conquer.
  2. +
  3. Have I seen a similar problem before?
  4. +
  5. Visualize the data (pythontutor.com, debugger, print(), etc)
  6. +
  7. Run through the data structures (will a well known data structure help this problem?).
  8. +
  9. Is there a PyPI package that solves this? Also check awesome-python.
  10. +
  11. Remember this is part of the journey.
  12. +
  13. Just start, you can adjust as you go and learn more.
  14. +
+

Exercises

+

Now it’s your turn. For this round, you get to dive into a similar experience as we had building Tic Tac Toe in the videos.

+

+

You get to build a Connect 4 clone. Read more about the game on Wikipedia or try a few rounds over at this website.

+

It should be pretty similar to tic tac toe. But the way a player selects a play is just to choose the column and the state of the board determines which row the puck stops in. Also, you do not need an entire row, column, or diagonal to win, just 4 of a given kind in any of these.

+

Think about what you saw in the videos (#2, have I seen a similar solution), use the right data structure (#4, Run through the data structures), and as always, break the problem down to simple parts (#1, Divide and conquer).

+

Also, remember that writing this program is involved. Most likely, it won’t be super fast to solve (#6, this is part of the journey). Now, create a new blank project and start coding (#7, just start)!

+ + diff --git a/prac-4-beginners/practices/ch08_problem_solving/right.html b/prac-4-beginners/practices/ch08_problem_solving/right.html index de556eba..010397aa 100644 --- a/prac-4-beginners/practices/ch08_problem_solving/right.html +++ b/prac-4-beginners/practices/ch08_problem_solving/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 2
-Files: 1
-Size of all files: 2231 KB

+Files: 2
+Size of all files: 5533 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch09_working_with_files/readme.html b/prac-4-beginners/practices/ch09_working_with_files/readme.html new file mode 100644 index 00000000..d97240cc --- /dev/null +++ b/prac-4-beginners/practices/ch09_working_with_files/readme.html @@ -0,0 +1,116 @@ + + + + + + + readme + + + + +

Practice Exercises for file I/O

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

Determining the full path to a file

+

Remember that the file location when loading files like the_file.txt depend on the working directory, which your program probably doesn’t control. So we need to use the os module to work from known locations.

+ +

Opening a file for reading

+

To open a file we use, well, the open() function. But as we saw, we should do this within a with block to ensure it’s closed and flushed in a timely manner. Note the r passed to open for read.

+ +

Writing to a file

+

Writing to a file is similar to reading, it’s just about how you open it. Note the w for write and fout to tell us that it’s an output not input file stream.

+ +

Using json module with file streams

+

Given a file stream, json can read or write objects to/from the json file format.

+ +

Exercises

+

Now it’s your turn. In this practice, go back to the tic tac toe game we created back in the chapter on problem solving. Alternatively, if you made it through Connect 4, you can work with that one instead. Your job will be to:

+
    +
  • Add a leader board (feel free to use JSON like we did).
  • +
  • Add a running log file (test with tail -n 20 -f FILENAME on macOS and Linux, just open in PyCharm on Windows and it’ll change).
  • +
  • For extra credit, you can try to use LogBook to improve the logging (but it will require a few concepts we haven’t covered yet).
  • +
+ + diff --git a/prac-4-beginners/practices/ch09_working_with_files/right.html b/prac-4-beginners/practices/ch09_working_with_files/right.html index 5559cdd5..80987976 100644 --- a/prac-4-beginners/practices/ch09_working_with_files/right.html +++ b/prac-4-beginners/practices/ch09_working_with_files/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 2364 KB

+Files: 2
+Size of all files: 10343 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch10_external_libraries/readme.html b/prac-4-beginners/practices/ch10_external_libraries/readme.html new file mode 100644 index 00000000..e41a6bee --- /dev/null +++ b/prac-4-beginners/practices/ch10_external_libraries/readme.html @@ -0,0 +1,114 @@ + + + + + + + readme + + + + +

Practice Exercises for external packages

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

requirements.txt

+

When working with an application that uses external packages, you need to communicate what packages are required for it to run. We do this with a requiements.txt file, here is an example:

+
colorama
+prompt_toolkit
+

Once you have a virtual environment active, you can install all the dependencies with this command:

+
(env) C:\> pip install -r requirements.txt
+

Virtual environments

+

Virtual environments are key to having different versions of the same library coexisting on your computer. You create one as follows:

+

macOS / Linux

+
$ python3 –m venv venv
+$ . venv/bin/activate
+

Windows

+
C:\> python –m venv venv
+C:\> venv\scripts\activate
+

pip

+

Pip is the tool you use on the command line to install and view external packages. Here are some examples:

+ +

Exercises

+

Now it’s your turn. In this practice, go back to the tic tac toe game we created back in the chapter on problem solving. Alternatively, if you made it through Connect 4, you can work with that one instead. Your job will be to:

+
    +
  • Create a virtual environment.
  • +
  • Set it as the active python interpreter in PyCharm under settings > project > project interpreter.
  • +
  • Create a requirements.txt file with colorama as a dependency.
  • +
  • Install the requirements with pip.
  • +
  • Use colorama to add colored output to your game.
  • +
+ + diff --git a/prac-4-beginners/practices/ch10_external_libraries/right.html b/prac-4-beginners/practices/ch10_external_libraries/right.html index 21b7d2e1..3d9890af 100644 --- a/prac-4-beginners/practices/ch10_external_libraries/right.html +++ b/prac-4-beginners/practices/ch10_external_libraries/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 1899 KB

+Files: 2
+Size of all files: 8015 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/ch11-error-handling/readme.html b/prac-4-beginners/practices/ch11-error-handling/readme.html new file mode 100644 index 00000000..22af5a1c --- /dev/null +++ b/prac-4-beginners/practices/ch11-error-handling/readme.html @@ -0,0 +1,116 @@ + + + + + + + readme + + + + +

Practice Exercises for error handling

+

Overview

+

In this section, you’ll have a chance to practice the concepts you’ve learned in the videos. First, review the core concepts covered that you’ll need to keep in mind. Then go through the exercises below.

+

Remember, these are for your own benefit. Feel free to skip them if you don’t find a particular exercise valuable or you get stuck for too long.

+

Core concepts

+

try / except

+

When handling errors, we can check for bad values (e.g. None where a proper string was expected). But Python’s native error handling approach is exception-based: throwing and catching exceptions.

+

Below is the minimum code to catch an error in Python.

+ +

Multiple error types

+

The example above is good to catch errors. But it catches them all (well, almost all of them), and it treats them all the same.

+

Below is code needed to handle different errors as well as unforeseen errors.

+ +

Note: It is important that the most specific errors are listed first and the most general the last (Exception). Python selects the first (not best) match.

+

Exercises

+

Now it’s your turn. In this practice, go back to the tic tac toe game we created back in the chapter on problem solving. Alternatively, if you made it through Connect 4, you can work with that one instead. Your job will be to:

+
    +
  • Add error handling around the input processing in your program using try / except. Be as specific on the errors as possible. If you can determine the cause or type of error, give a specific message.
  • +
  • Think of all other ways your app could crash or run into trouble. Get it to crash, check the error type in the traceback, and add the appropriate error handling for this as well.
  • +
+ + diff --git a/prac-4-beginners/practices/ch11-error-handling/right.html b/prac-4-beginners/practices/ch11-error-handling/right.html index 70593420..2a08aaaf 100644 --- a/prac-4-beginners/practices/ch11-error-handling/right.html +++ b/prac-4-beginners/practices/ch11-error-handling/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 1
-Files: 1
-Size of all files: 2233 KB

+Files: 2
+Size of all files: 9644 KB

\ No newline at end of file diff --git a/prac-4-beginners/practices/readme.html b/prac-4-beginners/practices/readme.html new file mode 100644 index 00000000..dfe1a007 --- /dev/null +++ b/prac-4-beginners/practices/readme.html @@ -0,0 +1,28 @@ + + + + + + + readme + + + +

Practice Exercises

+ + + diff --git a/prac-4-beginners/practices/right.html b/prac-4-beginners/practices/right.html index 0b85ed47..590ffd52 100644 --- a/prac-4-beginners/practices/right.html +++ b/prac-4-beginners/practices/right.html @@ -19,13 +19,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 9
-Files: 1
-Size of all files: 552 KB

+Files: 2
+Size of all files: 1838 KB

\ No newline at end of file diff --git a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/right.html b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/right.html index 71265f66..50fa505f 100644 --- a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/right.html +++ b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/right.html @@ -17,14 +17,15 @@ - - + + +
FileFileFileFile
step_1.md step_3.md step_4.md step_5.png 
step_2.md 
step_1.html step_4.html step_2.md step_4.md 
step_2.html step_1.md step_3.md step_5.png 
step_3.html 

Folders: 1
-Files: 5
-Size of all files: 84290 KB

+Files: 9
+Size of all files: 92480 KB

\ No newline at end of file diff --git a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_1.html b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_1.html new file mode 100644 index 00000000..fcd50128 --- /dev/null +++ b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_1.html @@ -0,0 +1,99 @@ + + + + + + + step_1 + + + + +

Step 1: Run the Python REPL and verify you have Python 3.6 or higher.

+

On macOS and Linux

+ +

On Windows

+
# Ensure the right version of Python
+# Should be 3.6 or higher
+
+C:\project\> python -V
+Python 3.8.3 
+
+C:\project\> python
+Python 3.8.3 (tags/v3.8.3:6f8c832, May 13 2020, 22:37:02) [MSC v.1924 64 bit (AMD64)] on win32
+Type "help", "copyright", "credits" or "license" for more information.
+>>>
+ + diff --git a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_2.html b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_2.html new file mode 100644 index 00000000..437abec7 --- /dev/null +++ b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_2.html @@ -0,0 +1,31 @@ + + + + + + + step_2 + + + +

Step 2: Create a variable which is a whole number, compute the square and cube of it

+
>>> num = 4
+>>> sqr = num * num
+>>> sqr
+16
+>>> cube = num * num * num
+>>> cube
+64
+>>> # A better way to do this
+>>> num ** 2
+16
+>>> num ** 3
+64
+>>>  
+ + diff --git a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_3.html b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_3.html new file mode 100644 index 00000000..e2d7c7f3 --- /dev/null +++ b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_3.html @@ -0,0 +1,26 @@ + + + + + + + step_3 + + + +

Step 3: Ask a user for their name and age.

+

Write code to tell them how many years you are older than them (negative numbers for younger is fine at this point instead of older / younger with only positive numbers).

+
>>> my_age = 47
+>>> response = input("How old are you? ")
+How old are you? 53
+>>> their_age = int(response)
+>>> diff = their_age - my_age
+>>> print(f'Great age! You are {diff} years older than me.')
+Great age! You are 6 years older than me. 
+ + diff --git a/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_4.html b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_4.html new file mode 100644 index 00000000..aac6fa5e --- /dev/null +++ b/prac-4-beginners/solutions/ch-04-writing-your-first-lines-of-code/step_4.html @@ -0,0 +1,27 @@ + + + + + + + step_4 + + + +

Step 4: Use the built-in library datetime

+

Use the built-in library datetime and the function datetime.datetime.now() to determine the current year and print that to REPL using an f-string.

+
>>> import datetime
+>>> right_now = datetime.datetime.now()
+>>> # What is this thing?
+>>> right_now
+datetime.datetime(2020, 7, 10, 14, 41, 33, 790353)
+>>> print(f"What a crazy year {right_now.year} has been, eh?")
+What a crazy year 2020 has been, eh?
+>>> 
+ + diff --git a/prac-4-beginners/solutions/ch-05-interactive-code/right.html b/prac-4-beginners/solutions/ch-05-interactive-code/right.html index 5ad12a05..86bd9a47 100644 --- a/prac-4-beginners/solutions/ch-05-interactive-code/right.html +++ b/prac-4-beginners/solutions/ch-05-interactive-code/right.html @@ -17,14 +17,14 @@ - - + +
FileFileFileFile
step_1.md hello_world.py step_2_even_odd.py step_3_ev...lot.py 
step_4.png 
step_1.html step_4.png step_2_even_odd.py step_3_ev...lot.py 
step_1.md hello_world.py 

Folders: 1
-Files: 5
-Size of all files: 239285 KB

+Files: 6
+Size of all files: 240035 KB

\ No newline at end of file diff --git a/prac-4-beginners/solutions/ch-05-interactive-code/step_1.html b/prac-4-beginners/solutions/ch-05-interactive-code/step_1.html new file mode 100644 index 00000000..e7bb8aed --- /dev/null +++ b/prac-4-beginners/solutions/ch-05-interactive-code/step_1.html @@ -0,0 +1,19 @@ + + + + + + + step_1 + + + +

Step 1: Create a hello_world.py file and execute it with Python

+

See hello_world.py

+ + diff --git a/prac-4-beginners/solutions/ch-08-problem-solving/readme.html b/prac-4-beginners/solutions/ch-08-problem-solving/readme.html new file mode 100644 index 00000000..d608da05 --- /dev/null +++ b/prac-4-beginners/solutions/ch-08-problem-solving/readme.html @@ -0,0 +1,117 @@ + + + + + + + readme + + + + +

Solution for Connect4

+

This one is VERY similar to TIC-TAC-TOE. There are three fundamental changes, other than this, it’s the same code for both games.

+

Change 1: Board data structure.

+

We are using this data structure. Tic-Tac-Toe was 3x3. Connect4 is 7x6 (7 columns, 6 rows):

+ +

Change 2: You pick a column, drop the disk, it falls down

+

The second major change is how you pick where to play.

+

In Tic-Tac-Toe, it’s choose the square. In Connect 4, it’s choose the column, drop the disk it fall as far as it can. We rewrote choose_location() accordingly.

+

Change 3: Finding lists of 4 in the rows, cols, and diagonals

+

The final major change is finding wins. In Tic-Tac-Toe, we wrote a function called:

+ +

This function would turn rows, columns, and diagonals into just straight lists. Then they are super simple to check. Are all of them one of the same kind and not empty? For example, is a diagonal all X’s? Then X’s win.

+

It’s identical in connect 4. But finding these are a bit of a pain. You don’t have to have the whole row, or column, or diagonal the same to win. You just need 4 in a row of these.

+

So we wrote a function called find_sequences_of_four_cells_in_a_row(cells). It takes a series of items, say 7 items, then returns all consecutive possibilities of 4.

+

For example:

+ +

Then we can just return these out of get_winning_sequences() and it’ll see if any are winners. At that point, it’s all the same as Tic-Tac-Toe. If they are all one type, that type is the winner.

+

Finding the sequences is a bit more complex, but it’s the same idea. Find all possible diagonals, rows, and columns, use find_sequences_of_four_cells_in_a_row() to find the lists of 4 and check them.

+

That’s the game.

+

See connect4.py

+ + diff --git a/prac-4-beginners/solutions/ch-08-problem-solving/right.html b/prac-4-beginners/solutions/ch-08-problem-solving/right.html index 642027e5..e6d5330b 100644 --- a/prac-4-beginners/solutions/ch-08-problem-solving/right.html +++ b/prac-4-beginners/solutions/ch-08-problem-solving/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md connect4.py 
readme.html readme.md connect4.py 

Folders: 1
-Files: 2
-Size of all files: 10114 KB

+Files: 3
+Size of all files: 19181 KB

\ No newline at end of file diff --git a/prac-4-beginners/solutions/ch-11-error-handling/readme.html b/prac-4-beginners/solutions/ch-11-error-handling/readme.html new file mode 100644 index 00000000..40eb2b72 --- /dev/null +++ b/prac-4-beginners/solutions/ch-11-error-handling/readme.html @@ -0,0 +1,112 @@ + + + + + + + readme + + + + +

Solution for error handling in tic-tac-toe

+

The only part of this first pass on the game that could fail is choosing the location.

+

Did you notice that when it asks for a number, if you don’t enter anything it crashes hard?

+

How about if you state too much? It asks for row and you answer 2,3 (row and column)? Boom again.

+

That’s what we fixed here with try/except:

+ +

For a more advanced version, you could edit the tic-tac-toe from files and make sure we have permissions to save to the files and that they are in a correct format for json to read and so on.

+

See tictactoe_errors_handled.py

+ + diff --git a/prac-4-beginners/solutions/ch-11-error-handling/right.html b/prac-4-beginners/solutions/ch-11-error-handling/right.html index 20508342..f0dfaa4c 100644 --- a/prac-4-beginners/solutions/ch-11-error-handling/right.html +++ b/prac-4-beginners/solutions/ch-11-error-handling/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
readme.md tictactoe...led.py 
readme.html readme.md tictactoe...led.py 

Folders: 1
-Files: 2
-Size of all files: 4168 KB

+Files: 3
+Size of all files: 11641 KB

\ No newline at end of file diff --git a/prac-4-beginners/solutions/readme.html b/prac-4-beginners/solutions/readme.html new file mode 100644 index 00000000..476896b8 --- /dev/null +++ b/prac-4-beginners/solutions/readme.html @@ -0,0 +1,21 @@ + + + + + + + readme + + + +

Solutions: [Enabled]

+

We’ve decided to include the solutions to the practice exercises. Initially, the intention was to omit them. It can be frustrating. However, it’s working your way through that actually drives the learning. It feels good to see the solution, but to make it really click, you have to make it your own and work your way through it.

+

Ideally, this is a check my solution type of thing. You should now see the solutions by chapter above (under construction at the moment.)

+

Best of luck on the course, Michael!

+ + diff --git a/prac-4-beginners/solutions/right.html b/prac-4-beginners/solutions/right.html index bf19c6af..2456daee 100644 --- a/prac-4-beginners/solutions/right.html +++ b/prac-4-beginners/solutions/right.html @@ -19,13 +19,13 @@ - +
FileFileFileFile
readme.md 
readme.html readme.md 

Folders: 9
-Files: 1
-Size of all files: 535 KB

+Files: 2
+Size of all files: 1695 KB

\ No newline at end of file diff --git a/python-mega-algo/README.html b/python-mega-algo/README.html new file mode 100644 index 00000000..35efed0b --- /dev/null +++ b/python-mega-algo/README.html @@ -0,0 +1,1321 @@ + + + + + + + README + + + + +

Algorithms

+

Run

+ +

in this directory

+

Arithmetic Analysis

+ +

Backtracking

+ +

Bit Manipulation

+ +

Blockchain

+ +

Boolean Algebra

+ +

Cellular Automata

+ +

Ciphers

+ +

Compression

+ +

Computer Vision

+ +

Conversions

+ +

Data Structures

+ +

Digital Image Processing

+ +

Divide And Conquer

+ +

Dynamic Programming

+ +

Electronics

+ +

File Transfer

+ +

Fractals

+ +

Fuzzy Logic

+ +

Genetic Algorithm

+ +

Geodesy

+ +

Graphics

+ +

Graphs

+ +

Hashes

+ +

Knapsack

+ +

Linear Algebra

+ +

Machine Learning

+ +

Maths

+ +

Matrix

+ +

Networking Flow

+ +

Neural Network

+ +

Other

+ +

Physics

+ +

Project Euler

+ +

Quantum

+ +

Scheduling

+ +

Searches

+ +

Sorts

+ +

Strings

+ +

Web Programming

+ + + diff --git a/python-mega-algo/bit_manipulation/README.html b/python-mega-algo/bit_manipulation/README.html new file mode 100644 index 00000000..0bded7ef --- /dev/null +++ b/python-mega-algo/bit_manipulation/README.html @@ -0,0 +1,19 @@ + + + + + + + README + + + +

https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations https://docs.python.org/3/library/stdtypes.html#bitwise-operations-on-integer-types

+

https://wiki.python.org/moin/BitManipulation https://wiki.python.org/moin/BitwiseOperators https://www.tutorialspoint.com/python3/bitwise_operators_example.htm

+ + diff --git a/python-mega-algo/bit_manipulation/right.html b/python-mega-algo/bit_manipulation/right.html index 26abf48e..3ae8fa8f 100644 --- a/python-mega-algo/bit_manipulation/right.html +++ b/python-mega-algo/bit_manipulation/right.html @@ -17,15 +17,16 @@ - - - + + + +
FileFileFileFile
README.md binary_co...ros.py binary_tw...ent.py reverse_bits.py 
binary_an...tor.py binary_or...tor.py binary_xo...tor.py single_bi...ons.py 
binary_co...its.py binary_shifts.py count_num...its.py __init__.py 
README.html binary_co...ros.py binary_tw...ent.py reverse_bits.py 
README.md binary_or...tor.py binary_xo...tor.py single_bi...ons.py 
binary_an...tor.py binary_shifts.py count_num...its.py __init__.py 
binary_co...its.py 

Folders: 1
-Files: 12
-Size of all files: 17314 KB

+Files: 13
+Size of all files: 18296 KB

\ No newline at end of file diff --git a/python-mega-algo/cellular_automata/README.html b/python-mega-algo/cellular_automata/README.html new file mode 100644 index 00000000..b3752997 --- /dev/null +++ b/python-mega-algo/cellular_automata/README.html @@ -0,0 +1,22 @@ + + + + + + + README + + + +

Cellular Automata

+
    +
  • https://en.wikipedia.org/wiki/Cellular_automaton
  • +
  • https://mathworld.wolfram.com/ElementaryCellularAutomaton.html
  • +
+ + diff --git a/python-mega-algo/cellular_automata/right.html b/python-mega-algo/cellular_automata/right.html index d37e4a36..bfbede7a 100644 --- a/python-mega-algo/cellular_automata/right.html +++ b/python-mega-algo/cellular_automata/right.html @@ -17,14 +17,14 @@ - - + +
FileFileFileFile
README.md game_of_life.py one_dimensional.py __init__.py 
conways_g...ife.py 
README.html conways_g...ife.py one_dimensional.py __init__.py 
README.md game_of_life.py 

Folders: 1
-Files: 5
-Size of all files: 8698 KB

+Files: 6
+Size of all files: 9441 KB

\ No newline at end of file diff --git a/python-mega-algo/computer_vision/README.html b/python-mega-algo/computer_vision/README.html new file mode 100644 index 00000000..3a9019ce --- /dev/null +++ b/python-mega-algo/computer_vision/README.html @@ -0,0 +1,19 @@ + + + + + + + README + + + +

Computer Vision

+

Computer vision is a field of computer science that works on enabling computers to see, identify and process images in the same way that human vision does, and then provide appropriate output. It is like imparting human intelligence and instincts to a computer. Image processing and computer vision are a little different from each other. Image processing means applying some algorithms for transforming image from one form to the other like smoothing, contrasting, stretching, etc. While computer vision comes from modelling image processing using the techniques of machine learning, computer vision applies machine learning to recognize patterns for interpretation of images (much like the process of visual reasoning of human vision).

+ + diff --git a/python-mega-algo/computer_vision/right.html b/python-mega-algo/computer_vision/right.html index f528f37a..6d798fd9 100644 --- a/python-mega-algo/computer_vision/right.html +++ b/python-mega-algo/computer_vision/right.html @@ -17,13 +17,14 @@ - + +
FileFileFileFile
README.md harriscorner.py meanthreshold.py __init__.py 
README.html harriscorner.py meanthreshold.py __init__.py 
README.md 

Folders: 1
-Files: 4
-Size of all files: 3691 KB

+Files: 5
+Size of all files: 5034 KB

\ No newline at end of file diff --git a/python-mega-algo/knapsack/README.html b/python-mega-algo/knapsack/README.html new file mode 100644 index 00000000..f3f98b6f --- /dev/null +++ b/python-mega-algo/knapsack/README.html @@ -0,0 +1,33 @@ + + + + + + + README + + + +

A naive recursive implementation of 0-1 Knapsack Problem

+

This overview is taken from:

+
https://en.wikipedia.org/wiki/Knapsack_problem
+
+

Overview

+

The knapsack problem is a problem in combinatorial optimization: Given a set of items, each with a weight and a value, determine the number of each item to include in a collection so that the total weight is less than or equal to a given limit and the total value is as large as possible. It derives its name from the problem faced by someone who is constrained by a fixed-size knapsack and must fill it with the most valuable items. The problem often arises in resource allocation where the decision makers have to choose from a set of non-divisible projects or tasks under a fixed budget or time constraint, respectively.

+

The knapsack problem has been studied for more than a century, with early works dating as far back as 1897 The name “knapsack problem” dates back to the early works of mathematician Tobias Dantzig (1884–1956), and refers to the commonplace problem of packing the most valuable or useful items without overloading the luggage.

+
+

Documentation

+

This module uses docstrings to enable the use of Python’s in-built help(...) function. For instance, try help(Vector), help(unitBasisVector), and help(CLASSNAME.METHODNAME).

+
+

Usage

+

Import the module knapsack.py from the . directory into your project.

+
+

Tests

+

. contains Python unit tests which can be run with python3 -m unittest -v.

+ + diff --git a/python-mega-algo/knapsack/right.html b/python-mega-algo/knapsack/right.html index e1f792dc..3027a9fc 100644 --- a/python-mega-algo/knapsack/right.html +++ b/python-mega-algo/knapsack/right.html @@ -17,13 +17,14 @@ - + +
FileFileFileFile
README.md greedy_knapsack.py knapsack.py __init__.py 
README.html greedy_knapsack.py knapsack.py __init__.py 
README.md 

Folders: 2
-Files: 4
-Size of all files: 6655 KB

+Files: 5
+Size of all files: 9016 KB

\ No newline at end of file diff --git a/python-mega-algo/linear_algebra/README.html b/python-mega-algo/linear_algebra/README.html new file mode 100644 index 00000000..1e8fd72d --- /dev/null +++ b/python-mega-algo/linear_algebra/README.html @@ -0,0 +1,88 @@ + + + + + + + README + + + +

Linear algebra library for Python

+

This module contains classes and functions for doing linear algebra.

+
+

Overview

+

### class Vector

+
- This class represents a vector of arbitrary size and related operations.
+
+**Overview about the methods:**
+
+- constructor(components : list) : init the vector
+- set(components : list) : changes the vector components.
+- \_\_str\_\_() : toString method
+- component(i : int): gets the i-th component (start by 0)
+- \_\_len\_\_() : gets the size / length of the vector (number of components)
+- euclidLength() : returns the eulidean length of the vector.
+- operator + : vector addition
+- operator - : vector subtraction
+- operator * : scalar multiplication and dot product
+- copy() : copies this vector and returns it.
+- changeComponent(pos,value) : changes the specified component.
+
    +
  • function zeroVector(dimension) +
      +
    • returns a zero vector of ‘dimension’
    • +
  • +
  • function unitBasisVector(dimension,pos) +
      +
    • returns a unit basis vector with a One at index ‘pos’ (indexing at 0)
    • +
  • +
  • function axpy(scalar,vector1,vector2) +
      +
    • computes the axpy operation
    • +
  • +
  • function randomVector(N,a,b) +
      +
    • returns a random vector of size N, with random integer components between ‘a’ and ‘b’.
    • +
  • +
+

### class Matrix

+
- This class represents a matrix of arbitrary size and operations on it.
+
+**Overview about the methods:**
+
+-  \_\_str\_\_() : returns a string representation
+- operator * : implements the matrix vector multiplication
+               implements the matrix-scalar multiplication.
+- changeComponent(x,y,value) : changes the specified component.
+- component(x,y) : returns the specified component.
+- width() : returns the width of the matrix
+- height() : returns the height of the matrix
+- determinate() : returns the determinate of the matrix if it is square
+- operator + : implements the matrix-addition.
+- operator - _ implements the matrix-subtraction
+
    +
  • function squareZeroMatrix(N) +
      +
    • returns a square zero-matrix of dimension NxN
    • +
  • +
  • function randomMatrix(W,H,a,b) +
      +
    • returns a random matrix WxH with integer components between ‘a’ and ‘b’

    • +
  • +
+

Documentation

+

This module uses docstrings to enable the use of Python’s in-built help(...) function. For instance, try help(Vector), help(unitBasisVector), and help(CLASSNAME.METHODNAME).

+
+

Usage

+

Import the module lib.py from the src directory into your project. Alternatively, you can directly use the Python bytecode file lib.pyc.

+
+

Tests

+

src/tests.py contains Python unit tests which can be run with python3 -m unittest -v.

+ + diff --git a/python-mega-algo/linear_algebra/right.html b/python-mega-algo/linear_algebra/right.html index 8c787250..e5d87d49 100644 --- a/python-mega-algo/linear_algebra/right.html +++ b/python-mega-algo/linear_algebra/right.html @@ -17,13 +17,13 @@ - +
FileFileFileFile
README.md __init__.py 
README.html README.md __init__.py 

Folders: 2
-Files: 2
-Size of all files: 2654 KB

+Files: 3
+Size of all files: 6358 KB

\ No newline at end of file diff --git a/python-mega-algo/project_euler/README.html b/python-mega-algo/project_euler/README.html new file mode 100644 index 00000000..32ba214d --- /dev/null +++ b/python-mega-algo/project_euler/README.html @@ -0,0 +1,184 @@ + + + + + + + README + + + + +

Project Euler

+

Problems are taken from https://projecteuler.net/, the Project Euler. Problems are licensed under CC BY-NC-SA 4.0.

+

Project Euler is a series of challenging mathematical/computer programming problems that require more than just mathematical insights to solve. Project Euler is ideal for mathematicians who are learning to code.

+

The solutions will be checked by our automated testing on Travis CI with the help of this script. The efficiency of your code is also checked. You can view the top 10 slowest solutions on Travis CI logs (under slowest 10 durations) and open a pull request to improve those solutions.

+

Solution Guidelines

+

Welcome to TheAlgorithms/Python! Before reading the solution guidelines, make sure you read the whole Contributing Guidelines as it won’t be repeated in here. If you have any doubt on the guidelines, please feel free to state it clearly in an issue or ask the community in Gitter. You can use the template we have provided below as your starting point but be sure to read the Coding Style part first.

+

Coding Style

+
    +
  • Please maintain consistency in project directory and solution file names. Keep the following points in mind: +
      +
    • Create a new directory only for the problems which do not exist yet.
    • +
    • If you create a new directory, please create an empty __init__.py file inside it as well.
    • +
    • Please name the project directory as problem_<problem_number> where problem_number should be filled with 0s so as to occupy 3 digits. Example: problem_001, problem_002, problem_067, problem_145, and so on.
    • +
  • +
  • Please provide a link to the problem and other references, if used, in the module-level docstring.

  • +
  • All imports should come after the module-level docstring.

  • +
  • You can have as many helper functions as you want but there should be one main function called solution which should satisfy the conditions as stated below: +
      +
    • It should contain positional argument(s) whose default value is the question input. Example: Please take a look at Problem 1 where the question is to Find the sum of all the multiples of 3 or 5 below 1000. In this case the main solution function will be solution(limit: int = 1000).
    • +
    • When the solution function is called without any arguments like so: solution(), it should return the answer to the problem.
    • +
  • +
  • Every function, which includes all the helper functions, if any, and the main solution function, should have doctest in the function docstring along with a brief statement mentioning what the function is about. +
      +
    • There should not be a doctest for testing the answer as that is done by our Travis CI build using this script. Keeping in mind the above example of Problem 1:
    • +
    +
  • +
+

Solution Template

+

You can use the below template as your starting point but please read the Coding Style first to understand how the template works.

+

Please change the name of the helper functions accordingly, change the parameter names with a descriptive one, replace the content within [square brackets] (including the brackets) with the appropriate content.

+ + + diff --git a/python-mega-algo/project_euler/right.html b/python-mega-algo/project_euler/right.html index aa141623..f34c51d6 100644 --- a/python-mega-algo/project_euler/right.html +++ b/python-mega-algo/project_euler/right.html @@ -43,13 +43,13 @@ - +
FileFileFileFile
README.md __init__.py 
README.html README.md __init__.py 

Folders: 106
-Files: 2
-Size of all files: 5391 KB

+Files: 3
+Size of all files: 20388 KB

\ No newline at end of file diff --git a/python-mega-algo/quantum/README.html b/python-mega-algo/quantum/README.html new file mode 100644 index 00000000..fd20ee14 --- /dev/null +++ b/python-mega-algo/quantum/README.html @@ -0,0 +1,35 @@ + + + + + + + README + + + +

Welcome to Quantum Algorithms

+

Started at https://github.com/TheAlgorithms/Python/issues/1831

+
    +
  • D-Wave: https://www.dwavesys.com and https://github.com/dwavesystems
  • +
  • Google: https://research.google/teams/applied-science/quantum
  • +
  • IBM: https://qiskit.org and https://github.com/Qiskit
  • +
  • Rigetti: https://rigetti.com and https://github.com/rigetti
  • +
+

IBM Qiskit

+
    +
  • Start using by installing pip install qiskit, refer the docs for more info.
  • +
  • Tutorials & References +
      +
    • https://github.com/Qiskit/qiskit-tutorials
    • +
    • https://quantum-computing.ibm.com/docs/iql/first-circuit
    • +
    • https://medium.com/qiskit/how-to-program-a-quantum-computer-982a9329ed02
    • +
  • +
+ + diff --git a/python-mega-algo/quantum/right.html b/python-mega-algo/quantum/right.html index 5d1e5dee..71bb0fb2 100644 --- a/python-mega-algo/quantum/right.html +++ b/python-mega-algo/quantum/right.html @@ -17,14 +17,15 @@ - - + + +
FileFileFileFile
README.md half_adder.py quantum_e...ent.py single_qu...ure.py 
deutsch_jozsa.py not_gate.py ripple_ad...sic.py __init__.py 
README.html half_adder.py quantum_e...ent.py single_qu...ure.py 
README.md not_gate.py ripple_ad...sic.py __init__.py 
deutsch_jozsa.py 

Folders: 1
-Files: 8
-Size of all files: 14220 KB

+Files: 9
+Size of all files: 15660 KB

\ No newline at end of file diff --git a/python-mega-algo/right.html b/python-mega-algo/right.html index 53f75cac..c9000bb3 100644 --- a/python-mega-algo/right.html +++ b/python-mega-algo/right.html @@ -27,13 +27,14 @@ - + +
FileFileFileFile
mypy.ini pytest.ini README.md requirements.txt 
README.html pytest.ini README.md requirements.txt 
mypy.ini 

Folders: 41
-Files: 4
-Size of all files: 82237 KB

+Files: 5
+Size of all files: 182219 KB

\ No newline at end of file diff --git a/python-mega-algo/sorts/normal_distribution_quick_sort.html b/python-mega-algo/sorts/normal_distribution_quick_sort.html new file mode 100644 index 00000000..c6d6f175 --- /dev/null +++ b/python-mega-algo/sorts/normal_distribution_quick_sort.html @@ -0,0 +1,120 @@ + + + + + + + normal_distribution_quick_sort + + + + +

Normal Distribution QuickSort

+

Algorithm implementing QuickSort Algorithm where the pivot element is chosen randomly between first and last elements of the array and the array elements are taken from a Standard Normal Distribution. This is different from the ordinary quicksort in the sense, that it applies more to real life problems , where elements usually follow a normal distribution. Also the pivot is randomized to make it a more generic one.

+

Array Elements

+

The array elements are taken from a Standard Normal Distribution , having mean = 0 and standard deviation 1.

+

The code

+ +
+

The Distribution of the Array elements.

+ +
+

+
+
+

+

Plotting the function for Checking ‘The Number of Comparisons’ taking place between Normal Distribution QuickSort and Ordinary QuickSort

+ +
+
+ + diff --git a/python-mega-algo/sorts/right.html b/python-mega-algo/sorts/right.html index a7ce9b8e..0095503e 100644 --- a/python-mega-algo/sorts/right.html +++ b/python-mega-algo/sorts/right.html @@ -17,24 +17,25 @@ - - - - - - - - - - - - + + + + + + + + + + + + +
FileFileFileFile
normal_di...ort.md gnome_sort.py pancake_sort.py recursive...ort.py 
bead_sort.py heap_sort.py patience_sort.py selection_sort.py 
bitonic_sort.py insertion_sort.py pigeonhole_sort.py shell_sort.py 
bogo_sort.py intro_sort.py pigeon_sort.py slowsort.py 
bubble_sort.py iterative...ort.py quick_sort.py stooge_sort.py 
bucket_sort.py merge_ins...ort.py quick_sor...ion.py strand_sort.py 
cocktail_...ort.py merge_sort.py radix_sort.py tim_sort.py 
comb_sort.py msd_radix_sort.py random_no...ort.py topologic...ort.py 
counting_sort.py natural_sort.py random_pi...ort.py tree_sort.py 
cycle_sort.py odd_even_sort.py recursive...ort.py unknown_sort.py 
double_sort.py odd_even_...lel.py recursive...ort.py wiggle_sort.py 
external_sort.py odd_even_...ded.py recursive...ray.py __init__.py 
normal_di...t.html gnome_sort.py pancake_sort.py recursive...ort.py 
normal_di...ort.md heap_sort.py patience_sort.py selection_sort.py 
bead_sort.py insertion_sort.py pigeonhole_sort.py shell_sort.py 
bitonic_sort.py intro_sort.py pigeon_sort.py slowsort.py 
bogo_sort.py iterative...ort.py quick_sort.py stooge_sort.py 
bubble_sort.py merge_ins...ort.py quick_sor...ion.py strand_sort.py 
bucket_sort.py merge_sort.py radix_sort.py tim_sort.py 
cocktail_...ort.py msd_radix_sort.py random_no...ort.py topologic...ort.py 
comb_sort.py natural_sort.py random_pi...ort.py tree_sort.py 
counting_sort.py odd_even_sort.py recursive...ort.py unknown_sort.py 
cycle_sort.py odd_even_...lel.py recursive...ort.py wiggle_sort.py 
double_sort.py odd_even_...ded.py recursive...ray.py __init__.py 
external_sort.py 

Folders: 1
-Files: 48
-Size of all files: 87527 KB

+Files: 49
+Size of all files: 97646 KB

\ No newline at end of file diff --git a/right.html b/right.html index f99fb30b..42fb23c1 100644 --- a/right.html +++ b/right.html @@ -11,12 +11,13 @@ - + +
FileFileFileFile
directory.html left.html 
directory.html left.html package-lock.json README.md 
index.html README.html package.json 

-Files: 2
-Size of all files: 1716 KB

+Files: 7
+Size of all files: 1152498 KB

\ No newline at end of file

8h*HPkFVZx^LI?He7Sc*JEa=5vX;gwFL>2H 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