You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
22 KiB
1 line
22 KiB
{"cells": [{"cell_type": "markdown", "id": "1", "metadata": {}, "source": ["<!--\n", "title: Intermediate Variables\n", "type: lesson\n", "duration: \"00:30\"\n", "creator: Brandi Butler\n", "-->\n", "\n", "\n", "##  {.separator}\n", "\n", "<h1>Unit 3 Lab: Intermediate Variables</h1>\n", "\n", "\n", "<!--\n", "\n", "## Overview\n", "In order, this lesson will teach students about floating point numbers, floor division, implicit and explicit type conversion, escape characters, and string formatting. There is a short exercise near the end.\n", "\n", "## Learning Objectives\n", "In this lesson, students will:\n", "\n", "* Create and floor floats.\n", "* Use special string characters.\n", "* Format strings.\n", "\n", "## Duration\n", "30 minutes\n", "\n", "## Suggested Agenda\n", "\n", "| Time | Activity |\n", "| --- | --- |\n", "| 0:00 - 0:03 | Welcome |\n", "| 0:04 - 0:15 | Floats |\n", "| 0:16 - 0:22 | Advanced Strings |\n", "| 0:23 - 0:27 | String Formatting |\n", "| 0:28 - 0:30 | Summary |\n", "\n", "\n", "## In Class: Materials\n", "- Projector\n", "- Internet connection\n", "- Python3\n", "-->\n", "\n", "\n", "---\n", "\n", "## Lesson Objectives\n", "*After this lesson, you will be able to...*\n", "\n", "* Create and floor floats.\n", "* Use special string characters.\n", "* Format strings.\n", "\n", "---\n", "\n", "## Introducing: Floats\n", "\n", "Did you notice that until now, we've only used whole numbers? Whole numbers are integers or, in programming terms, `int`.\n", "\n", "Where are all the decimal points?\n", "\n", "3.3, 1.1, and 2.2 are all **floats**.\n", "\n", "- Short for \"floating point value\"\n", "- A number with a decimal point. Even 2.0 is a float - it has the decimal!\n", "- Just another numerical variable!\n", "\n"]}, {"cell_type": "code", "id": "2", "metadata": {}, "outputs": [], "source": ["an_int = 3 # Int!\n", "a_float = 3.0 # Float!\n", "x = 2.5 # Float!\n", "z = 3.5 + 2.5 # Adding floats - normal math.\n", "y = x + z\n", "print(y) # Prints 8.5.\n", "sum = an_int + a_float # What if we add an int and a float?\n", "print(sum) # Prints 6.0. Adding an int to a float will still make a float!\n"]}, {"cell_type": "markdown", "id": "3", "metadata": {}, "source": ["\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Point out that adding anything to a float makes a float.\n", "\n", "**Talking Points**:\n", "\n", "- \"Float is short for floating point real value, which in layman's terms is simply a number with a decimal point.\"\n", "</aside>\n", "\n", "\n", "---\n", "\n", "## Int / Int == Float ?!\n", "\n", "A quotient is not necessarily a whole number!\n", "* `5 / 2 == 2.5`\n", "* `1 / 3 == 1.333...`\n", "\n", "Therefore, quotients are always floats - even when they look like ints. Python doesn't distinguish!\n", "\n", "* `6 / 2 == 3.0`\n", "* `8 / 4 == 2.0`\n", "\n", "**Protip:** This is called **implicit type conversion** - Python changed our numbers from ints to floats automatically.\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Throughout this and each following slide, allow time for discussion. It's easy to breeze through this, but it's a lot to cover.\n", "\n", "**Talking Points**:\n", "\n", "- \"I started with two integers, how did I get a float? Well, if you think about it, it does make sense. You aren't guaranteed that a quotient will be a whole number, even if you start out with two whole numbers. For example, 5 divided by 2 is 2.5, which is a float!\"\n", "</aside>\n", "\n", "---\n", "\n", "## Explicit Type Conversion\n", "\n", "`6 / 2 == 3.0`: A float. What if you just want the int `3`? (Pretty soon, having the right type will be important!). We need **explicit type conversion.**\n", "\n", "- `int()` converts something to an integer.\n", "- `float()` converts to a float.\n", "- `str()` converts to a string\n", "\n", "<iframe height=\"400px\" width=\"100%\" src=\"https://repl.it/@GAcoding/python-programming-type-conversion?lite=true\" scrolling=\"no\" frameborder=\"no\" allowtransparency=\"true\" allowfullscreen=\"true\" sandbox=\"allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals\"></iframe>\n", "\n", "\n", "<aside class=\"notes\">\n", "**Talking Points**:\n", "- \"Explicit type conversion is basically like saying directly to Python, `I want this float to be an integer!`\"\n", "\n", "**Teaching Tips**:\n", "\n", "- This is a repl.it so it's easy to demo to students how this works. This isn't an exercise - don't spend long on the slide. After running through what's there, add at the bottom converting strings.\n", "\n", "\n", "**Repl.it Note**: The replit has\n"]}, {"cell_type": "code", "id": "4", "metadata": {}, "outputs": [], "source": ["x = 2\n", "y = 3.5\n", "z = \"10\"\n", "\n", "print(\"Converting to integers\")\n", "print(x, \"to integer ->\", int(x))\n", "print(y, \"to integer ->\", int(y))\n", "print(z, \"to integer ->\", int(z))\n", "print()\n", "\n", "print(\"Converting to floats\")\n", "print(x, \"to float ->\", float(x))\n", "print(y, \"to float ->\", float(y))\n", "print(z, \"to float ->\", float(z))\n"]}, {"cell_type": "markdown", "id": "5", "metadata": {}, "source": ["</aside>\n", "\n", "---\n", "\n", "\n", "## We Do: Let's Practice\n", "\n", "Let's try:\n", "\n", "* Declare two variables, `x` and `y`, and assign each an `int` value.\n", "* Declare a variable `z` and assign a `float` value.\n", "* Declare a variable `result`, which stores `x + y`. What type is `result`? Let's convert it to other types.\n", "* Is this behavior the same for other operators `-`, `*`, `/`, or `**`? What about using `x` and `z`?\n", "\n", "<iframe height=\"400px\" width=\"100%\" src=\"https://repl.it/@GAcoding/blank-repl?lite=true\" scrolling=\"no\" frameborder=\"no\" allowtransparency=\"true\" allowfullscreen=\"true\" sandbox=\"allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals\"></iframe>\n", "\n", "\n", "<aside class=\"notes\">\n", "**Teaching Tips**:\n", "\n", "- We can run through each operator pretty quickly here, as this is expected behavior.\n", "- Walk through the exercise with them to make sure everyone has noticed that division produces a float out of two integers and can do the type conversion.\n", "\n", "**Talking Points**:\n", "\n", "- \"Luckily most of the time, floats behave the way you'd expect.\"\n", "- Afterward \"You can combine floats and ints with mathematical operators, and the resulting type will be a float as well.\"\n", "\n", "**Repl.it Note:**\n", "\n", "- It's empty.\n", "</aside>\n", "\n", "---\n", "\n", "## Quick Review: Floats\n", "\n", "In programming:\n", "\n", "- An *int* is a whole number: `1`, `0`, `-5`.\n", "- A *float* is a number with a decimal point: `1.6`, `-28.2`, `0.0`.\n", "- Doing any math with a float results in a float: `6 + 3.0 = 9.0`.\n", "- Dividing integers results in a float: `4 / 2 = 2.0`\n", "\n", "You can use *explicit type conversion* to turn one variable type into another:\n", "\n", "- `int()` converts to an integer: `int(6.0) # 6`\n", "- `float()` converts to a float: `float(6) # 6.0`\n", "- `str()` converts to a string: `str(6) # \"6\"`\n", "\n", "**Up next:** Floor Division.\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Do a quick check for understanding.\n", "\n", "</aside>\n", "\n", "---\n", "\n", "## Finding the Midpoint\n", "\n", "One intermediate variable down! Let's move on past floats.\n", "\n", "What if we want to find the middle index of a list?\n", "\n"]}, {"cell_type": "code", "id": "6", "metadata": {}, "outputs": [], "source": ["# An odd numbered list (length of 5)\n", "characters = [\"Green Arrow\", \"Super Girl\", \"The Flash\", \"Wonder Woman\", \"Batman\"]\n", "\n", "index = len(characters) / 2 # Index is 2.5\n", "\n", "print(characters[index]) # There's no element 2.5!\n"]}, {"cell_type": "markdown", "id": "7", "metadata": {}, "source": ["\n", "We want `2`. Any ideas? This is a very common use case - there must be a way!\n", "\n", "**Protip:** Remember, indexes start at 0!\n", "\n", "\n", "<aside class=\"notes\">\n", "**Teaching Tips**:\n", "\n", "- Stress that this has nothing to do with floats. The lesson presentation is on a whole slew of intermediate variables. Now that we understand floats, we're moving on to the next sub-topic.\n", "\n", "**Talking Points**:\n", "\n", "- \"Sometimes we want to divide and get the nearest whole number. A common scenario for this is when you want to get the middle of a list. You can access the list with an index which must be an integer.\"\n", "</aside>\n", "\n", "---\n", "\n", "## Introducing Floor Division\n", "\n", "Python has a shortcut.\n", "\n", "**Floor division** (a.k.a. integer division):\n", "\n", "* We use `//` instead of just `/`.\n", "* Does normal division, then drops the decimal and returns an int.\n", "- Think of the floor - it's beneath you. We floor by rounding **down**. The decimal is chopped! `2.8` will become `2`, not `3`.\n", "\n"]}, {"cell_type": "code", "id": "8", "metadata": {}, "outputs": [], "source": ["# Gives 2.5\n", "float_index = 5 / 2\n", "\n", "# Gives 2!\n", "int_index = 5 // 2\n"]}, {"cell_type": "markdown", "id": "9", "metadata": {}, "source": ["\n", "\n", "\n", "<aside class=\"notes\">\n", "**Talking Points**:\n", "\n", "- \"You may hear the terms `integer division` and `floor division` used interchangeably\"\n", "- \"If you recall the terms floor and ceiling from math class, you'll understand that floor just means that the decimal is removed. Floor division is NOT the same as rounding to the nearest whole number! It literally just cuts off the decimal point!\"\n", "</aside>\n", "\n", "---\n", "\n", "## You Do: Using Floor Division\n", "\n", "Correct the code by using floor division:\n", "\n", "<iframe height=\"400px\" width=\"100%\" src=\"https://repl.it/@GAcoding/python-programming-floor-division?lite=true\" scrolling=\"no\" frameborder=\"no\" allowtransparency=\"true\" allowfullscreen=\"true\" sandbox=\"allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals\"></iframe>\n", "\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Give them just a couple minutes to do this, then show the answer.\n", "\n", "**Talking Points**:\n", "\n", "- \"Let's take a minute or two to correct our midpoint code from earlier\"\n", "\n", "**Repl.it Note:** This replit has:\n"]}, {"cell_type": "code", "id": "10", "metadata": {}, "outputs": [], "source": ["# Your job: Add multiplication (product) and division (quotient)\n", "# to the addition and subtraction that have already been done.\n", "# Observe: What is the result's type for each operation?\n", "\n", "# Start with two integers\n", "x = 6\n", "y = 2\n", "\n", "# Calculate the sum, difference, product, and quotient\n", "result_sum = x + y\n", "result_difference = x - y\n", "# TODO: Multiplication of x and y\n", "# TODO: Division of x and y\n", "\n", "# Print out all results\n", "print(\"result sum\", result_sum)\n", "print(\"result difference\", result_difference)\n", "# TODO: Print result product\n", "# TODO: Print result quotient\n"]}, {"cell_type": "markdown", "id": "11", "metadata": {}, "source": ["</aside>\n", "\n", "---\n", "\n", "## Quick Review:\n", "\n", "Floor division:\n", "\n", "- Drops the decimal point - always rounds down.\n", "- Performed using `//` instead of just `/`.\n", "- Returns an int instead of a float.\n", "\n"]}, {"cell_type": "code", "id": "12", "metadata": {}, "outputs": [], "source": ["# Gives 2.5\n", "regular_division = 5 / 2\n", "\n", "# Gives 2!\n", "floor_divison = 5 // 2\n"]}, {"cell_type": "markdown", "id": "13", "metadata": {}, "source": ["\n", "**Next up:** Specialty Strings!\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Do a quick check for understanding.\n", "\n", "</aside>\n", "\n", "---\n", "\n", "## Switching Gears: Strings\n", "\n", "Our intermediate variables checklist:\n", "- Floats\n", "- Floor division\n", "\n", "What about strings? We might want:\n", "\n", "- Printing special characters: A newline, a tab, or a quote inside of a string.\n", "- Formatting\n", " - A string.\n", " - The way an integer or float prints out.\n", "\n", "**Discussion**: How would you go about printing a new line between strings, like below?\n", "\n"]}, {"cell_type": "code", "id": "14", "metadata": {}, "outputs": [], "source": ["Hello!\n", "This is a line later.\n"]}, {"cell_type": "markdown", "id": "15", "metadata": {}, "source": ["\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- If they think they can just type a new line in with the enter key, challenge them to try it.\n", "\n", "**Talking Points**:\n", "\n", "- \"We've talked a bit about numbers, but we haven't even yet touched on more advanced things to do with strings yet!\"\n", "</aside>\n", "\n", "\n", "---\n", "\n", "## Special String Characters\n", "\n", "\n", "| Name | Escape Character | Notes |\n", "|-----------|-----|-----------------------------------------|\n", "| Newline | \\n | Whitespace: Inserts another line |\n", "| Tab | \\t | Whitespace: Inserts a tab |\n", "| Quote | \\\" | Print a double quote, don't end the string |\n", "| Backslash | \\\\ | Prints \\ |\n", "\n"]}, {"cell_type": "code", "id": "16", "metadata": {}, "outputs": [], "source": ["quote = \"\\\"These are not the droids you're looking for.\\\"\\n\\n\\t-Obi-Wan Kenobi\\n\"\n", "\n", "print(quote)\n"]}, {"cell_type": "markdown", "id": "17", "metadata": {}, "source": ["\n", "This prints, *including* the quotation marks:\n", "\n"]}, {"cell_type": "code", "id": "18", "metadata": {}, "outputs": [], "source": ["\"These are not the droids you're looking for.\"\n", "\n", "\n", " - Obi-Wan Kenobi\n", "\n", "\n"]}, {"cell_type": "markdown", "id": "19", "metadata": {}, "source": ["\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Talk about how they all use the backslash - the backslash escapes.\n", "\n", "**Talking Points**:\n", "\n", "- \"You can't always print everything you want to inside of a string. For example, what if you want to print a quote? How can you distinguish it from the quotes that delineate the string value in Python?\"\n", "\n", "</aside>\n", "\n", "---\n", "\n", "\n", "## String Format\n", "\n", "What else with strings?\n", "\n", "String formatting uses index numbers, in `{}`, as placeholders for strings we later specify in `format`.\n", "\n", "Indexes inside the braces refer to the arguments, in order!\n", "\n"]}, {"cell_type": "code", "id": "20", "metadata": {}, "outputs": [], "source": ["## Indexes count from 0. ##\n", "x = \"{0}, {1}, {2}\".format(\"man\", \"bear\", \"pig\")\n", "print(x) # prints \"man, bear, pig\"\n", "\n", "## They don't need to be in order ##\n", "x = \"{1}, {0}, {2}\".format(\"man\", \"bear\", \"pig\")\n", "print(x) # prints \"bear, man, pig\"\n", "\n", "## We can repeat! ##\n", "x = \"{0} {1} {0} {1} {0}\".format(\"Hello\", \"World\")\n", "print(x) # prints \"Hello World Hello World Hello\"\n"]}, {"cell_type": "markdown", "id": "21", "metadata": {}, "source": ["\n", "\n", "<aside class=\"notes\">\n", "**Teaching Tips**:\n", "\n", "- Note the syntax -\n", "- Talk about why you'd do this versus print(\"man\", \"bear\", \"pig\")\n", "</aside>\n", "\n", "\n", "---\n", "\n", "## Escaping and Format\n", "\n", "Check it out:\n", "\n", "<iframe height=\"400px\" width=\"100%\" src=\"https://repl.it/@GAcoding/python-programming-string-formatting?lite=true\" scrolling=\"no\" frameborder=\"no\" allowtransparency=\"true\" allowfullscreen=\"true\" sandbox=\"allow-forms allow-pointer-lock allow-popups allow-same-origin allow-scripts allow-modals\"></iframe>\n", "\n", "\n", "\n", "<aside class=\"notes\">\n", "**Teaching Tips**:\n", "\n", "- This isn't an exercise - it's a demo to show and gain students' understanding.\n", "- Show several variants of poking around with this code! Maybe demonstrate some more escape characters.\n", "\n", "**Talking Points**:\n", "\n", "- \"Let's put the concepts of escaping characters with backslash and format to make a shortened version of some Beatles lyrics\"\n", "\n", "**Repl.it Note**: This replit has\n"]}, {"cell_type": "code", "id": "22", "metadata": {}, "outputs": [], "source": ["# Two ways to print the same thing\n", "\n", "# First way\n", "lyrics = \"let it be, let it be, let it be, let it be\\nwhisper words of wisdom\\nlet it be\\n\"\n", "\n", "print(lyrics)\n", "\n", "# Second way, with format\n", "let_it_be = \"let it be\"\n", "whisper = \"whisper words of wisdom\"\n", "\n", "print(\"{0}, {0}, {0}, {0}\\n{1}\\n{0}\".format(let_it_be, whisper))\n"]}, {"cell_type": "markdown", "id": "23", "metadata": {}, "source": ["\n", "</aside>\n", "\n", "\n", "---\n", "\n", "## Quick Review\n", "\n", "Special strings:\n", "\n", "- A backslash `\\` escapes special characters: `\\\"` will print a quote and `\\\\` prints a `\\`.\n", "- `\\n` creates a New line; `\\t` creates a Tab.\n", "\n", "String formatting:\n", "\n", "- Can be used when printing or creating new strings.\n", "- Use `{x}`; `x` corresponds to the number of the argument.\n", "\n", "\n"]}, {"cell_type": "code", "id": "24", "metadata": {}, "outputs": [], "source": ["x = \"{0}, {1}, {2}\".format(\"man\", \"bear\", \"pig\")\n", "print(x) # prints \"man, bear, pig\"\n", "\n", "x = \"{1}, {0}, {2}\".format(\"man\", \"bear\", \"pig\")\n", "print(x) # prints \"bear, man, pig\"\n", "\n", "x = \"{0} {1} {0} {1} {0}\".format(\"Hello\", \"World\")\n", "print(x) # prints \"Hello World Hello World Hello\"\n"]}, {"cell_type": "markdown", "id": "25", "metadata": {}, "source": ["\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Do a quick check for understanding.\n", "\n", "</aside>\n", "\n", "---\n", "\n", "\n", "## Number Format\n", "\n", "What about number formatting?\n", "\n", "* Specify a float's precision (how many decimal points are shown).\n", "* Add commas to an integer (so it's more readable!).\n", "\n"]}, {"cell_type": "code", "id": "26", "metadata": {}, "outputs": [], "source": ["x = format(1/3, '.2f')\n", "print(x) # Technically, 1/3 is .333333333333. This prints \"0.33\"\n", "x = format(2.0024292, '.3f')\n", "print(x) # This prints \"2.002\"\n"]}, {"cell_type": "markdown", "id": "27", "metadata": {}, "source": ["\n"]}, {"cell_type": "code", "id": "28", "metadata": {}, "outputs": [], "source": ["x = format(5200, ',d')\n", "print(x) # Prints \"5,200\"\n"]}, {"cell_type": "markdown", "id": "29", "metadata": {}, "source": ["\n", "**Note: Number formatting creates strings!**\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Break down the syntax. What does `.2f` mean? What does `,d` mean?\n", "- Give many examples for formatting. `.5f`; things besides `,d`. Ask them to come up with something they'd like to do, and research with them (if you don't know) the syntax to do it.\n", "\n", "**Talking Points**:\n", "\n", "- \"We can also use the format function with numbers. Beware: the result is a string!\"\n", "</aside>\n", "\n", "---\n", "\n", "## You Do: Bring It All Together!\n", "\n", "- Open a new file and name it \"solution.py\".\n", "\n", "- Make a dictionary called \"sports\" with at least 4 key / value pairs.\n", "\n", " * Keys are the names (e.g., tennis, soccer, volleyball).\n", " * Values are the the number of people that play in a game.\n", "\n", "- Use a loop to print out all the keys and values.\n", "\n", " * Output:\n"]}, {"cell_type": "code", "id": "30", "metadata": {}, "outputs": [], "source": [" I like \"tennis\".\n", " There are usually 2 players in tennis.\n"]}, {"cell_type": "markdown", "id": "31", "metadata": {}, "source": [" * Note the new line and quotes, and use `format` to print out your string!\n", "\n", "- BONUS: Every other sport, indent by another tab.\n", "\n", " * 0 tabs: Tennis.\n", " * 1 tab level: Soccer.\n", " * 2 tab levels: Volleyball.\n", "\n", "**HINT**: Use floor division for the bonus! `number_of_tabs = loop_counter // 2`\n", "\n", "<aside class=\"notes\">\n", "\n", "5 minutes\n", "\n", "**Teaching Tips**:\n", "\n", "- Give students a few minutes to do this; walk around the room. When the majority are done, go over the answer.\n", "- The floor division portion is listed as a bonus, but *please* do go over this when you review the answer to the problem!\n", "\n", "</aside>\n", "\n", "---\n", "\n", "## Summary and Q&A\n", "\n", "- Floats (`2.52`)\n", "- Floor (`int_index = 5 // 2`) - creates an int.\n", "- Escape characters (`\\\\`, `\\n`, `\\r`, `\\t`, `\\\"`)\n", "- Formatting:\n", "\n"]}, {"cell_type": "code", "id": "32", "metadata": {}, "outputs": [], "source": ["x = \"{0}{1}{0}\".format(\"Hello\", \"World\")\n", "print(x) # prints \"HelloWorldHello\"\n", "\n", "x = format(5200, ',d') # \"5,200\" -> A string!\n", "\n", "x = format(1/3, '.2f') # 0.33\n"]}, {"cell_type": "markdown", "id": "33", "metadata": {}, "source": ["\n", "- Type conversion:\n", " * `int()`\n", " * `float()`\n", " * `str()`\n", "\n", "<aside class=\"notes\">\n", "\n", "**Teaching Tips**:\n", "\n", "- Make sure the students are comfortable with the material. Prod them for questions and remind them that programming is hard and that there aren't bad questions.\n", "\n", "</aside>\n", "\n", "---\n", "\n", "## Additional Resources\n", "\n", "* [Floating Point (Docs)](https://docs.python.org/3/tutorial/floatingpoint.html)\n", "* [Decimal Module](https://docs.python.org/3/library/decimal.html)\n", "* [Floor Division](http://python-reference.readthedocs.io/en/latest/docs/operators/floor_division.html)\n", "* [List of Escape Characters](https://linuxconfig.org/list-of-python-escape-sequence-characters-with-examples)\n", "* [List of Unicode Characters](https://en.wikipedia.org/wiki/List_of_Unicode_characters)\n", "* [Obscure Unicode Characters](http://jrgraphix.net/r/Unicode)\n", "- [Unicode Database](https://en.wikipedia.org/wiki/List_of_Unicode_characters)\n"]}], "metadata": {"kernelspec": {"display_name": "Python 3", "language": "python", "name": "python3"}, "language_info": {"codemirror_mode": {"name": "ipython", "version": 3}, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6"}}, "nbformat": 4, "nbformat_minor": 5} |