Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
talit:python_basics [2020-02-09 21:22] – sca | talit:python_basics [2020-02-09 21:42] (aktuell) – sca | ||
---|---|---|---|
Zeile 38: | Zeile 38: | ||
</ | </ | ||
The first line just assigns the string `" | The first line just assigns the string `" | ||
- | %Python figures out itself that you assign a string since you're using quotes. | + | Python figures out itself that you assign a string since you're using quotes. |
If you run the code with this line only, nothing will happen. | If you run the code with this line only, nothing will happen. | ||
However, the second line tells your computer to print the value of the variable `s` to the screen. The output is | However, the second line tells your computer to print the value of the variable `s` to the screen. The output is | ||
Zeile 57: | Zeile 57: | ||
</ | </ | ||
- | Note that you can also write a number as a string, e.g., `{s = ' | + | Note that you can also write a number as a string, e.g., `s = ' |
However, `s` will be treated as text and not as a number, therefore, you cannot do any calculations with it. | However, `s` will be treated as text and not as a number, therefore, you cannot do any calculations with it. | ||
Also, you can use variables with more than one character, e.g., `mystring = "Hello World" | Also, you can use variables with more than one character, e.g., `mystring = "Hello World" | ||
- | You can add {\bf comments} to your code using the symbol `#`: | + | You can add **comments** to your code using the symbol `#`: |
In a line of code, everything that follows the hashtag symbol will be ignored when running. | In a line of code, everything that follows the hashtag symbol will be ignored when running. | ||
So if you run | So if you run | ||
Zeile 93: | Zeile 93: | ||
1. Can you use numbers or special characters like `?, | 1. Can you use numbers or special characters like `?, | ||
- | <!-- You can even use numbers in variable names, as long as they are not in the beginning, e.g., `mystring13 = "Hello World" | ||
- | But you can NOT use special characters in variable names | ||
- | --> | ||
2. How can you add a line break to a string? | 2. How can you add a line break to a string? | ||
- | <!-- % mystring = " | ||
3. Is Python case-sensitive? | 3. Is Python case-sensitive? | ||
4. Given a (long enough) string `s`, what do the commands | 4. Given a (long enough) string `s`, what do the commands | ||
Zeile 106: | Zeile 102: | ||
## Integers & floats | ## Integers & floats | ||
- | \label{sec integers and floats} | ||
Next, let's have a look at numbers, in particular integers and floats. | Next, let's have a look at numbers, in particular integers and floats. | ||
Let us do some simple calculations. | Let us do some simple calculations. | ||
- | We can assign the {\bf integer} $5$ to the variable `a` by typing | + | We can assign the **integer** $5$ to the variable `a` by typing |
<code python> | <code python> | ||
a = 5 | a = 5 | ||
Zeile 133: | Zeile 128: | ||
20 | 20 | ||
</ | </ | ||
- | {\bf Floats} are decimal numbers and are declared by | + | |
+ | **Floats** are decimal numbers and are declared by | ||
<code python> | <code python> | ||
b = 5. | b = 5. | ||
Zeile 185: | Zeile 181: | ||
As you have (hopefully) noticed, we do something (`a = a + 3`) that looks mathematically wrong, since obviously $4 \neq 4 + 3$! | As you have (hopefully) noticed, we do something (`a = a + 3`) that looks mathematically wrong, since obviously $4 \neq 4 + 3$! | ||
- | Notice that in Python, the symbol `=` *is not the equality sign you would have in an equation*. It can rather be compared to the symbol $:=$ used in definitions: | + | Notice that in Python, the symbol `=` *is not the equality sign you would have in an equation*. It can rather be compared to the symbol $:=$ used in mathematical |
The equal sign in an equation is given by `==`, which will be discussed later on. | The equal sign in an equation is given by `==`, which will be discussed later on. | ||
Zeile 294: | Zeile 290: | ||
- | # Conditions | + | # Conditions & Booleans |
We can check if one or multiple conditions are satisfied. | We can check if one or multiple conditions are satisfied. | ||
Zeile 311: | Zeile 307: | ||
</ | </ | ||
Here, we use a double equal sign `==`. It compares the left and the right side and takes the value `True` if they are the same and `False` otherwise. | Here, we use a double equal sign `==`. It compares the left and the right side and takes the value `True` if they are the same and `False` otherwise. | ||
- | Remember that the symbols `=` and `==` are fundamentally different, as explained above in Sec. \ref{sec integers | + | Remember that the symbols `=` and `==` are fundamentally different: While the `==` symbol corresponds to $=$ in a mathematical equation |
- | <!-- %Note that, in contrast, the single-equal sign {\codetxt | + | |
You can assign Boolean values to variables, e.g.: | You can assign Boolean values to variables, e.g.: | ||
Zeile 332: | Zeile 327: | ||
Besides checking for equality, we can, for example, check if the value on the left side is larger than the value on the right side. | Besides checking for equality, we can, for example, check if the value on the left side is larger than the value on the right side. | ||
- | Some important conditions are | + | Some important conditions are: |
- | \bit | + | |
- | \item {\codetxt | + | * `a == b`: a and b are equal |
- | \item {\codetxt | + | * `a > b`: a is larger b (similarly |
- | \item {\codetxt | + | * `a >= b`: a is larger equal b (similarly |
- | \item {\codetxt | + | * `a != b`: a and b are not equal |
- | \item {\codetxt | + | * `a in A`: a is element of list A |
- | \item {\codetxt | + | * `a not in A`: a is not element of list A |
- | \eit | + | |
Zeile 346: | Zeile 341: | ||
# If statements | # If statements | ||
- | In an `if' | + | In an `if` statement, the action depends on conditions. |
Let's say we are given some number $a$ and want to determine its absolute value. It is given by $a$ if $a \geq 0$ and by $-a$ if $a < 0$. | Let's say we are given some number $a$ and want to determine its absolute value. It is given by $a$ if $a \geq 0$ and by $-a$ if $a < 0$. | ||
We can realize this by | We can realize this by | ||
Zeile 359: | Zeile 354: | ||
In the first line, we just choose some number. | In the first line, we just choose some number. | ||
Feel free to play around with its value. | Feel free to play around with its value. | ||
- | In line 3, the `if' | + | In line 3, the `if` statement begins. |
- | It starts with {\codetxt | + | It starts with `if` and is followed by a condition, here `a < 0`, and a mandatory colon. |
- | If the condition is {\codetxt | + | If the condition is `True` (satisfied), |
- | If the condition is {\codetxt | + | If the condition is `False` (not satisfied), it jumps to `else:` and runs what is written there: |
Also, here it is important to do the indentation correctly. | Also, here it is important to do the indentation correctly. | ||
- | If there are more than two possibilities, | + | If there are more than two possibilities, |
<code python> | <code python> | ||
a = 4. | a = 4. | ||
Zeile 377: | Zeile 372: | ||
</ | </ | ||
As you can see, a condition can consist of multiple sub-conditions. | As you can see, a condition can consist of multiple sub-conditions. | ||
- | These can be connected, e.g., using {\codetxt | + | These can be connected, e.g., using `and` or `or`: |
- | \bit | + | |
- | \item {\codetxt condition1 and condition2}: | + | |
- | \item {\codetxt condition1 or condition2}: | + | |
- | \eit | + | |
+ | * `condition1 and condition2`: | ||
+ | * `condition1 or condition2`: | ||
- | {\bf Questions:} | + | |
- | \ben | + | *Questions:* |
- | \item Define a function `myabs(x)' | + | |
- | \item How do indentations work in nested if statements? Play around with if statements inside an if statement. | + | * Define a function `myabs(x)` that takes a number x as an argument and returns the absolute value of this number. |
- | \een | + | * How do indentations work in nested if statements? Play around with if statements inside an if statement. |
Zeile 395: | Zeile 388: | ||
If you want to repeat an action several times, you can use loop statements. | If you want to repeat an action several times, you can use loop statements. | ||
- | First, let us discuss a {\bf for-loop}. A typical example is | + | First, let us discuss a *for-loop*. A typical example is |
<code python> | <code python> | ||
for i in range(4): | for i in range(4): | ||
print(i) | print(i) | ||
</ | </ | ||
+ | |||
which outputs the numbers | which outputs the numbers | ||
+ | |||
<code bash> | <code bash> | ||
0 | 0 | ||
Zeile 407: | Zeile 403: | ||
3 | 3 | ||
</ | </ | ||
+ | |||
This for-loop runs through all indices $i=0, | This for-loop runs through all indices $i=0, | ||
First, it runs the code that follows for $i=0$, then for $i=1$, then for $i=2$, and finally for $i=3$; thus $4$ times in total. | First, it runs the code that follows for $i=0$, then for $i=1$, then for $i=2$, and finally for $i=3$; thus $4$ times in total. | ||
Again, notice that Python starts counting at $0$! | Again, notice that Python starts counting at $0$! | ||
- | Second, we discuss the {\bf while-loop}. It repeats a piece of code as long as a condition is satisfied. | + | Second, we discuss the **while-loop**. It repeats a piece of code as long as a condition is satisfied. |
- | Careful: If you have a bug in your code and the condition is always true, you have an `infinite loop': the code will never stop running and you will have to kill the process manually. | + | Careful: If you have a bug in your code and the condition is always true, you have an **infinite loop**: the code will never stop running and you will have to kill the process manually. |
A simple example of a while-loop is: | A simple example of a while-loop is: | ||
Zeile 423: | Zeile 420: | ||
</ | </ | ||
This piece of code has exactly the same output as the for-loop above. | This piece of code has exactly the same output as the for-loop above. | ||
- | In the first line, we set {\codetxt | + | In the first line, we set `i = 0`. |
- | Then, in line 3, we say that we want to run the following code as long as the condition | + | Then, in line 3, we say that we want to run the following code as long as the condition |
In line 4, we print the current value of the index. | In line 4, we print the current value of the index. | ||
Very important is the last line: Here, we increase the value of $i$ by $1$ for the next run. | Very important is the last line: Here, we increase the value of $i$ by $1$ for the next run. | ||
Zeile 430: | Zeile 427: | ||
As soon as this condition is not true anymore, which will be when $i = 4$, the loop will be terminated. | As soon as this condition is not true anymore, which will be when $i = 4$, the loop will be terminated. | ||
- | {\bf Questions:} | + | **Questions:** |
- | \ben | + | |
- | \item What happens to the if-loop if we write {\codetxt range} with two arguments, like {\codetxt range(3, | + | |
- | \item Take the while-loop given in this section and modify it to obtain an infinite loop. You should then kill the process. | + | |
- | \een | + | |
- | + | ||
+ | * What happens to the if-loop if we write `range` with two arguments, like `range(3, | ||
+ | * Take the while-loop given in this section and modify it to obtain an infinite loop. You should then kill the process (CTRL + C). | ||
Zeile 443: | Zeile 436: | ||
There are many additional packages that can be imported. | There are many additional packages that can be imported. | ||
- | For doing math, `numpy' | + | For doing math, `numpy` is particular useful. |
For example, it contains a lot of predefined functions like trigonometric functions. | For example, it contains a lot of predefined functions like trigonometric functions. | ||
Let us do an example | Let us do an example | ||
Zeile 452: | Zeile 445: | ||
print(np.pi) | print(np.pi) | ||
</ | </ | ||
- | In the first line, we import the `numpy' | + | In the first line, we import the `numpy` package and give it the short name `np`. Of course, you could use a different name than `np` but this is the common choice. |
- | Each time we call a function (or something else) from numpy, we have to start with `np.', in order for Python to know that it has to look inside the numpy package. This is exactly what we do on line 3: We call the sine function defined in numpy and evaluate it for the argument $2$. In the last line, we print the value of the constant $\pi$. | + | Each time we call a function (or something else) from numpy, we have to start with `np.`, in order for Python to know that it has to look inside the numpy package. This is exactly what we do on line 3: We call the sine function defined in numpy and evaluate it for the argument $2$. In the last line, we print the value of the constant $\pi$. |
- | %Of course, you could use a different name than `np' | + | **Questions:** |
- | + | ||
- | {\bf Questions:} | + | |
\ben | \ben | ||
- | \item From trigonometry, | + | |
- | \item Two very useful functions within numpy are:\\ | + | * Two very useful functions within numpy are:\\ |
- | {\codetxt | + | `np.linspace(a, |
Find out what they do. | Find out what they do. | ||
\een | \een | ||
Zeile 467: | Zeile 458: | ||
# Elapsed time | # Elapsed time | ||
- | \label{sec elapsed time} | ||
If you want to test the efficiency of your code, it is useful to measure the time needed for the calculation: | If you want to test the efficiency of your code, it is useful to measure the time needed for the calculation: |