{"kind":"Notebook","sha256":"12dcbb6aae22fae291a9c4d2225bd2fcc8f5e507b7985c5fdf65c17e6ed8cb3e","slug":"expressions-and-arithmetic","location":"/source/Lecture2/Expressions_and_Arithmetic.ipynb","dependencies":[],"frontmatter":{"title":"Expressions and Arithmetic","kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"authors":[{"nameParsed":{"literal":"Chung Chan","given":"Chung","family":"Chan"},"name":"Chung Chan","affiliations":["City University of Hong Kong"],"id":"contributors-myst-generated-uid-0"}],"github":"https://github.com/dive4dec/cs1302_24a","keywords":[],"affiliations":[{"id":"City University of Hong Kong","name":"City University of Hong Kong"}],"thumbnail":"/~ccha23/cs1302_24a/build/cs1302-50c9ef56f91d42439b3deb37231c4782.svg","exports":[{"format":"ipynb","filename":"Expressions_and_Arithmetic.ipynb","url":"/~ccha23/cs1302_24a/build/Expressions_and_Arit-65e5446c64d12eb571f9f48d538764e4.ipynb"}]},"mdast":{"type":"root","children":[{"type":"block","data":{"part":"abstract"},"visibility":"remove","children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"This notebook explains how to read and write basic Python expressions for arithmetic operations. Much like mathematical expressions, the precise meanings of Python expressions must consider the precedence and associativity of the operators.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"R8c8LWSOgX"}],"key":"RDdCth2DnS"}],"key":"GAYVwUTC71"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"import ast  # for AST\nimport sys\nfrom dis import dis\nfrom ipywidgets import interact, fixed\n\n%load_ext divewidgets\n%load_ext jupyter_ai\n%ai update chatgpt dive:chat","key":"pJhcAZTuVW"},{"type":"output","id":"lIXi3wDNzuFLkyiiqxCV4","data":[],"key":"XsNu1qlJP8"}],"key":"JGcIjWwjGl"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"slide"}},"children":[{"type":"heading","depth":2,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Floating Point Numbers","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"FaWzdPniti"}],"identifier":"floating-point-numbers","label":"Floating Point Numbers","html_id":"floating-point-numbers","implicit":true,"key":"eVyh96xyR9"}],"key":"MFoCmhn6xQ"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Not all numbers are integers. In Enginneering, we often need to use fractions.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"zm8TE3iKEO"}],"key":"MWO2UkSdjr"}],"key":"ZkXtN3IltJ"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"How to enter fractions in a program?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"hAhBl8Rd97"}],"key":"RUsbNSvvmn"}],"key":"ZQhRFz3aju"}],"key":"GLd6uVmzL3"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"code","lang":"python","executable":true,"value":"x = -0.1  # decimal number\ny = -1.0e-1  # scientific notation\nz = -1 / 10  # fraction\nx, y, z, type(x), type(y), type(z)","key":"Byltyry38Z"},{"type":"output","id":"9AVXFlna--O4WPItfj8Sr","data":[],"key":"qac532skHX"}],"key":"mBD6VlMq1U"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"What is the type ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"IbVbUJZ8Q0"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"GcKTMETWHT"},{"type":"text","value":"?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"kvpbTCVnI1"}],"key":"nvBndWm4tF"}],"key":"vntPcg5YCu"}],"key":"WNkAVFOzbv"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":1,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"cOhdoPB8xv"},{"type":"text","value":" corresponds to the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"dcYX79WDRo"},{"type":"link","url":"https://en.wikipedia.org/wiki/Floating-point_arithmetic#Floating-point_numbers","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"emphasis","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"floating point","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"ttj1juqIg1"}],"key":"dnIfhqevkU"},{"type":"text","value":" representation","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"NtlOze3Fvt"}],"urlSource":"https://en.wikipedia.org/wiki/Floating-point_arithmetic#Floating-point_numbers","data":{"page":"Floating-point_arithmetic#Floating-point_numbers","wiki":"https://en.wikipedia.org/","lang":"en"},"internal":false,"protocol":"wiki","key":"l5a8mXIjiS"},{"type":"text","value":".","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"s3NIFrksDl"}],"key":"aK3QIHHN9M"},{"type":"listItem","spread":true,"position":{"start":{"line":2,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"A ","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"Hx8U1UckOd"},{"type":"inlineCode","value":"float","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"rh0emBwWga"},{"type":"text","value":" is stored in a way like the ","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"rZslC226r8"},{"type":"link","url":"https://en.wikipedia.org/wiki/Scientific_notation","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"scientific notation","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"sFA40Oigu6"}],"urlSource":"https://en.wikipedia.org/wiki/Scientific_notation","data":{"page":"Scientific_notation","wiki":"https://en.wikipedia.org/","lang":"en"},"internal":false,"protocol":"wiki","key":"Yk1LXOalpp"},{"type":"text","value":":","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"rkL0XoyY55"}],"key":"tOfzHH8vrZ"}],"key":"p43zdKcwwV"},{"type":"math","value":"\\overbrace{-}^{\\text{sign}} \\underbrace{1.0}_{\\text{mantissa}\\kern-1em}e\\overbrace{-1}^{\\text{exponent}\\kern-1em}=-1\\times 10^{-1}","position":{"start":{"line":4,"column":1},"end":{"line":6,"column":1}},"html":"<span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\" display=\"block\"><semantics><mrow><mover><mover><mo lspace=\"0em\" rspace=\"0em\">−</mo><mo stretchy=\"true\">⏞</mo></mover><mtext>sign</mtext></mover><munder><munder><mn>1.0</mn><mo stretchy=\"true\">⏟</mo></munder><mrow><mtext>mantissa</mtext><mspace width=\"-1em\"/></mrow></munder><mi>e</mi><mover><mover><mrow><mo>−</mo><mn>1</mn></mrow><mo stretchy=\"true\">⏞</mo></mover><mrow><mtext>exponent</mtext><mspace width=\"-1em\"/></mrow></mover><mo>=</mo><mo>−</mo><mn>1</mn><mo>×</mo><mn>1</mn><msup><mn>0</mn><mrow><mo>−</mo><mn>1</mn></mrow></msup></mrow><annotation encoding=\"application/x-tex\">\\overbrace{-}^{\\text{sign}} \\underbrace{1.0}_{\\text{mantissa}\\kern-1em}e\\overbrace{-1}^{\\text{exponent}\\kern-1em}=-1\\times 10^{-1}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:3.3746em;vertical-align:-1.3155em;\"></span><span class=\"mord mover\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:2.0349em;\"><span style=\"top:-3.2313em;\"><span class=\"pstrut\" style=\"height:3.2313em;\"></span><span class=\"mord mover\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.2313em;\"><span style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\">−</span></span></span><span class=\"svg-align\" style=\"top:-3.6833em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"stretchy\" style=\"height:0.548em;min-width:1.6em;\"><span class=\"brace-left\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMinYMin slice'><path d='M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z'/></svg></span><span class=\"brace-center\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMidYMin slice'><path d='M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z'/></svg></span><span class=\"brace-right\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMaxYMin slice'><path d='M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z'/></svg></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.0833em;\"><span></span></span></span></span></span></span><span style=\"top:-4.7988em;\"><span class=\"pstrut\" style=\"height:3.2313em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord text mtight\"><span class=\"mord mtight\">sign</span></span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.0833em;\"><span></span></span></span></span></span><span class=\"mord munder\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.6444em;\"><span style=\"top:-1.6845em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord text mtight\"><span class=\"mord mtight\">mantissa</span></span><span class=\"mspace mtight\" style=\"margin-right:-1.4286em;\"></span></span></span></span><span style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord munder\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.6444em;\"><span class=\"svg-align\" style=\"top:-2.352em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"stretchy\" style=\"height:0.548em;min-width:1.6em;\"><span class=\"brace-left\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMinYMin slice'><path d='M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z'/></svg></span><span class=\"brace-center\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMidYMin slice'><path d='M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z'/></svg></span><span class=\"brace-right\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMaxYMin slice'><path d='M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z'/></svg></span></span></span><span style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\">1.0</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.648em;\"><span></span></span></span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.3155em;\"><span></span></span></span></span></span><span class=\"mord mathnormal\">e</span><span class=\"mord mover\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:2.0591em;\"><span style=\"top:-3.2924em;\"><span class=\"pstrut\" style=\"height:3.2924em;\"></span><span class=\"mord mover\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.2924em;\"><span style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\">−</span><span class=\"mord\">1</span></span></span><span class=\"svg-align\" style=\"top:-3.7444em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"stretchy\" style=\"height:0.548em;min-width:1.6em;\"><span class=\"brace-left\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMinYMin slice'><path d='M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z'/></svg></span><span class=\"brace-center\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMidYMin slice'><path d='M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z'/></svg></span><span class=\"brace-right\" style=\"height:0.548em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width='400em' height='0.548em' viewBox='0 0 400000 548' preserveAspectRatio='xMaxYMin slice'><path d='M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z'/></svg></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.0833em;\"><span></span></span></span></span></span></span><span style=\"top:-4.921em;\"><span class=\"pstrut\" style=\"height:3.2924em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord text mtight\"><span class=\"mord mtight\">exponent</span></span><span class=\"mspace mtight\" style=\"margin-right:-1.4286em;\"></span></span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.0833em;\"><span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\"></span><span class=\"mord\">−</span><span class=\"mord\">1</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">×</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.8641em;\"></span><span class=\"mord\">1</span><span class=\"mord\"><span class=\"mord\">0</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8641em;\"><span style=\"top:-3.113em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">−</span><span class=\"mord mtight\">1</span></span></span></span></span></span></span></span></span></span></span></span></span>","enumerator":"1","key":"JCZUjppGGe"}],"key":"gYZWAibInq"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"How is a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"wbxz4xeSxS"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"AMaNbk0qAL"},{"type":"text","value":" represented in binary?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"CGwpxGHs2u"}],"key":"ztbjCQJQNz"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"An efficient implementation is more complicated. Try the ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"a5XiE66TTE"},{"type":"link","url":"https://www.h-schmidt.net/FloatConverter/IEEE754.html","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"IEEE-754 Floating Point Converter","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"ocELo9ZW76"}],"urlSource":"https://www.h-schmidt.net/FloatConverter/IEEE754.html","key":"WNas7Q3pMh"},{"type":"text","value":" for ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"yjGt4fjeH0"},{"type":"emphasis","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"single-precision","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"QhmvPu1uN2"}],"key":"iiUtEstovu"},{"type":"text","value":" floating point number:","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"ulZwUKkHzc"}],"key":"Zj4EZUUXPW"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":6,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Starting from the number 0, click the button ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"ZTt7H1Z2rr"},{"type":"inlineCode","value":"+1","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"LyL43ndfcb"},{"type":"text","value":" to find the smallest positive number.","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"zTLUlKAhKu"}],"key":"KeBNE3RESH"},{"type":"listItem","spread":true,"position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"text","value":"Find the largest and smallest representable floating point numbers.","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"c6O2neSvwG"}],"key":"BVMVkPsfUG"}],"key":"zru5KyJNUj"}],"key":"OhVLuhkwZE"}],"key":"VbJfFZO4f4"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Integers in mathematics may be regarded as a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"FRWTdJpNf6"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"hUyLdtmU5W"},{"type":"text","value":" instead of ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"i6lSCCHMo1"},{"type":"inlineCode","value":"int","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xvHRr8ewOz"},{"type":"text","value":":","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"z3D2AJNc5w"}],"key":"LiCQ3M3sMn"}],"key":"mjrsabGdmm"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"type(1.0), type(1e2)","key":"rFmH56gnxv"},{"type":"output","id":"Gl52VKLlD7-12sX4Au4Xe","data":[],"key":"l9ajQ68fNs"}],"key":"iLtzuYgULN"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"You can also convert an ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"CCWkI3jxwC"},{"type":"inlineCode","value":"int","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"TecQYobY8c"},{"type":"text","value":" or a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"ir0vxs96OP"},{"type":"inlineCode","value":"str","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"JO3LaZON3W"},{"type":"text","value":" to a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"PZEeu4U9l3"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"bzin7gJusH"},{"type":"text","value":".","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"AlMngQSMbe"}],"key":"JNkhHUcz1j"}],"key":"bOkCutNTET"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"float(1), float(\"1\")","key":"cm6ALpcWJn"},{"type":"output","id":"i6diVU4TGhCWE-6bJI5Sn","data":[],"key":"FAo5cuSgiH"}],"key":"rbd8rWu1OB"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Is it better to store an integer as ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"u4WCHE71De"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"P6Cy9ZoskL"},{"type":"text","value":"?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"NhxOICerYX"}],"key":"rsBKQt9emo"}],"key":"Cn8VSSWBOr"}],"key":"nhTYgSsxYk"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Python stores a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"NLIk9wDkNO"},{"type":"link","url":"https://docs.python.org/3/library/sys.html#sys.float_info","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"floating point","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"HBMzIayIOU"}],"urlSource":"https://docs.python.org/3/library/sys.html#sys.float_info","key":"L3lQf3x5pn"},{"type":"text","value":" with finite precision, usually ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"mdV6Nab4sj"},{"type":"emphasis","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"64-bit/double","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"qWamLJ5HwN"}],"key":"Lz4ZFOPu7T"},{"type":"text","value":" precision:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"yopZilaFtq"}],"key":"jhBjldczhF"}],"key":"g78pujxEce"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"code","lang":"python","executable":true,"value":"sys.float_info","key":"m5toWYnxwA"},{"type":"output","id":"7MpyiwHya0Un62LpEG2YR","data":[],"key":"iutgVs7B5a"}],"key":"rUAJnnCK6D"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"It cannot accurately represent a number larger than the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"wuEA96c7w7"},{"type":"inlineCode","value":"max","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"g10SFHkGZD"},{"type":"text","value":":","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"YhvSA1482L"}],"key":"be1pAZoYFB"}],"key":"khvLdx3BpH"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"sys.float_info.max * 2","key":"zxlcqzsc8L"},{"type":"output","id":"zEt_FuediBV5ww0re6pOy","data":[],"key":"wHaG5IelYI"}],"key":"bHykdv5KyH"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The precision also affects the check for equality.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"L2c9AdzmkS"}],"key":"itPwH4BVho"}],"key":"pyeASKF9L5"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"(\n    1.0 == 1.0 + sys.float_info.epsilon * 0.5,  # returns true if equal\n    1.0 == 1.0 + sys.float_info.epsilon * 0.6,\n    sys.float_info.max + 1 == sys.float_info.max,\n)","key":"ue5caZzrOn"},{"type":"output","id":"JBhwhxq4PFLi0O-_YOmWk","data":[],"key":"q7sKI6dUci"}],"key":"Uj5uAHvGOk"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Another issue with float is that it may show more decimal places than desired.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"pSX5yNYidt"}],"key":"H2nJT9VA1G"}],"key":"HmTvmgSYBL"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"1 / 3","key":"QRRZHEGTHx"},{"type":"output","id":"E8uNHgHzxuhiN3vgnDsfA","data":[],"key":"w4wPYqfwZB"}],"key":"DCOThoK5Gp"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"How to ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"sIrV0oENyJ"},{"type":"link","url":"https://docs.python.org/3/library/functions.html#round","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"round","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xyxo6bmkCN"}],"urlSource":"https://docs.python.org/3/library/functions.html#round","key":"Vz72HoSixj"},{"type":"text","value":" a floating point number to the desired number of decimal places?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"Jk9L84F4cL"}],"key":"rwN7sg5h7w"}],"key":"xdIoIKjGeP"}],"key":"mZ0KvOgAvG"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"code","lang":"python","executable":true,"value":"round(2.665, 2), round(2.675, 2)","key":"ySjnxTTPV6"},{"type":"output","id":"L6Xqdl4YWTgL7TrLXUGrj","data":[],"key":"K2hIl5p8nT"}],"key":"giHqBN7S02"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Why 2.675 rounds to 2.67 instead of 2.68?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"wULVpfybnu"}],"key":"P1l9vMEftc"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":4,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"A ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"qUSL5JuCBD"},{"type":"inlineCode","value":"float","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"qQYxay0Io2"},{"type":"text","value":" is actually represented in binary.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"vu417fDtpH"}],"key":"neYvq0EcgJ"},{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"A decimal fraction ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"L8xkInfmXi"},{"type":"link","url":"https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"may not be represented exactly in binary","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"Y1a3Sr5OlV"}],"urlSource":"https://docs.python.org/3/tutorial/floatingpoint.html#tut-fp-issues","key":"SpqgcDSlP3"},{"type":"text","value":".","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"VphciNdB5m"}],"key":"vb7dz1IS6j"}],"key":"q2pqiIDsVK"}],"key":"zL3Rmof5l9"}],"key":"owliwjKHOR"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"exercise","label":"ex:float","identifier":"ex:float","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"binary representations of fractions","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"BUvAQaiKuQ"}],"key":"HtlMacK0V9"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Use the ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"h1JkmCnDKC"},{"type":"link","url":"https://www.h-schmidt.net/FloatConverter/IEEE754.html","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"IEEE-754 Floating Point Converter","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"hZpMOUBa8N"}],"urlSource":"https://www.h-schmidt.net/FloatConverter/IEEE754.html","key":"uIK7FENHNv"},{"type":"text","value":" to find out the value actually stored in float for 2.675.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"T0bvWIu2AI"}],"key":"TZxpBLNZYJ"}],"enumerator":"1","html_id":"ex-float","key":"J9vKl82HAp"}],"key":"wAA4d7gTTi"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"precision-round","locked":false,"points":0,"schema_version":3,"solution":true,"task":false}},"children":[{"type":"solution","label":"sol:float","identifier":"sol:float","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"pVLSreGyhH"},{"type":"crossReference","label":"ex:float","identifier":"ex:float","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"fiLdxrbmhu"},{"type":"text","value":"1","key":"D8w06Hh1e9"}],"template":"Exercise %s","enumerator":"1","resolved":true,"html_id":"ex-float","key":"KjMpAcpXCb"}],"key":"Pq40r9naOz"},{"type":"paragraph","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"The value stored is ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"a8YwGOSJBI"},{"type":"inlineCode","value":"2.6749999523162841796875","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"aiUGo0YgTO"},{"type":"text","value":", which explains why it is rounded to ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"cj3bwPpQma"},{"type":"inlineCode","value":"2.67","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"ZOIrp6Yw3d"},{"type":"text","value":" instead of ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"YbdHzFaVZA"},{"type":"inlineCode","value":"2.68","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"S5WJ5OxCZ4"},{"type":"text","value":".","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"nOmHXl2JCa"}],"key":"YIV3B0FLwo"}],"html_id":"sol-float","key":"GmqTPa6r9X"}],"key":"IxrZMxN4zK"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"DLsowyNYRA"},{"type":"inlineCode","value":"round","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"jtR4D3tLuC"},{"type":"text","value":" function can also be applied to an integer.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"LLEVuf9a3M"}],"key":"wkl6aNHvtN"}],"key":"I8s3wxaq3k"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"code","lang":"python","executable":true,"value":"round(150, -2), round(250, -2)","key":"SVGZKgmgqD"},{"type":"output","id":"4sTaap2mL_Up0ZBAk52gb","data":[],"key":"CbWI2qc1ED"}],"key":"jMQbXiY3fl"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"card","children":[{"type":"header","children":[{"type":"paragraph","children":[{"type":"text","value":"Why 250 rounds to 200 instead of 300?","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"WJ7m5QtZpq"}],"key":"x8oYmt3iZD"}],"key":"c8tGUkimCA"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Python 3 implements the default rounding method in ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Cp2mzhEQvo"},{"type":"link","url":"https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"IEEE 754","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"gGKJndq7M3"}],"urlSource":"https://en.wikipedia.org/wiki/IEEE_754#Rounding_rules","data":{"page":"IEEE_754#Rounding_rules","wiki":"https://en.wikipedia.org/","lang":"en"},"internal":false,"protocol":"wiki","key":"Ihiz6j0ENp"},{"type":"text","value":".","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"AOJaTrNhwV"}],"key":"SCWP2nS3pk"}],"key":"nLrBvi362K"}],"key":"EraYlvO7VQ"}],"key":"jotYyWAWnL"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Arbitrary precision arithmetic","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"CRY9TJgOla"}],"key":"Qfd5QRIcd6"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Indeed, computers can perform arbitrary precision arithmetic such as the quadratic equation solver in this Maxima notebook:","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Y896bjo17Z"}],"key":"o5Cy3GgB4H"},{"type":"blockquote","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"link","url":"/~ccha23/cs1302_24a/build/Maxima-7f7d024b72adc7615f9134c5bb97080b.ipynb","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"Maxima.ipynb","key":"e92wKRwsk8"}],"urlSource":"Maxima.ipynb","static":true,"protocol":"file","key":"U0MKkciHFy"}],"key":"FqPjvnu96C"}],"key":"ejoqMrAZSQ"},{"type":"paragraph","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"text","value":"How could this work? Why use ","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"uWmxwGZkk4"},{"type":"inlineCode","value":"float","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"Uia6LDcodD"},{"type":"text","value":" if computers can represent numbers with arbitrary precision?","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"kOrYq0j4Rm"}],"key":"AxCd8I2xgn"}],"key":"ZWBAPaHYzu"}],"key":"MbAMVHHF0P"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"%%ai chatgpt -f text\nExplain in one paragraph how arbitrary precision arithmetic works in a computer despite the memory being finite. \nIf we can have arbitrary precision arithmetic, why do we need floats?","key":"DNzekBYeOl"},{"type":"output","id":"rfhOuhPUogU8SRgBpZQ4p","data":[],"key":"a4lleZjaLR"}],"key":"xQ5e8vyjvn"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"slide"}},"children":[{"type":"heading","depth":2,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operators","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"sT4SPZ41PT"}],"identifier":"operators","label":"Operators","html_id":"operators","implicit":true,"key":"QYzZuJySnG"}],"key":"dpOdUetVQy"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The followings are common operators you can use to form an expression in Python:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"qECigdGf9l"}],"key":"gItcjgEIFv"}],"key":"CAatJMa98E"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"table","position":{"start":{"line":1,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"tableRow","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"tableCell","header":true,"align":"right","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operator","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"D2WXkyeH3f"}],"key":"KhnVgg5Ztb"},{"type":"tableCell","header":true,"align":"left","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operation","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"HKqYTOjMR6"}],"key":"bUyKY0S1uu"},{"type":"tableCell","header":true,"align":"center","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Example","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"TsPwK5l4Xv"}],"key":"y39dasTJtZ"}],"key":"OiwHt1IU3T"},{"type":"tableRow","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"unary ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"vgm95EcAbx"},{"type":"inlineCode","value":"-","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"YRypt10T4S"}],"key":"HU7n9gXcO5"},{"type":"tableCell","align":"left","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"Negation","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"rBi4dpczyb"}],"key":"TwGNPiT4Tq"},{"type":"tableCell","align":"center","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"inlineCode","value":"-y","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"uThqAA2PiU"}],"key":"Tnx8IXNUmD"}],"key":"H0aK3dbqDC"},{"type":"tableRow","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"inlineCode","value":"+","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"OUPbQ9vFZH"}],"key":"a6my94cwTb"},{"type":"tableCell","align":"left","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Addition","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"gHS56gHK0s"}],"key":"INo3s819oY"},{"type":"tableCell","align":"center","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"inlineCode","value":"x + y","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"e1AYLjhKPd"}],"key":"PQR4zfWHJB"}],"key":"PflPxsE6LS"},{"type":"tableRow","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"-","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"oiCqHZPfyG"}],"key":"FYzbbPwKf7"},{"type":"tableCell","align":"left","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"Subtraction","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"jbiaA2qK99"}],"key":"uaO30IwPvt"},{"type":"tableCell","align":"center","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"x - y","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"ISIbS0HGbz"}],"key":"vBhO1cf91N"}],"key":"rPQucLhwvA"},{"type":"tableRow","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"inlineCode","value":"*","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"Dt0xfOZwql"}],"key":"JbHHWCpsbk"},{"type":"tableCell","align":"left","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Multiplication","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"SqFF5JTTvr"}],"key":"dNQTf7PsA7"},{"type":"tableCell","align":"center","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"inlineCode","value":"x*y","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"WlOHAMdXZP"}],"key":"HeTd0IX7N5"}],"key":"VYeY6hqkVp"},{"type":"tableRow","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"inlineCode","value":"/","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"SVUK80hHys"}],"key":"gTlGGpjgjO"},{"type":"tableCell","align":"left","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"text","value":"Division","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"hid4DKQMQ5"}],"key":"C3UR2Kk3Fh"},{"type":"tableCell","align":"center","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"inlineCode","value":"x/y","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"t2QmYJuz3X"}],"key":"j4iE0gQRTW"}],"key":"Eu13Uzb4GT"}],"key":"NQ9BohbnlM"}],"key":"so3dQRIeQK"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":1,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"inlineCode","value":"x","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"JvcgHYwyxH"},{"type":"text","value":" and ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"cqTEKwxa3W"},{"type":"inlineCode","value":"y","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"Gt5QeoWrCn"},{"type":"text","value":" in the examples are called the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"pd1vwh4UZy"},{"type":"emphasis","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"left and right operands","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xK9xoqommu"}],"key":"DMPqvT1IWs"},{"type":"text","value":" respectively.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xIC4e0K9az"}],"key":"HUN9Mjie7G"},{"type":"listItem","spread":true,"position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"The first operator is a ","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"XPu4PZs5tJ"},{"type":"emphasis","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"unary operator","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"uQeDZXB8Le"}],"key":"CBC46KksAr"},{"type":"text","value":", which operates on just one operand.","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"ct03bXxDLe"},{"type":"footnoteReference","identifier":"unary_plus","label":"unary_plus","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"number":1,"enumerator":"1","key":"iYXcHieZ0d"}],"key":"cccgLP1QSR"},{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"All other operators are ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"ml7cobAWOw"},{"type":"emphasis","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"binary operators","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"SlOyzh6yxE"}],"key":"xosAvDRaBe"},{"type":"text","value":", which operate on two operands.","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"klZ3KLmSXW"}],"key":"GszQwL7MKz"}],"key":"dAxSLrBM37"},{"type":"footnoteDefinition","identifier":"unary_plus","label":"unary_plus","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"+","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"t5QQq8ovWl"},{"type":"text","value":" can also be used as a unary operator, but it is not very useful.","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"RFTrP5ftNS"}],"key":"yFBtzo7ORU"}],"number":1,"enumerator":"1","key":"JNcQHn1kCw"}],"key":"UNojNQJhwD"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Python also supports some more operators:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"T6WqltZAc5"}],"key":"bB5yefPl44"}],"key":"Zr8EC17XV7"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"table","position":{"start":{"line":1,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"tableRow","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"tableCell","header":true,"align":"right","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operator","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"HDss3bCa9B"}],"key":"eS9LtypHu3"},{"type":"tableCell","header":true,"align":"left","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operation","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"lPqAV60UBX"}],"key":"R8RDQvtRek"},{"type":"tableCell","header":true,"align":"center","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Example","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"e4y2PA8jT5"}],"key":"PACokVkVTf"}],"key":"lb9MdkKNxb"},{"type":"tableRow","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"inlineCode","value":"//","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"EvtxSgZPfz"}],"key":"BozENAo3cl"},{"type":"tableCell","align":"left","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"Integer division","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"CQIVJZLVlA"}],"key":"UycLhhHWLt"},{"type":"tableCell","align":"center","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"inlineCode","value":"x//y","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"CGHwnmWF5T"}],"key":"YIqmtHiKha"}],"key":"uuyFMjMgin"},{"type":"tableRow","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"inlineCode","value":"%","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"mWWGWCOlbY"}],"key":"ifdPavo5Qv"},{"type":"tableCell","align":"left","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Modulo","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"cLKWoQUdDL"}],"key":"eyxrR0lqNk"},{"type":"tableCell","align":"center","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"inlineCode","value":"x%y","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"RzxfYVXJQf"}],"key":"Uc66KfjJw9"}],"key":"qObwy2sxVp"},{"type":"tableRow","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"tableCell","align":"right","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"**","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"YzumcQOkHp"}],"key":"MlpgTxZFEn"},{"type":"tableCell","align":"left","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"Exponentiation","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"Zhh7179jLB"}],"key":"D59SrklQ8d"},{"type":"tableCell","align":"center","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"x**y","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"r51492Cd93"}],"key":"hfPRKY9Eyp"}],"key":"QhnWD5ppfE"}],"key":"BETBHo3sn3"}],"key":"ZdY2MZgDMs"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The following demonstrates the operations of binary operators:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"SVzVkWbmVs"}],"key":"aHFJle2d0P"}],"key":"wzBRuli16X"},{"type":"block","kind":"notebook-code","data":{"code_folding":[0],"slideshow":{"slide_type":"subslide"}},"children":[{"type":"code","lang":"python","executable":true,"value":"binary_operators = {\n    \"+\": \" + \",\n    \"-\": \" - \",\n    \"*\": \"*\",\n    \"/\": \"/\",\n    \"//\": \"//\",\n    \"%\": \"%\",\n    \"**\": \"**\",\n}\n\n\n@interact(operand1=r\"10\", operator=binary_operators, operand2=r\"3\")\ndef binary_operation(operand1, operator, operand2):\n    expression = f\"{operand1}{operator}{operand2}\"\n    value = eval(expression)\n    print(\n        f\"\"\"{'Expression:':>11} {expression}\\n{'Value:':>11} {value}\\n{'Type:':>11} {type(value)}\"\"\"\n    )","key":"RKeensTH82"},{"type":"output","id":"oW-PCIRLF7cxmnyhpB8dI","data":[],"key":"KzTmOCCdeu"}],"key":"ulJI09d8Sw"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"admonition","kind":"note","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"What does the modulo operator ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"vH3t9XeIhy"},{"type":"inlineCode","value":"%","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"LkP90brbla"},{"type":"text","value":" do?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"Xb6Pqf6FxF"}],"key":"NYqPwrcr48"},{"type":"paragraph","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"You can think of it as computing the remainder, but the ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"l8HpvhCXiq"},{"type":"link","url":"https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"truth","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"Krm9mdj2cV"}],"urlSource":"https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations","key":"qa7l2waxBa"},{"type":"text","value":" is more complicated. Try using fractions and negative numbers for the operands.","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"eEUT8c67do"}],"key":"mR5uEuFb6a"},{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Modular Arithmetic","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"wQpOrfcBBf"}],"key":"wNQ8mBSTbV"},{"type":"paragraph","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"The operator implements the ","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"NT2rw6mseH"},{"type":"link","url":"https://en.wikipedia.org/wiki/Modular_arithmetic","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"modular arithmetic","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"BLRIZ5ufLM"}],"urlSource":"https://en.wikipedia.org/wiki/Modular_arithmetic","data":{"page":"Modular_arithmetic","wiki":"https://en.wikipedia.org/","lang":"en"},"internal":false,"protocol":"wiki","key":"dXN9RJuDg5"},{"type":"text","value":" in Mathematics. The second operand is called the modulus, which means measure in Latin.","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"jTpSNhRknf"}],"key":"zVm2oP1QQJ"}],"key":"Vkqkg9eBij"}],"key":"pkXjdOFj5d"}],"key":"kSkUXD9Q17"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:division","identifier":"ex:division","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"division","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"aGqKcArsG7"}],"key":"r0agamvqWy"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"What is the difference between ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"wveJKIqW8a"},{"type":"inlineCode","value":"/","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"EXmky16IR1"},{"type":"text","value":" and ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"rJYDZCDGa5"},{"type":"inlineCode","value":"//","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"OZYVNJtBed"},{"type":"text","value":"?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"N3fyvaRUUu"}],"key":"x060ZDm38q"}],"enumerator":"2","html_id":"ex-division","key":"wVZLu7WwO2"}],"key":"niM2BQY0hz"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"integer-division","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"solution","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"b4i5t1vOB5"},{"type":"crossReference","label":"ex:division","identifier":"ex:division","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"uJHa0lZzry"},{"type":"text","value":"2","key":"Ew83zxOMNc"}],"template":"Exercise %s","enumerator":"2","resolved":true,"html_id":"ex-division","key":"ZiAD8lwPI1"}],"key":"Bbm6snTKHU"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":4,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"inlineCode","value":"/","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Y0yTtuyx0D"},{"type":"text","value":" is the usual division, and so ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"yDzeQyZKoP"},{"type":"inlineCode","value":"10/3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Y0hLKXngGq"},{"type":"text","value":" returns the floating-point number ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Eq67EteUuy"},{"type":"inlineMath","value":"3.\\dot{3}","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mn>3.</mn><mover accent=\"true\"><mn>3</mn><mo>˙</mo></mover></mrow><annotation encoding=\"application/x-tex\">3.\\dot{3}</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:0.8813em;\"></span><span class=\"mord\">3.</span><span class=\"mord accent\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8813em;\"><span style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\">3</span></span><span style=\"top:-3.2134em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"accent-body\" style=\"left:-0.1389em;\"><span class=\"mord\">˙</span></span></span></span></span></span></span></span></span></span>","key":"JDv4TsP5Yb"},{"type":"text","value":".","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"ixpLXQjOcA"}],"key":"n0yysddkjT"},{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"//","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"LovCRhf5nI"},{"type":"text","value":" is integer division, and so ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"G5K9lDalu2"},{"type":"inlineCode","value":"10//3","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"Zfe56PIbS1"},{"type":"text","value":" gives the integer quotient 3.","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"P1at0mGhhy"}],"key":"cxncG5f0p9"}],"key":"GjFyCjjrcr"}],"key":"vzxeaCh04S"}],"key":"dHdJEAJX92"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:multiplication","identifier":"ex:multiplication","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"multiplication","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"zhjQO7XM8Y"}],"key":"ddRXk73VBn"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"What does ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"WgKXzkQ3yw"},{"type":"inlineCode","value":"'abc' * 3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"XkSTVaTMc0"},{"type":"text","value":" mean? What about ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"tSnM5kdC8G"},{"type":"inlineCode","value":"10 * 'a'","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"cGXKPnpXVq"},{"type":"text","value":"?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"RyBFF8PyxA"}],"key":"MYSu4XxRvz"}],"enumerator":"3","html_id":"ex-multiplication","key":"kzKZI1WwRR"}],"key":"PinKbtpZPE"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"concatenation","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"solution","label":"sol:multiplication","identifier":"sol:multiplication","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"BbZcOAaFn6"},{"type":"crossReference","label":"ex:multiplication","identifier":"ex:multiplication","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"Fpi8z7s9i5"},{"type":"text","value":"3","key":"QdPmXBGqZ2"}],"template":"Exercise %s","enumerator":"3","resolved":true,"html_id":"ex-multiplication","key":"FHdTGk44F2"}],"key":"idqCH965u1"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":5,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"The first expression means concatenating ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"ffl849duzy"},{"type":"inlineCode","value":"'abc'","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"yZruj1atgB"},{"type":"text","value":" three times.","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"bkrj5C0rFG"}],"key":"YaWvF6PpdO"},{"type":"listItem","spread":true,"position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"The second means concatenating ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"LTRcj1ClBR"},{"type":"inlineCode","value":"'a'","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"aUFh97IPSF"},{"type":"text","value":" ten times.","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"jgi3VsN9BV"}],"key":"DCZ0tqiU9o"}],"key":"QZoLkrDf4Q"}],"html_id":"sol-multiplication","key":"EQYJlAXXt3"}],"key":"fWCSxfOsYY"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"exercise","label":"ex:operand-type","identifier":"ex:operand-type","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"operand types","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"ADYJ6VTseE"}],"key":"OMFdaKcM3O"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"How can you change the default operands (","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"OO91WM0t3Q"},{"type":"inlineCode","value":"10","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"FIFphJFy8N"},{"type":"text","value":" and ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"BcX0Ro0HVE"},{"type":"inlineCode","value":"3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"aRLIFbKqSx"},{"type":"text","value":") for different operators so that the overall expression has type ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"S1AG3W9ZGY"},{"type":"inlineCode","value":"float","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"nvz7WbJh6y"},{"type":"text","value":"? Do you need to change all the operands to ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"KFuzjy9cOP"},{"type":"inlineCode","value":"float","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"HIobnwzttF"},{"type":"text","value":"?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"miRlRL8gk1"}],"key":"imi0eMqvN1"}],"enumerator":"4","html_id":"ex-operand-type","key":"WLq8CvGTSe"}],"key":"rcTorImH0k"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"mixed-type","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"solution","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"rsIWYNs56x"},{"type":"crossReference","label":"ex:operand-type","identifier":"ex:operand-type","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"F4xF714V6S"},{"type":"text","value":"4","key":"y599aUtfl9"}],"template":"Exercise %s","enumerator":"4","resolved":true,"html_id":"ex-operand-type","key":"uXfKReQcfR"}],"key":"lZ6mX4OkfP"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":3,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"inlineCode","value":"/","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"uOdbq9IEBZ"},{"type":"text","value":" already returns a ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"r7fCn2AstP"},{"type":"inlineCode","value":"float","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"P5HfJOz7VX"},{"type":"text","value":".","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"bkVxE7i9Hm"}],"key":"SEtabHP3en"},{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"For all other operators, changing at least one of the operands to ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"fFb1Eqglum"},{"type":"inlineCode","value":"float","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"G4IAQYGAwF"},{"type":"text","value":" will return a ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"QHw1CPmIFJ"},{"type":"inlineCode","value":"float","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Gxk6KSqGqm"},{"type":"text","value":".","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Kk1h0FQtxL"}],"key":"r3iWpbnRyf"}],"key":"F9LpOjTtGE"}],"key":"nP9H9OQasx"}],"key":"q9MuDnPMAV"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"slide"}},"children":[{"type":"heading","depth":2,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Operator Precedence and Associativity","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"nE8DjvtTFI"}],"identifier":"operator-precedence-and-associativity","label":"Operator Precedence and Associativity","html_id":"operator-precedence-and-associativity","implicit":true,"key":"KvE9MoDFt2"}],"key":"t4te4N3iPt"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"An expression can consist of a sequence of operations performed in a row. For instance, does ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"gc479QwA9o"},{"type":"inlineCode","value":"x + y * z","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xLZIMCVfry"},{"type":"text","value":" means","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"FS0B6Lhhtz"}],"key":"DBurRNeXAx"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":3,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"inlineCode","value":"(x + y) * z","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"Cd7TgKVlmn"},{"type":"text","value":" or","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"ZyKvjjN5a4"}],"key":"MyUKYqoGmL"},{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"inlineCode","value":"x + (y * z)","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"bWGAneJtmo"},{"type":"text","value":"?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"lBHJfEq8Su"}],"key":"EUIXwOkjtK"}],"key":"QTS28SNxUk"},{"type":"paragraph","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"In other words, should the operand ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"RyBNNbCEyp"},{"type":"inlineCode","value":"y","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"rvOdsFML1y"},{"type":"text","value":" be associated with ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"hqXtDjhbrP"},{"type":"inlineCode","value":"+","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"RnDubuHOuX"},{"type":"text","value":" or ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"N64LpoeHL8"},{"type":"inlineCode","value":"*","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"FbqkqaQRCD"},{"type":"text","value":". In Mathematics, multiplication has higher priority, and so ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"Y1v1F70B7x"},{"type":"inlineCode","value":"y","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"azZWO1ssvl"},{"type":"text","value":" should be associated with ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"yU1T04svTO"},{"type":"inlineCode","value":"*","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"jK9w7rmMQE"},{"type":"text","value":". This rule also applies to the Python expression. The association can be seen explicitly from the ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"BQ4PJTNixo"},{"type":"link","url":"https://docs.python.org/3/library/ast.html","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Abstract Syntax Tree (AST)","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"XTimFBtHUl"}],"urlSource":"https://docs.python.org/3/library/ast.html","key":"ODYohKkTqU"},{"type":"text","value":":","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"MOpWcQ8aau"}],"key":"T2AlxkiENN"}],"key":"fpZtA0OI3S"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"print(ast.dump(ast.parse(\"x + y*z\", mode='eval'), indent=4))","key":"ICkbPkr1U2"},{"type":"output","id":"b5MyBbfoeh0TDZ1fkwe-k","data":[],"key":"TIEVl71eWa"}],"key":"aV2bfI5W4W"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"How to determine the order of operations?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"m9JgOxBBJJ"}],"key":"no8LrooNoj"}],"key":"yPdmfvhPQc"}],"key":"jLFOCGyy0D"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Like arithmetics, an operand is associated with an operator according to the following list of rules in order, and the operator precedence and associativity in ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"OcOXtbVbLA"},{"type":"crossReference","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Table ","key":"r6kkRa3XVd"},{"type":"text","value":"1","key":"gg5X7EkgI8"}],"identifier":"tbl:prec-assoc","label":"tbl:prec-assoc","kind":"table","template":"Table %s","enumerator":"1","resolved":true,"html_id":"tbl-prec-assoc","key":"cWphwSacH1"},{"type":"text","value":":","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"sAggPj0ChG"}],"key":"HXZMzS8aCk"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":2,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"emphasis","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"Grouping","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"hacBXcTQiu"}],"key":"hsUHwxXGEq"},{"type":"text","value":" by parentheses: Operator in the inner grouping first.","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"IVoqzAmCWU"}],"key":"wLZgBS5RY0"},{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"Operator ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"oXlbP60p86"},{"type":"emphasis","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"precedence/priority","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"RZRgWdSsrl"}],"key":"ChHyDnIdSp"},{"type":"text","value":": Operator of higher precedence first.","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"bzvq0UcoHH"}],"key":"XxM93AXVJd"},{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Operator ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"TX6iyYDria"},{"type":"emphasis","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"associativity","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"S4wLayMtYR"}],"key":"zPfFYuAyTG"},{"type":"text","value":":","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"EiI2q7K7as"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":5,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"Left associativity: Operators are grouped from left to right.","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"EE5padFGSE"}],"key":"Sl3zYfP12M"},{"type":"listItem","spread":true,"position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"Right associativity: Operator are grouped from right to left.","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"ZFpacYDeSt"}],"key":"Fq6HKwIziT"}],"key":"cTSlHubjLC"}],"key":"mT94NHRy3m"}],"key":"H9Jtk7xH7A"}],"key":"JPBuCKcAxN"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"container","kind":"table","children":[{"type":"caption","children":[{"type":"paragraph","children":[{"type":"captionNumber","kind":"table","label":"tbl:prec-assoc","identifier":"tbl:prec-assoc","html_id":"tbl-prec-assoc","enumerator":"1","children":[{"type":"text","value":"Table ","key":"hsT99kztrQ"},{"type":"text","value":"1","key":"JzysRUOVfG"},{"type":"text","value":":","key":"rh4yEqUZ6E"}],"template":"Table %s:","key":"QXWyC3LlXU"},{"type":"text","value":"Operator precedence and associativity","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"hU3QygMZnW"}],"key":"cTvY6R7Rho"}],"key":"DapRcNyKXf"},{"type":"table","position":{"start":{"line":4,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"tableRow","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"tableCell","header":true,"align":"left","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Operators","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"yoPZlABuHh"}],"key":"ajqqtOITKM"},{"type":"tableCell","header":true,"align":"center","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Associativity","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"I9OVwCVy4R"}],"key":"sNj888axrU"}],"key":"TFbpCX5qiB"},{"type":"tableRow","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"tableCell","align":"left","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"inlineCode","value":"**","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"oWLUg8dksw"}],"key":"y6fWQ8B7Zi"},{"type":"tableCell","align":"center","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"right","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"LFu9xZeAfI"}],"key":"RtLzbfG7nT"}],"key":"erCK7w8hWD"},{"type":"tableRow","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"tableCell","align":"left","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"inlineCode","value":"-","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"gN14RRwGat"},{"type":"text","value":" (unary)","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"WkFdYR057l"}],"key":"ISd6iWnbkv"},{"type":"tableCell","align":"center","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"children":[{"type":"text","value":"right","position":{"start":{"line":7,"column":1},"end":{"line":7,"column":1}},"key":"v8gY5BPZlI"}],"key":"VKKeVF6OLW"}],"key":"N5FRxvdOop"},{"type":"tableRow","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"tableCell","align":"left","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"inlineCode","value":"*","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"tAZRjIrVXi"},{"type":"text","value":",","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"xqrJJJF2Ye"},{"type":"inlineCode","value":"/","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"NGf6grSLhz"},{"type":"text","value":",","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"GuOP2lHSWg"},{"type":"inlineCode","value":"//","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"uSoW8AFgLW"},{"type":"text","value":",","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"YovkVMtQDQ"},{"type":"inlineCode","value":"%","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"GlTL75HqQp"}],"key":"rU2ABjTGP2"},{"type":"tableCell","align":"center","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"left","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"BDgYeuluZk"}],"key":"UvMka6toQp"}],"key":"sQDRDkDt6L"},{"type":"tableRow","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"tableCell","align":"left","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"inlineCode","value":"+","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"gmCucZIHJw"},{"type":"text","value":",","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"bov4eCe9Yd"},{"type":"inlineCode","value":"-","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"WdoTblt4VA"}],"key":"SADZDeCd5z"},{"type":"tableCell","align":"center","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"text","value":"left","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"eG9HZLHQMa"}],"key":"F2I9KjrOte"}],"key":"S204c5FSTY"}],"key":"QUltzh4U8a"}],"label":"tbl:prec-assoc","identifier":"tbl:prec-assoc","enumerator":"1","html_id":"tbl-prec-assoc","key":"l2BB6o3HKH"}],"key":"dQvNXcJmW6"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"For instance, ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"gwx5V8wl1q"},{"type":"inlineCode","value":"x + y - z","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"HDevotDQJL"},{"type":"text","value":" is equivalent to ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"tucTny9E1K"},{"type":"inlineCode","value":"((x + y) - z)","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"WKy7nWfmBj"},{"type":"text","value":" because both ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"IHL3H43aJT"},{"type":"inlineCode","value":"+","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"GusgGfuTD4"},{"type":"text","value":" and ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"d0eXVTjSls"},{"type":"inlineCode","value":"-","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"v8hVHdwEMN"},{"type":"text","value":" are left associative, and so the operands are grouped with the operators from left to right.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"u4Dpv8oqwC"}],"key":"EJN1PNOeSQ"}],"key":"VNt0khIFv9"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"print(ast.dump(ast.parse(\"x + y - z\", mode='eval'), indent=4))","key":"GDXTkdhduk"},{"type":"output","id":"qk9gsyFY6Mhvg8a1BSZIW","data":[],"key":"RhfAVo7Prn"}],"key":"T8812kIIhP"},{"type":"block","kind":"notebook-content","data":{},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"As another example, ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"K5WxHjwpn8"},{"type":"inlineCode","value":"x ** y ** z","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"krfKyRtQ6c"},{"type":"text","value":" is equivalent to ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"j6pIM2q4HP"},{"type":"inlineCode","value":"(x ** (y ** z))","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"TKshjy5ZqX"},{"type":"text","value":" because ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"FktUEkZF62"},{"type":"inlineCode","value":"**","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"dCrOaVGp8E"},{"type":"text","value":" is right associative, and so the operands are grouped with the operators from right to left.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"qsA2rYL6aN"}],"key":"x6xlFljA4K"}],"key":"ho7fQwjlbV"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"print(ast.dump(ast.parse(\"x ** y ** z\", mode='eval'), indent=4))","key":"U2pk5IgSS2"},{"type":"output","id":"CB7wqgjgEYmQlcdFBcgmc","data":[],"key":"DudnhBeTIR"}],"key":"i32ndKlb3t"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:precedence1","identifier":"ex:precedence1","enumerated":true,"children":[{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Explain the value of the expression ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"DbU34jYlAr"},{"type":"inlineCode","value":"-10 ** -2*3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"zEDEENLTmM"},{"type":"text","value":". In particular, why is the second unary operator ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"mwHjG95W5m"},{"type":"inlineCode","value":"-","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"fIM6Vh3xVx"},{"type":"text","value":" evaluated first before ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"BUPP4Xh7Ui"},{"type":"inlineCode","value":"**","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"B6NVq9tSdQ"},{"type":"text","value":" even though ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"N7zfav3zLm"},{"type":"inlineCode","value":"**","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"rY5jPr4C4D"},{"type":"text","value":" has a higher precedence?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Kqr0xOSEhs"}],"key":"XSxD8TgrZ4"}],"enumerator":"5","html_id":"ex-precedence1","key":"hyjxvBitWO"}],"key":"MVQhQD93Xi"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"precedence","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"solution","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"t3pwFcio72"},{"type":"crossReference","label":"ex:precedence1","identifier":"ex:precedence1","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"HVBl3V6Gr2"},{"type":"text","value":"5","key":"F2jiJyKjPy"}],"template":"Exercise %s","enumerator":"5","resolved":true,"html_id":"ex-precedence1","key":"a738sqsRqH"}],"key":"wkLUZfqzRY"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"The expression evaluates to ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"OOSY5bWgoO"},{"type":"inlineMath","value":"(-(10^{-2}))\\times 3=-0.03","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"html":"<span class=\"katex\"><span class=\"katex-mathml\"><math xmlns=\"http://www.w3.org/1998/Math/MathML\"><semantics><mrow><mo stretchy=\"false\">(</mo><mo>−</mo><mo stretchy=\"false\">(</mo><mn>1</mn><msup><mn>0</mn><mrow><mo>−</mo><mn>2</mn></mrow></msup><mo stretchy=\"false\">)</mo><mo stretchy=\"false\">)</mo><mo>×</mo><mn>3</mn><mo>=</mo><mo>−</mo><mn>0.03</mn></mrow><annotation encoding=\"application/x-tex\">(-(10^{-2}))\\times 3=-0.03</annotation></semantics></math></span><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"base\"><span class=\"strut\" style=\"height:1.0641em;vertical-align:-0.25em;\"></span><span class=\"mopen\">(</span><span class=\"mord\">−</span><span class=\"mopen\">(</span><span class=\"mord\">1</span><span class=\"mord\"><span class=\"mord\">0</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mtight\">−</span><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span><span class=\"mclose\">))</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">×</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">3</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"base\"><span class=\"strut\" style=\"height:0.7278em;vertical-align:-0.0833em;\"></span><span class=\"mord\">−</span><span class=\"mord\">0.03</span></span></span></span>","key":"Z49QiCnINO"},{"type":"text","value":" because the exponentiation operator ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"zDnITM2zgH"},{"type":"inlineCode","value":"**","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"qX9AyVFobb"},{"type":"text","value":" has higher precedence than both the multiplication ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"EmpTO0klDg"},{"type":"inlineCode","value":"*","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"gdcaKkfD2e"},{"type":"text","value":" and the unary operators ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"nbobtwqYXb"},{"type":"inlineCode","value":"-","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"sAXTBR79LX"},{"type":"text","value":". The reason ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"pgVFTCj8cW"},{"type":"inlineCode","value":"-2","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"bFDd4XcPY7"},{"type":"text","value":" is evaluated as the exponent before ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"j6OCcPgUX6"},{"type":"inlineCode","value":"10 ** ...","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"uUngYOwmLE"},{"type":"text","value":" is because the exponentiation operator ** requires a right operand. This forces the evaluation of ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"yYRwiIb5Km"},{"type":"inlineCode","value":"-2","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"YEMrnRTQb6"},{"type":"text","value":" before applying the ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"ybhez6JbkR"},{"type":"inlineCode","value":"**","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Td4qaJAqCh"},{"type":"text","value":" operation. Our understanding of how the machine works is often over-simplified for the ease of understanding!","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"EFoDlQs2OR"}],"key":"PrPLqxz8Jh"}],"key":"NaGzB2V14N"}],"key":"W73r53HUuk"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"%%ai chatgpt -f text\nExplain the value of the expression -10 ** -2*3. \nIn particular, why is the second unary operator - evaluated first before ** even though ** has a higher precedence?","key":"bnsDupXMXg"},{"type":"output","id":"61TqkDcSk6Sj8qEGJvFKC","data":[],"key":"AMK5I5ALKS"}],"key":"Z6Z1IxCnc2"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"exercise","label":"ex:precedence2","identifier":"ex:precedence2","enumerated":true,"children":[{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"To avoid confusion in the order of operations, we should follow the ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"wHcRt9bB5q"},{"type":"link","url":"https://www.python.org/dev/peps/pep-0008/#other-recommendations","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"style guide","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"OBCFdskKui"}],"urlSource":"https://www.python.org/dev/peps/pep-0008/#other-recommendations","key":"pgdh9idIgm"},{"type":"text","value":" when writing expression. What is the proper way to write ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"isrUABtFOP"},{"type":"inlineCode","value":"-10 ** 2*3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"NbY0YYYrmO"},{"type":"text","value":"?","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"GGSom61wEO"}],"key":"N0CboHS87W"},{"type":"admonition","kind":"tip","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Tip","key":"WBW6LiMq7I"}],"key":"UrprU9cOdI"},{"type":"paragraph","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"text","value":"You can use the ","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"jqZ5XQUx44"},{"type":"link","url":"https://jupyterlab-code-formatter.readthedocs.io/","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"children":[{"type":"text","value":"code formatter","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"HF201rDbDv"}],"urlSource":"https://jupyterlab-code-formatter.readthedocs.io/","key":"bOxkF1csEA"},{"type":"text","value":" in JupyterLab to apply the correct programming styles to your code.","position":{"start":{"line":9,"column":1},"end":{"line":9,"column":1}},"key":"xe5bTaG5yT"}],"key":"LWF430TJ4k"}],"key":"coJePsUFGm"}],"enumerator":"6","html_id":"ex-precedence2","key":"lpEDAEv92j"}],"key":"esOzRnyb1e"},{"type":"block","kind":"notebook-code","data":{"nbgrader":{"grade":false,"grade_id":"pep8","locked":false,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"### BEGIN SOLUTION\n-10 ** 2*3  # can use code-prettify or formatter to fix incorrect styles\n### END SOLUTION","key":"IeaYJjit5b"},{"type":"output","id":"cZS0GE26E7g9DelSWTzn8","data":[],"key":"kJgjXkftLs"}],"key":"CdZd2sRYHd"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"slide"}},"children":[{"type":"heading","depth":2,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Augmented Assignment Operators","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"MyJ4dEgJLU"}],"identifier":"augmented-assignment-operators","label":"Augmented Assignment Operators","html_id":"augmented-assignment-operators","implicit":true,"key":"oRoRPblQK0"}],"key":"yAz3XYk7SR"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"For convenience, Python defines the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"WPMnaKFTJM"},{"type":"link","url":"https://docs.python.org/3/reference/simple_stmts.html#grammar-token-augmented-assignment-stmt","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"augmented assignment operators","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"wCPJxucqYp"}],"urlSource":"https://docs.python.org/3/reference/simple_stmts.html#grammar-token-augmented-assignment-stmt","key":"Xz7I6TWtLK"},{"type":"text","value":" such as ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xkcbTC2Qnp"},{"type":"inlineCode","value":"+=","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"KHb8plJx3Q"},{"type":"text","value":", where","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"eGTq8DGHR3"}],"key":"OnAADWJm7j"},{"type":"blockquote","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"paragraph","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"inlineCode","value":"x += 1","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"CdvTHfNtRp"},{"type":"text","value":" means ","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"GMYC0aGNEr"},{"type":"inlineCode","value":"x = x + 1","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"fROAHfeUTB"},{"type":"text","value":".","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"cMFthL2DVQ"}],"key":"MsjvfebBL5"}],"key":"BInFlTHIH2"}],"key":"lekYKe2inY"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The following widgets demonstrate other augmented assignment operators.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xnxI5jGxre"}],"key":"oES8b1arqn"}],"key":"NxC596hnJG"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"@interact(\n    initial_value=fixed(r\"10\"),\n    operator=[\"+=\", \"-=\", \"*=\", \"/=\", \"//=\", \"%=\", \"**=\"],\n    operand=fixed(r\"2\"),\n)\ndef binary_operation(initial_value, operator, operand):\n    assignment = f\"x = {initial_value}\\nx {operator} {operand}\"\n    _locals = {}\n    exec(assignment, None, _locals)\n    print(f\"Assignments:\\n{assignment:>10}\\nx: {_locals['x']} ({type(_locals['x'])})\")","key":"adgDKknzlm"},{"type":"output","id":"aUEPgKoDAX5bmqhWRjKgI","data":[],"key":"Jrebp4lvc1"}],"key":"SdDC4ZupJg"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Assignment expression instead of statement","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"rtkSbJSj6V"}],"key":"AkyCVMdjld"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Starting from Python 3.8, there is an ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"LjZUzvdeOd"},{"type":"link","url":"https://docs.python.org/3/whatsnew/3.8.html#assignment-expressions","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"assignment expression","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"GT0h7otNY7"}],"urlSource":"https://docs.python.org/3/whatsnew/3.8.html#assignment-expressions","key":"VJT9zFVW49"},{"type":"text","value":" using the operator ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"IsPdEfVNXB"},{"type":"inlineCode","value":":=","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"osVE4zbZSL"},{"type":"text","value":". Unlike the (augmented) assignment operators, the operator returns the value assigned.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"WMQZtOTddc"}],"key":"ds8VdQy5WY"}],"key":"yyyzLnYrOz"}],"key":"xrqBsXWz4X"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"y = 3*(x := 15)\nx, y","key":"Av5n6XafXV"},{"type":"output","id":"-PDk_m4QNvsvmFQN4oPUh","data":[],"key":"YmZmYwFyq8"}],"key":"wkalWx9ilB"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:augmented-assignment","identifier":"ex:augmented-assignment","enumerated":true,"children":[{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Can we create an expression using (augmented) assignment operators? Try running the code to see the effect.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"yUVqQEJYl4"}],"key":"RErIjIHMGe"}],"enumerator":"7","html_id":"ex-augmented-assignment","key":"bVMyko7o3v"}],"key":"usZiEv47Ld"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"%%optlite -l -h 400\n3*(x = 15)","key":"PoFaifHxnN"},{"type":"output","id":"jufUtbYJ4HIa73fW8ajXp","data":[],"key":"khVX7aUZ4W"}],"key":"zlLLFHOK3f"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"assignment-statement","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"solution","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"ndDEFKbPM7"},{"type":"crossReference","label":"ex:augmented-assignment","identifier":"ex:augmented-assignment","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"WYW9p8JuqO"},{"type":"text","value":"7","key":"k2bx39ITP8"}],"template":"Exercise %s","enumerator":"7","resolved":true,"html_id":"ex-augmented-assignment","key":"B8v3dzfsXs"}],"key":"SgsRq2bRih"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Assignment operators are used in assignment statements, which are not expressions because they cannot be evaluated.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"ZFUkXryivQ"}],"key":"nrbIPatxZM"}],"key":"C7lZsqTPgD"}],"key":"D0YPW4vYer"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"slide"}},"children":[{"type":"heading","depth":2,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"String Formatting","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"YKqPTiRIM2"}],"identifier":"string-formatting","label":"String Formatting","html_id":"string-formatting","implicit":true,"key":"FarLq9c1RF"}],"key":"j0cxdTe09J"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"strong","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Can we round a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"eo12gsyvIO"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"iWdUUiG3hd"},{"type":"text","value":" or ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"UgtKAi714g"},{"type":"inlineCode","value":"int","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"w6nUzEk7Km"},{"type":"text","value":" for printing but not calculation?","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"cGi5CkoPgD"}],"key":"LrBFVHF7Zo"}],"key":"tqF21OKIkd"}],"key":"d0wHNXLzW6"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"This is possible with format strings:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"D9qbWu6aSM"}],"key":"t0vXzmcjBN"}],"key":"brFg8oCNn6"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"x = 10000 / 3\nprint(\"x ≈ {:.2f} (rounded to 2 decimal places)\".format(x))\nx","key":"S5Kj15cqsj"},{"type":"output","id":"Zd-qytFYDRc4w969QTYUK","data":[],"key":"jEpL2fjJZ7"}],"key":"fMtvuzry0z"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":1,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"inlineCode","value":"{:.2f}","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"xk55GQhEfj"},{"type":"text","value":" is a ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"BXXBsG0WUD"},{"type":"link","url":"https://docs.python.org/3/library/string.html#format-string-syntax","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"emphasis","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"replacement field","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"D0nU219hxc"}],"key":"ioxg2MMqal"}],"urlSource":"https://docs.python.org/3/library/string.html#format-string-syntax","key":"Gow94Oposu"},{"type":"text","value":" or place holder","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"iSenxkcdi1"}],"key":"cKWXUMBKIu"},{"type":"listItem","spread":true,"position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"that gets replaced by a string","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"tEyylhAFsN"}],"key":"XgIm5SQf3B"},{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"that represents the argument ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"hXwpx2Luq2"},{"type":"inlineCode","value":"x","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"vUzr3bmmEU"},{"type":"text","value":" of ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"gcmOprr4cw"},{"type":"inlineCode","value":"format","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"siagioEyZm"}],"key":"jLkuzf6UQV"},{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"according to the ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Phqke0AeBC"},{"type":"link","url":"https://docs.python.org/3/library/string.html#format-specification-mini-language","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"format specification","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"APcKGJZOrs"}],"urlSource":"https://docs.python.org/3/library/string.html#format-specification-mini-language","key":"fePIkfyqhq"},{"type":"text","value":" ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"WBVuGehMid"},{"type":"inlineCode","value":".2f","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"KGGNd8cDxR"},{"type":"text","value":", i.e.,","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"lp8S2bx0U6"},{"type":"break","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"weMHMeemnV"},{"type":"text","value":"a decimal floating point number rounded to 2 decimal places.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"k2TZtHyCkv"}],"key":"xz2HamRGQ4"}],"key":"UbJS8hgDkk"}],"key":"EBUYletYnm"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:format-float","identifier":"ex:format-float","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"format ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"ij5jmrd8KU"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"Jr6ObS0Aki"}],"key":"TKqqRGBJL0"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Play with the following widget to learn the effect of different format specifications. In particular, print ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"b2MK4Iinsf"},{"type":"inlineCode","value":"10000/3","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"opr1nlrSjW"},{"type":"text","value":" as ","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"QYaEhhHjRI"},{"type":"inlineCode","value":"3,333.33","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"nSECT68BZx"},{"type":"text","value":".","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"g7euTNNzms"}],"key":"Bzs9PUPy63"}],"enumerator":"8","html_id":"ex-format-float","key":"k9LlYfCDV7"}],"key":"b375f76CvD"},{"type":"block","kind":"notebook-code","data":{"code_folding":[7],"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"@interact(\n    x=\"10000/3\",\n    align={\"None\": \"\", \"<\": \"<\", \">\": \">\", \"=\": \"=\", \"^\": \"^\"},\n    sign={\"None\": \"\", \"+\": \"+\", \"-\": \"-\", \"SPACE\": \" \"},\n    width=(0, 20),\n    grouping={\"None\": \"\", \"_\": \"_\", \",\": \",\"},\n    precision=(0, 20),\n)\ndef print_float(x, sign, align, grouping, width=0, precision=2):\n    format_spec = (\n        f\"{{:{align}{sign}{'' if width==0 else width}{grouping}.{precision}f}}\"\n    )\n    print(\"Format spec:\", format_spec)\n    print(\"x ≈\", format_spec.format(eval(x)))","key":"YkDeZw26kz"},{"type":"output","id":"fm1bEieafTAgleahB4OCV","data":[],"key":"yWm5vusBWN"}],"key":"qid8JP67Ik"},{"type":"block","kind":"notebook-code","data":{"nbgrader":{"grade":true,"grade_id":"format-spec","locked":false,"points":0,"schema_version":3,"solution":true,"task":false},"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"print(\"{:,.2f}\".format(10000 / 3))","key":"nfDOwnJX4w"},{"type":"output","id":"J4ygZ4y3j8c5RqurlHYVC","data":[],"key":"A1WF9W0CxZ"}],"key":"n81xjrCBDP"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"String formatting is useful for different data types other than ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"TxuHUiiMrg"},{"type":"inlineCode","value":"float","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"nBOWCd5eij"},{"type":"text","value":".","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"EtSQSTgKpw"},{"type":"break","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"GNr3DI1OgS"},{"type":"text","value":"E.g., consider the following program that prints a time specified by some variables.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"tUuzi7ydrA"}],"key":"T65JdCwbR1"}],"key":"TKmIM7TYRS"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"# Some specified time\nhour = 12\nminute = 34\nsecond = 56\n\nprint(\"The time is \" + str(hour) + \":\" + str(minute) + \":\" + str(second) + \".\")","key":"KRWyxszIjD"},{"type":"output","id":"fsLyCSh2kOiQ4lHd0gJXF","data":[],"key":"orHe0EcRtB"}],"key":"jSIZ1E7PMi"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"Imagine you have to show also the date in different formats.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"isAt29LUA1"},{"type":"break","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"LV6Es63lGP"},{"type":"text","value":"The code can become very hard to read/write because","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"T1Bm8OTzAK"}],"key":"xseM3cPzAQ"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":3,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"the message is a concatenation of multiple strings and","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"vWki8g3x6e"}],"key":"ZTIV4ml2J4"},{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"the integer variables need to be converted to strings.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"Eu7j5elbYm"}],"key":"aRTb7jn7J6"}],"key":"qWVULkaP5D"}],"key":"s8UkNF63Vw"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"Omitting ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"soqlr6x13I"},{"type":"inlineCode","value":"+","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"DAFK0yCxaO"},{"type":"text","value":" leads to syntax error. Removing ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"TW7oB3eRHx"},{"type":"inlineCode","value":"str","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"kJE9rQSVpm"},{"type":"text","value":" as follows also does not give the desired format.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"JkL3Cmsx0u"}],"key":"DbCl6pMRgT"}],"key":"aSgKH60jxL"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"print(\"The time is \", hour, \":\", minute, \":\", second, \".\")  # note the extra spaces","key":"JGdSy49fCR"},{"type":"output","id":"61BUlKPyNRaR7uQDrSNKs","data":[],"key":"p6IQxVRRqW"}],"key":"WGZ4RH40NV"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"To make the code more readable, we can use the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"J6N1Lxl00P"},{"type":"inlineCode","value":"format","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"eisoimnuNs"},{"type":"text","value":" function as follows.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"HJReXjmWle"}],"key":"GmgjxKO4o7"}],"key":"jX2eWseCBe"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"message = \"The time is {}:{}:{}.\"\nprint(message.format(hour, minute, second))","key":"KJQOn6XWXj"},{"type":"output","id":"iJg193Uo5TsfF-4j2JcbU","data":[],"key":"DrJzUaEDhj"}],"key":"WdI6vrP8gs"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"The ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"wsovaP6tnp"},{"type":"inlineCode","value":"format","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"F2EeLVH0UZ"},{"type":"text","value":" function replaces the placeholders ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"vFQyBJrqOq"},{"type":"inlineCode","value":"{}","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"RTNPkfabLy"},{"type":"text","value":" with its arguments, in order.","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"Jygg4c3nHR"}],"key":"BtYTGEts55"}],"key":"wlBXFtvjrb"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"According to the ","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"KoFgZd6ywQ"},{"type":"link","url":"https://docs.python.org/3/library/string.html#format-string-syntax","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"string formatting syntax","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"n4XRdnWXfY"}],"urlSource":"https://docs.python.org/3/library/string.html#format-string-syntax","key":"ykZV0MVCJL"},{"type":"text","value":", we can also change the order of substitution using:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"iBOvdo2yHj"}],"key":"koz57SCxzh"},{"type":"list","ordered":false,"spread":false,"position":{"start":{"line":2,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"Indices ","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"sPdL8ev20T"},{"type":"emphasis","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"children":[{"type":"text","value":"(0 is the first item)","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"UVeoKPMdJi"}],"key":"ZDDCekoTX4"},{"type":"text","value":", or","position":{"start":{"line":2,"column":1},"end":{"line":2,"column":1}},"key":"jHpZfzEbKd"}],"key":"HWMSrkwFjx"},{"type":"listItem","spread":true,"position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"children":[{"type":"text","value":"Names inside the placeholders ","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"jHneGe967m"},{"type":"inlineCode","value":"{}","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"eqJrDaCjyz"},{"type":"text","value":".","position":{"start":{"line":3,"column":1},"end":{"line":3,"column":1}},"key":"JxuYGrM5yk"}],"key":"C3xxu1Eujo"}],"key":"jzvzckyQkM"}],"key":"rWbyiCV4W6"},{"type":"block","kind":"notebook-code","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"code","lang":"python","executable":true,"value":"print(\"You should {0} {1} what I say instead of what I {0}.\".format(\"do\", \"only\"))\nprint(\"The surname of {first} {last} is {last}.\".format(first=\"John\", last=\"Doe\"))","key":"K4cSrkiP57"},{"type":"output","id":"CK5Xye68c-IqVFtfo1Z7-","data":[],"key":"XxcgHrVANu"}],"key":"An0qruGVsi"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"paragraph","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"children":[{"type":"text","value":"We can also evaluate variables inside the replacement field:","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"lpgFRyuxSG"}],"key":"KCHb6n0VMg"}],"key":"vwlVVXJ6X1"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"yyyy, mm = \"2024\", \"09\"","key":"SKoDGWWZPa"},{"type":"output","id":"YByDncBXWtgJ1-00qn-qN","data":[],"key":"vXVCI8kNyZ"}],"key":"ghqeCxdSkm"},{"type":"block","kind":"notebook-code","data":{},"children":[{"type":"code","lang":"python","executable":true,"value":"f\"\"\"{yyyy}{mm}CS1302\nIntro to Comp Progm'g\"\"\"","key":"uFyCx18phf"},{"type":"output","id":"8Ji9JiEP94HJyAA3doRd0","data":[],"key":"uRzXZJheQj"}],"key":"wpBAJ6BSDm"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"fragment"}},"children":[{"type":"admonition","kind":"seealso","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"f-string","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"BTdulaiEU8"}],"key":"fyWC8445T9"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"The above multiline string may look familiar to you:","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"PwkP9A9bKG"}],"key":"tApgo9Qy2R"},{"type":"image","url":"/~ccha23/cs1302_24a/build/cs1302-50c9ef56f91d42439b3deb37231c4782.svg","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"dWB73Tyu5M","urlSource":"cs1302.svg"},{"type":"paragraph","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"inlineCode","value":"f\"...\"","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"KPj2gPpTh1"},{"type":"text","value":" is called an ","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"lUd4CPcYwT"},{"type":"link","url":"https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"f-string","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"yDIkjq7lIA"}],"urlSource":"https://docs.python.org/3/tutorial/inputoutput.html#tut-f-strings","key":"Sba7z0RmHH"},{"type":"text","value":". It is a syntax specific to python introduced in ","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"jNI2l6e1fT"},{"type":"link","url":"https://peps.python.org/pep-0498/","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"children":[{"type":"text","value":"PEP 498","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"TlAtK8Ip08"}],"urlSource":"https://peps.python.org/pep-0498/","key":"H9egD7nw5N"},{"type":"text","value":".","position":{"start":{"line":8,"column":1},"end":{"line":8,"column":1}},"key":"pkD2pD0J8m"}],"key":"JvMeicDcCh"}],"key":"tD7F3SZeeI"}],"key":"HjOK5FUymU"},{"type":"block","kind":"notebook-content","data":{"slideshow":{"slide_type":"subslide"}},"children":[{"type":"exercise","label":"ex:f-string","identifier":"ex:f-string","enumerated":true,"children":[{"type":"admonitionTitle","children":[{"type":"text","value":"f-string","position":{"start":{"line":1,"column":1},"end":{"line":1,"column":1}},"key":"zkWcB3JDCt"}],"key":"dHiEJWF3BA"},{"type":"paragraph","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"Play with the following widget to learn more about the formating specification.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"iHg7jhvWY7"}],"key":"hxVVlKYB4s"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":5,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"What happens when ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"TXbOofkH0o"},{"type":"inlineCode","value":"align","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"SwlHCgTAbn"},{"type":"text","value":" is none but ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"oJBdPA5ShF"},{"type":"inlineCode","value":"fill","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"NJeo3MIjSb"},{"type":"text","value":" is ","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"QawgqXktHZ"},{"type":"inlineCode","value":"*","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"L2eNmv1vqR"},{"type":"text","value":"?","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"KszTS56jZu"}],"key":"fi50o5zmJt"},{"type":"listItem","spread":true,"position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"children":[{"type":"text","value":"What happens when the ","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"fX7TohhIHu"},{"type":"inlineCode","value":"expression","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"liTEKY5cB5"},{"type":"text","value":" is a multi-line string?","position":{"start":{"line":6,"column":1},"end":{"line":6,"column":1}},"key":"qskAhIfpIF"}],"key":"aJSLNxm8VS"}],"key":"NtKEW3tW4K"}],"enumerator":"9","html_id":"ex-f-string","key":"qu6Rbab5vq"}],"key":"yctUNLw8Zb"},{"type":"block","kind":"notebook-code","data":{"code_folding":[],"slideshow":{"slide_type":"-"}},"children":[{"type":"code","lang":"python","executable":true,"value":"@interact(\n    expression=r\"'ABC'\",\n    fill=\"*\",\n    align={\"None\": \"\", \"<\": \"<\", \">\": \">\", \"=\": \"=\", \"^\": \"^\"},\n    width=(0, 20),\n)\ndef print_object(expression, fill, align=\"^\", width=10):\n    format_spec = f\"{{:{fill}{align}{'' if width==0 else width}}}\"\n    print(\"Format spec:\", format_spec)\n    print(\"Print:\", format_spec.format(eval(expression)))","key":"MLJWbSa9MB"},{"type":"output","id":"e700Ya10AmvKBWG-zqXS_","data":[],"key":"apK4KZcoiC"}],"key":"b2XrxpHNR2"},{"type":"block","kind":"notebook-content","data":{"nbgrader":{"grade":true,"grade_id":"string-formatting","locked":false,"points":0,"schema_version":3,"solution":true,"task":false}},"children":[{"type":"solution","class":"dropdown","children":[{"type":"admonitionTitle","children":[{"type":"text","value":"Solution to ","key":"diFAICxHrJ"},{"type":"crossReference","label":"ex:f-string","identifier":"ex:f-string","kind":"exercise","children":[{"type":"text","value":"Exercise ","key":"LwB6yu4oRT"},{"type":"text","value":"9","key":"SWqilOVKrh"}],"template":"Exercise %s","enumerator":"9","resolved":true,"html_id":"ex-f-string","key":"unOWcfKgNy"}],"key":"SspdO7tWFh"},{"type":"list","ordered":true,"start":1,"spread":false,"position":{"start":{"line":4,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"listItem","spread":true,"position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"children":[{"type":"text","value":"It returns a ValueError because align must be specified when fill is.","position":{"start":{"line":4,"column":1},"end":{"line":4,"column":1}},"key":"EnTGE5JEkg"}],"key":"wCNanG2Rbp"},{"type":"listItem","spread":true,"position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"children":[{"type":"text","value":"The newline character is simply regarded a character. The formatting is not applied line-by-line. E.g., try ‘ABC\\nDEF’.","position":{"start":{"line":5,"column":1},"end":{"line":5,"column":1}},"key":"Zn6be65vPA"}],"key":"E2tmXwgAfC"}],"key":"gcvWG4BYe1"}],"key":"GDMYgST0LH"}],"key":"Kupv3pBVRQ"}],"key":"BWWxIFA7tZ"},"references":{"cite":{"order":[],"data":{}}},"footer":{"navigation":{"prev":{"title":"Values and Variables","url":"/values-and-variables","group":"Lecture 2"},"next":{"title":"Calculators","url":"/calculators","group":"Lab 2"}}},"domain":"http://localhost:3000"}