Streamline previous content
This commit is contained in:
parent
5e71194787
commit
04d53956a3
11 changed files with 1089 additions and 402 deletions
|
|
@ -46,11 +46,11 @@
|
|||
}
|
||||
},
|
||||
"source": [
|
||||
"As our introductory example, we want to calculate the *average* of all *even* numbers from *one* through *ten*.\n",
|
||||
"As our introductory example, we want to calculate the *average* of all *even* numbers from `1` through `10`.\n",
|
||||
"\n",
|
||||
"While we could come up with an [analytical solution](https://math.stackexchange.com/questions/935405/what-s-the-difference-between-analytical-and-numerical-approaches-to-problems/935446#935446) (i.e., derive some equation with \"pen and paper\" from, e.g., one of [Faulhaber's formulas](https://en.wikipedia.org/wiki/Faulhaber%27s_formula)), we instead solve the task programmatically.\n",
|
||||
"\n",
|
||||
"We start by creating a **list** called `numbers` that holds all the individual numbers."
|
||||
"We start by creating a **list** called `numbers` that holds all the individual numbers between **brackets** `[` and `]`."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -988,7 +988,7 @@
|
|||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"139829040614096"
|
||||
"139878568414128"
|
||||
]
|
||||
},
|
||||
"execution_count": 28,
|
||||
|
|
@ -1012,7 +1012,7 @@
|
|||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"139829040789352"
|
||||
"139878568593256"
|
||||
]
|
||||
},
|
||||
"execution_count": 29,
|
||||
|
|
@ -1036,7 +1036,7 @@
|
|||
{
|
||||
"data": {
|
||||
"text/plain": [
|
||||
"139829040474736"
|
||||
"139878567760368"
|
||||
]
|
||||
},
|
||||
"execution_count": 30,
|
||||
|
|
@ -1080,7 +1080,7 @@
|
|||
}
|
||||
},
|
||||
"source": [
|
||||
"`a` and `d` indeed have the same value as is checked with the **equality operator** `==`. The resulting `True` (and the `False` further below) is yet another data type, a so-called **boolean**. We look into them closely in [Chapter 3](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/03_conditionals.ipynb)."
|
||||
"`a` and `d` indeed have the same value as is checked with the **equality operator** `==`. The resulting `True` (and the `False` further below) is yet another data type, a so-called **boolean**. We look into them closely in [Chapter 3](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/03_conditionals.ipynb#Boolean-Expressions)."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1222,7 +1222,7 @@
|
|||
"source": [
|
||||
"Different types imply different behaviors for the objects. The `b` object, for example, can be \"asked\" if it could also be interpreted as an `int` with the [is_integer()](https://docs.python.org/3/library/stdtypes.html#float.is_integer) \"functionality\" that comes with every `float` object.\n",
|
||||
"\n",
|
||||
"Formally, we call such type-specific functionalities **methods** (to differentiate them from functions) and we formally introduce them in Chapter 10. For now, it suffices to know that we access them using the **dot operator** `.`. Of course, `b` could be converted into an `int`, which the boolean value `True` tells us."
|
||||
"Formally, we call such type-specific functionalities **methods** (to differentiate them from functions) and we formally introduce them in Chapter 9. For now, it suffices to know that we access them using the **dot operator** `.`. Of course, `b` could be converted into an `int`, which the boolean value `True` tells us."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -1817,7 +1817,7 @@
|
|||
" "
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.lib.display.YouTubeVideo at 0x7f2c7c4206d8>"
|
||||
"<IPython.lib.display.YouTubeVideo at 0x7f3804586400>"
|
||||
]
|
||||
},
|
||||
"execution_count": 51,
|
||||
|
|
@ -1838,7 +1838,7 @@
|
|||
}
|
||||
},
|
||||
"source": [
|
||||
"For example, while the above code to calculate the average of the even numbers from 1 through 10 is correct, a Pythonista would re-write it in a more \"Pythonic\" way and use the [sum()](https://docs.python.org/3/library/functions.html#sum) and [len()](https://docs.python.org/3/library/functions.html#len) (= \"length\") built-in functions (cf., [Chapter 2](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/02_functions.ipynb)) as well as a so-called **list comprehension** (cf., Chapter 7). Pythonic code runs faster in many cases and is less error-prone."
|
||||
"For example, while the above code to calculate the average of the even numbers from 1 through 10 is correct, a Pythonista would re-write it in a more \"Pythonic\" way and use the [sum()](https://docs.python.org/3/library/functions.html#sum) and [len()](https://docs.python.org/3/library/functions.html#len) (= \"length\") [built-in functions](https://docs.python.org/3/library/functions.html) (cf., [Chapter 2](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/02_functions.ipynb#Built-in-Functions)) as well as a so-called **list comprehension** (cf., [Chapter 7](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/07_sequences.ipynb#List-Comprehensions)). Pythonic code runs faster in many cases and is less error-prone."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2040,7 +2040,7 @@
|
|||
"\n",
|
||||
"At the same time, for a beginner's course, it is often easier to code linearly.\n",
|
||||
"\n",
|
||||
"In real data science projects, one would probably employ a mixed approach and put re-usable code into so-called Python modules (i.e., *.py* files; cf., [Chapter 2](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/02_functions.ipynb)) and then use Jupyter notebooks to build up a linear report or storyline for a business argument to be made."
|
||||
"In real data science projects, one would probably employ a mixed approach and put re-usable code into so-called Python modules (i.e., *.py* files; cf., [Chapter 2](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/02_functions.ipynb#Local-Modules-and-Packages)) and then use Jupyter notebooks to build up a linear report or storyline for a business argument to be made."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2330,7 +2330,7 @@
|
|||
}
|
||||
},
|
||||
"source": [
|
||||
"Some variables magically exist when we start a Python process or are added by Jupyter. We may safely ignore the former until Chapter 10 and the latter for good."
|
||||
"Some variables magically exist when we start a Python process or are added by Jupyter. We may safely ignore the former until Chapter 9 and the latter for good."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -2779,7 +2779,7 @@
|
|||
"source": [
|
||||
"Let's change the first element of `x`.\n",
|
||||
"\n",
|
||||
"Chapter 7 discusses lists in more depth. For now, let's view a `list` object as some sort of **container** that holds an arbitrary number of pointers to other objects and treat the brackets `[]` attached to it as just another operator, called the **indexing operator**. `x[0]` instructs Python to first follow the pointer from the global list of all names to the `x` object. Then, it follows the first pointer it finds there to the `1` object. The indexing operator must be an operator as we merely read the first element and do not change anything in memory.\n",
|
||||
"[Chapter 7](https://nbviewer.jupyter.org/github/webartifex/intro-to-python/blob/master/07_sequences.ipynb#The-list-Type) discusses lists in more depth. For now, let's view a `list` object as some sort of **container** that holds an arbitrary number of pointers to other objects and treat the brackets `[]` attached to it as just another operator, called the **indexing operator**. `x[0]` instructs Python to first follow the pointer from the global list of all names to the `x` object. Then, it follows the first pointer it finds there to the `1` object. The indexing operator must be an operator as we merely read the first element and do not change anything in memory.\n",
|
||||
"\n",
|
||||
"Note how Python **begins counting at 0**. This is not the case for many other languages, for example, [MATLAB](https://en.wikipedia.org/wiki/MATLAB), [R](https://en.wikipedia.org/wiki/R_%28programming_language%29), or [Stata](https://en.wikipedia.org/wiki/Stata). To understand why this makes sense, see this short [note](https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html) by one of the all-time greats in computer science, the late [Edsger Dijkstra](https://en.wikipedia.org/wiki/Edsger_W._Dijkstra)."
|
||||
]
|
||||
|
|
@ -3189,7 +3189,7 @@
|
|||
" "
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.lib.display.YouTubeVideo at 0x7f2c7c41bc50>"
|
||||
"<IPython.lib.display.YouTubeVideo at 0x7f3804634748>"
|
||||
]
|
||||
},
|
||||
"execution_count": 94,
|
||||
|
|
@ -3579,12 +3579,12 @@
|
|||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"I change the display of the computer\n"
|
||||
"I change the state of the computer's display\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"print(\"I change the display of the computer\")"
|
||||
"print(\"I change the state of the computer's display\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -3686,7 +3686,7 @@
|
|||
}
|
||||
},
|
||||
"source": [
|
||||
"We end each chapter with a summary of the main points. The essence in this first chapter is that just like a sentence in a real language like English may be decomposed into its parts (e.g., subject, predicate, and objects), the same may be done with programming languages."
|
||||
"We end each chapter with a summary of the main points (i.e., **TL;DR** = \"too long; didn't read\"). The essence in this first chapter is that just as a sentence in a real language like English may be decomposed into its parts (e.g., subject, predicate, and objects), the same may be done with programming languages."
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue