Skip to content
Snippets Groups Projects
Commit a334bc7d authored by Jakob Beetz's avatar Jakob Beetz
Browse files

cleared outputs, corrected hyperlinks

parent 3b311a35
Branches
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
# Python: erste Schritte
Dies ist ein interaktives Notebook um den Einstig in das Programmieren mit Python zu begleiten.
Jede Zelle kann interaktiv ausgeführt werden, in dem entweder das ▶ - Symbol in der oberen Leiste mit der Maus gewählt wird, oder die Tasten-Kombination <kbd>⇧ Shift</kbd><kbd>Enter</kbd> in der Zeile ausgeführt werden.
Probieren Sie es aus: Setzten Sie den Cursor in Zelle [2] mit dem Inhalt `1 + 2` und drücken Sie <kbd>⇧ Shift</kbd><kbd>Enter</kbd>
%% Cell type:code id: tags:
``` python
6 * 5
```
%% Output
30
%% Cell type:markdown id: tags:
Das Ergenis sollte in der Zeile darunter erscheinen. Ein Notebook funktioniert analog zu einer Kommandozeile in der ein interaktiver Python Interpreter, die sog. [REPL-Umgebung](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop) läuft.
Oft werden hier einzelne Ausgaben von Text, Variablen-Werten wie Ergebnissen ausgegeben. Dazu wird die `print` Funktion ausgeführt, die fest in Python eingebaut ist:
%% Cell type:code id: tags:
``` python
print("Hallo Python")
```
%% Output
Hallo Python
%% Cell type:markdown id: tags:
In diesem Falle wurde die Zeichenkette `Hello Python` als sog. Parameter and die Funktion übergeben. Zeichenketten werden mit `"` begonnen und beendet.
%% Cell type:markdown id: tags:
## Variablen und Datentypen
Statt ein Ergebnis einfach nur zu berechnen und in der Konsole oder dem Notebook auszugeben, können wir den Wert auch einer Variblen zuweisen. Der Python-Interpreter sucht dabei automatisch den passenden Datenytpen aus:
%% Cell type:code id: tags:
``` python
Ergebnis = 1 + 5
Ergebnis
```
%% Output
6
%% Cell type:code id: tags:
``` python
Ergebnis
```
%% Output
6
%% Cell type:markdown id: tags:
### Variablenamen
%% Cell type:markdown id: tags:
Es können beliebig viele Variablen in ein Skript eingefügt werden. Variablen müssen eindeutige Namen haben
%% Cell type:markdown id: tags:
### Datentypen
%% Cell type:markdown id: tags:
Jede Variable in Python hat einen Datentypen. Streng genommen ist jeder Datentyp in Python selber ein Objekt
%% Cell type:code id: tags:
``` python
Ergebnis = 3 * 5
type(Ergebnis)
```
%% Output
int
%% Cell type:code id: tags:
``` python
Ergebnis
```
%% Output
15
%% Cell type:markdown id: tags:
Jedes mal wenn ein neuer Wert einer vorhandenen Variablen zugewiesen wird, kann sich der Datentyp ändern. Hier wird `Ergebnis` zu einer Gleitkommazahl vom Typ `float`
%% Cell type:code id: tags:
``` python
Ergebnis = 3.5 / 3
Ergebnis
type(Ergebnis)
```
%% Output
float
%% Cell type:markdown id: tags:
Datentypen können explizit angegeben werden:
%% Cell type:code id: tags:
``` python
f = float(1)
f
```
%% Output
1.0
%% Cell type:code id: tags:
``` python
type(f)
```
%% Output
float
%% Cell type:code id: tags:
``` python
ganzzahl_pi = int("33")
ganzzahl_pi
```
%% Output
33
%% Cell type:code id: tags:
``` python
type(ganzzahl_pi)
```
%% Output
int
%% Cell type:code id: tags:
``` python
a = 3
b = a
b
```
%% Output
3
%% Cell type:code id: tags:
``` python
a = 5
b
```
%% Output
3
%% Cell type:code id: tags:
``` python
a
```
%% Output
5
%% Cell type:markdown id: tags:
# Textausgabe und Zeichenketten
%% Cell type:markdown id: tags:
Variablen können mit `print()` ausgegeben werden:
%% Cell type:code id: tags:
``` python
Ergebnis = 3 * 5
print(Ergebnis)
```
%% Cell type:markdown id: tags:
Variablen Werte, die keine Strings sind können durch Formatierungsstrings ausgegeben werden.
Verschiedenen Ansätze habe sich im Lauf der Zeit entwickelt.
Der traditionelle Weg is über das `%` Zeichen. Dieser findet sich noch häufig in älterem Quellcode, ist aber nicht mehr empfohlen:
%% Cell type:code id: tags:
``` python
print ("Das Ergebnis lautet: %s!" % Ergebnis)
```
%% Cell type:markdown id: tags:
Der moderne Weg ab Python 3 ist über sogenannte Formatstring `F-Strings`
Dabei wird dem String ein `f` vorangestellt. Innerhalb des String können dann Variablen in `{` und `}` eingefügt werden.
%% Cell type:code id: tags:
``` python
print(f"Das Ergebnis ist {Ergebnis}. Immer noch")
```
%% Cell type:markdown id: tags:
Hier können auch kleiner Operationen ausgeführt oder Funktionen aufgerufen werden:
%% Cell type:code id: tags:
``` python
print (f"Spontane Berechnung: {4*5}")
```
%% Cell type:code id: tags:
``` python
zahl = 1 / 3
print (f"Zahl ohne Begrenzung:\t {zahl}")
print (f"Zahl mit Begrenzung:\t {zahl:.4f}")
print (f"Zentriert: \t\t {zahl:^20.3f}")
```
%% Cell type:markdown id: tags:
## Sequentielle Datentypen
%% Cell type:markdown id: tags:
Kollektion (Container) mit Elementen in geordneter Folge
- Tupel
- unveränderbar (immutable)
- schnell
- begrenzt mit '(' und ')'
- Listen
- veränderbar (mutable)(können nach Erzeugung verändert werden)
- begrentzt mit '[' und ']'
- umfrangreiche Manipulation möglich
Beide können Werte unterschiedlicher Datentypen haben/mischen
Strings sind unveränderbare Sequenzen
- wie Tupel
%% Cell type:markdown id: tags:
### Tupel
%% Cell type:code id: tags:
``` python
mein_tupel = (44, 2, 5, 7, 8)
another_tuple = (1,3,"string", 4, (4,4), [1,2,3,4], {})
```
%% Cell type:markdown id: tags:
### Listen
%% Cell type:code id: tags:
``` python
liste = [1, 2, 5, 8, 9]
andere_liste = [1,3, "string", 4, (4,4), [1,2,3,4], {}]
```
%% Cell type:code id: tags:
``` python
andere_liste
```
%% Output
[1, 3, 'string', 4, (4, 4), [1, 2, 3, 4], {}]
%% Cell type:markdown id: tags:
### Range
mit `range(start, ende, [erhöhung])` können Sequenzen von Ganzahlen erzeugt werden. Der Aufruf der Funktion `list` verwandelt diese in eine Liste:
%% Cell type:code id: tags:
``` python
liste = range(1,10,1)
list(liste)
```
%% Output
[1, 2, 3, 4, 5, 6, 7, 8, 9]
%% Cell type:code id: tags:
``` python
liste = range(1,10,2)
list(liste)
```
%% Output
[1, 3, 5, 7, 9]
%% Cell type:markdown id: tags:
Für Gleitkommawerte steht die `arange` des mächtigen Moduls NumPy zur Verfügung. Es ist jedoch nicht Teil der Standarbibliothek und muss meist erst installiert werden
%% Cell type:code id: tags:
``` python
from numpy import arange
arange (1,10,0.2)
```
%% Output
array([1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 2.4, 2.6, 2.8, 3. , 3.2, 3.4,
3.6, 3.8, 4. , 4.2, 4.4, 4.6, 4.8, 5. , 5.2, 5.4, 5.6, 5.8, 6. ,
6.2, 6.4, 6.6, 6.8, 7. , 7.2, 7.4, 7.6, 7.8, 8. , 8.2, 8.4, 8.6,
8.8, 9. , 9.2, 9.4, 9.6, 9.8])
%% Cell type:code id: tags:
``` python
```
%% Cell type:markdown id: tags:
### Zugriff auf Elemente
%% Cell type:markdown id: tags:
Zugriff mit [index]
- Erstes Element 0
%% Cell type:code id: tags:
``` python
mein_tupel[0]
```
%% Output
44
%% Cell type:code id: tags:
``` python
liste[2]
```
%% Output
5
%% Cell type:markdown id: tags:
Slicing ('Scheiben rausschneiden'):
- Zwischen Grenzen : [untere:obere]
%% Cell type:code id: tags:
``` python
liste = [1,3, "string", 4, (4,4), [1,2,3,4], {}]
liste[1:5]
```
%% Output
[3, 'string', 4, (4, 4)]
%% Cell type:markdown id: tags:
bis Obergrenze : [:obergrenze]
%% Cell type:code id: tags:
``` python
liste[:3]
```
%% Output
[1, 3, 'string']
%% Cell type:markdown id: tags:
Beginnend von Untergrenze bis Ende der Sequenz: [untergrenze:]
%% Cell type:code id: tags:
``` python
liste[2:]
```
%% Output
['string', 4, (4, 4), [1, 2, 3, 4], {}]
%% Cell type:markdown id: tags:
### Unveränderbarkeit (immutability)
Werte in Tupeln können nicht verändert werden
%% Cell type:code id: tags:
``` python
tupel = ("one", "zwei", "trois", "quattro", "πέντε")
liste = ["one", "zwei", "trois", "quattro", "πένaτε"]
```
%% Cell type:code id: tags:
``` python
liste[1]
```
%% Output
'zwei'
%% Cell type:code id: tags:
``` python
tupel[1]
```
%% Output
'zwei'
%% Cell type:code id: tags:
``` python
liste[1] = "two"
```
%% Cell type:code id: tags:
``` python
liste
```
%% Output
['one', 'two', 'trois', 'quattro', 'πένaτε']
%% Cell type:code id: tags:
``` python
liste
```
%% Output
['one', 'two', 'trois', 'quattro', 'πένaτε']
%% Cell type:code id: tags:
``` python
tupel[1] = "two"
```
%% Output
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-53-5f9f1db812c8> in <module>
----> 1 tupel[1] = "two"
TypeError: 'tuple' object does not support item assignment
%% Cell type:markdown id: tags:
### + Plus Operator
%% Cell type:code id: tags:
``` python
liste1 = [1, 2, 3]
liste2 = ["vier", "fünf", "sechs"]
```
%% Cell type:code id: tags:
``` python
liste1 + liste2
```
%% Cell type:code id: tags:
``` python
vorname = "Erika"
nachname = "Musterfrau"
vorname + nachname
```
%% Cell type:code id: tags:
``` python
vorname + ' ' + nachname
```
%% Cell type:markdown id: tags:
### Listenoperationen
%% Cell type:markdown id: tags:
Methoden sind Funktionen die von von einer Objektinstanz aufgerufen weren können
Verfügbare Methoden können durch `dir(objekt)` oder `help(objekt)` aufgerufen werden
%% Cell type:markdown id: tags:
`append(wert)` für das Anhängen an eine Liste
%% Cell type:code id: tags:
``` python
liste = ["one", "zwei", "trois", "quattro", "πένaτε"]
```
%% Cell type:code id: tags:
``` python
liste.append("sechs")
liste
```
%% Output
['one', 'zwei', 'trois', 'quattro', 'πένaτε', 'sechs']
%% Cell type:markdown id: tags:
`reverse()` zum Umkehren der Reihenfolge
%% Cell type:code id: tags:
``` python
liste.reverse()
liste
```
%% Output
['sechs', 'πένaτε', 'quattro', 'trois', 'zwei', 'one']
%% Cell type:markdown id: tags:
`sort()` zur Sortierung (numerische, alphabetische Reihenfolge etc.). Kann mit eignen Sortierfunktionen erweiterter werden.
%% Cell type:code id: tags:
``` python
liste.sort()
liste
```
%% Output
['one', 'quattro', 'sechs', 'trois', 'zwei', 'πένaτε']
%% Cell type:markdown id: tags:
`count()` Anzahl der Elemente eines Wertes
`len` Länge der Liste
`index(wert)` Erstes Vorkommen des Elements
%% Cell type:code id: tags:
``` python
liste.count("sechs")
```
%% Output
1
%% Cell type:code id: tags:
``` python
liste.append("sechs")
liste.append("sechs")
liste.count("sechs")
```
%% Output
3
%% Cell type:code id: tags:
``` python
len(liste)
```
%% Output
8
%% Cell type:code id: tags:
``` python
liste
```
%% Output
['one', 'quattro', 'sechs', 'trois', 'zwei', 'πένaτε', 'sechs', 'sechs']
%% Cell type:code id: tags:
``` python
liste.index("sechs")
```
%% Output
2
%% Cell type:code id: tags:
``` python
help(list)
```
%% Cell type:markdown id: tags:
#### Übungsaufgabe Listen
- Erzeuge die Liste eine Wandaufbaus einer mehrschaligen Wand
- schlage die funktionen `pop` und `remove` nach und manipuliere die Liste des Wandaufbaus
- benutze die `help(liste)` Funktion oder schaue in der Dokumeknttion nach https://docs.python.org/3/tutorial/datastructures.html#more-on-lists
%% Cell type:markdown id: tags:
### Dictionaries (Schlüssel-Wert-Tabellen / Mappingtypen)
begrenztdurch `{ }`
Eine Tabelle von Schlüsseln und Werten in der Form {schluessel : wert}
- Ein Schlüssel kann jeder unveränderbare Datentyp sein
- Werte können jeglichen Datentypen haben
- einschliesslich Listen, dictionaries in beliebiger Verschachtelung
- nützlich zum
- speichern
- indizieren
- nachschlagen
%% Cell type:code id: tags:
``` python
studierende = {"name":"Erika", "familyname" : "Musterfrau", "matrikel":12345}
```
%% Cell type:markdown id: tags:
Zugriff auf Werte mit [schluessel]
%% Cell type:code id: tags:
``` python
studierende["name"]
```
%% Cell type:code id: tags:
``` python
studierende["matrikel"]
```
%% Cell type:markdown id: tags:
Alle Schlüssel durch Aufruf der Funktion `keys()`
%% Cell type:code id: tags:
``` python
studierende.keys()
```
%% Cell type:markdown id: tags:
`values()` für alle Werte
%% Cell type:code id: tags:
``` python
studierende.values()
```
%% Cell type:markdown id: tags:
`items()` für eine Liste von Schlüsseln und Werten
%% Cell type:code id: tags:
``` python
studierende.items()
```
%% Cell type:code id: tags:
``` python
paare = studierende.items()
paare
```
%% Cell type:markdown id: tags:
verwende `.get(key, defaultvalue)` wenn nicht klar ist, ob ein/der Wert existiert
%% Cell type:code id: tags:
``` python
studierende.get("name")
```
%% Cell type:code id: tags:
``` python
studierende.get("notenschnitt")
```
%% Cell type:code id: tags:
``` python
studierende.get("notenschnitt", 1.7)
```
%% Cell type:markdown id: tags:
#### Übungsaufgabe Dictionary:
- erstelle das Dictionary einer selbstmodellierten, einfachen Klasse aus der UML Aufgabe
- erzeuge drei Einträge eines Dictionaries als Teil einer Liste
%% Cell type:code id: tags:
``` python
test = "some new value"
```
%% Cell type:code id: tags:
``` python
```
......
......@@ -2,7 +2,11 @@
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"\n",
"### Python Buch mit didaktischen Kapiteln, online über die UB\n",
......@@ -45,8 +49,8 @@
},
"outputs": [],
"source": [
"wahr = True\n",
"wahr\n"
"unwahr\n",
"print(unwahr)"
]
},
{
......@@ -91,7 +95,7 @@
},
"outputs": [],
"source": [
"1 + 1 == 2"
"1 + 2 == 2"
]
},
{
......@@ -139,7 +143,7 @@
},
"outputs": [],
"source": [
"wahr = 1 + 1 == 2\n",
"wahr = 1 + 1 == 4\n",
"type(wahr)"
]
},
......@@ -158,7 +162,7 @@
},
"outputs": [],
"source": [
"verrechnet = 1 * 2 == 5\n",
"verrechnet = 1 * 5.33 > 5\n",
"verrechnet"
]
},
......@@ -204,7 +208,7 @@
"outputs": [],
"source": [
"sonne_scheint = True\n",
"es_regnet = False\n",
"es_regnet = True\n",
"sonne_scheint and es_regnet"
]
},
......@@ -299,7 +303,7 @@
},
"outputs": [],
"source": [
"if 1 + 1 == 2 : print(\"richtig\")"
"if 2 + 2 == 4 : print(\"richtig\")"
]
},
{
......@@ -317,19 +321,12 @@
},
"outputs": [],
"source": [
"if 1 - 1 != 3 : print (\"falsch\")"
"if 1 - 2 != 1 : print (\"richtig\")"
]
},
{
"cell_type": "code",
"execution_count": null,
<<<<<<< HEAD
"metadata": {},
"outputs": [],
"source": [
"Die\n",
"Ä_"
=======
"metadata": {
"attributes": {
"classes": [],
......@@ -344,7 +341,6 @@
"source": [
"wahr = 1 + 2 == 3\n",
"wahr"
>>>>>>> 0d6d35bb2de94288610e92e944a6a5237d4be891
]
},
{
......@@ -379,9 +375,12 @@
},
"outputs": [],
"source": [
"wahr = True\n",
"if wahr :\n",
" print (\"Die Aussage ist wahr\")\n",
" print (wahr)"
" print (wahr)\n",
"\n",
"print (\"nicht mehr im if Code-Block\")"
]
},
{
......@@ -412,6 +411,7 @@
},
"outputs": [],
"source": [
"wahr = True\n",
"if wahr:\n",
" print (\"richtig\")\n",
"else:\n",
......@@ -475,11 +475,15 @@
},
"outputs": [],
"source": [
"zahl = 12\n",
"if zahl <= 10:\n",
"zahl = 10\n",
"if zahl < 10:\n",
" print (\"Zahl kleiner 10\")\n",
"elif zahl == 10:\n",
" print (\"die Zahl ist exakt 10\")\n",
"elif zahl > 10 and zahl < 20:\n",
" print (\"Zahl zwischen 10 und 20\")\n",
"elif zahl > 20 and zahl < 40:\n",
" print (\"Zahl zwischen zwanzig und vierzig\")\n",
"else:\n",
" print (\"Zahl ist weder kleiner als 10, noch zwischen 10 und 20\")"
]
......@@ -538,9 +542,11 @@
},
"outputs": [],
"source": [
"liste = [1, 5, 70, 100]\n",
"liste = [1, 5, 70, 100, 44, 3334, 33, 222, 123.44, True, \"Zeichenketten\"]\n",
"\n",
"for zahl in liste:\n",
" print (zahl + 1)"
" print (f\"Der momenatane Wert der Variablen zahl beträgt: {zahl}\")\n",
"print (\"Die Schleife ist beendet\")"
]
},
{
......@@ -557,6 +563,15 @@
"können aber wie überall sonst völlig frei definiert werden."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"list(range(1,11))"
]
},
{
"cell_type": "code",
"execution_count": null,
......@@ -573,7 +588,7 @@
"outputs": [],
"source": [
"summe = 0\n",
"for i in range (1,10):\n",
"for i in range (150,160):\n",
" summe = summe + i\n",
" print(f\"i ist in diesem Durchlauf {i},\\t die Summe beträgt {summe}\")"
]
......@@ -602,7 +617,8 @@
},
"outputs": [],
"source": [
"schichten = {\"KS-Mauerwerk-innen\": 10.0, \"Mineralwolle\": 28.0, \"Luftschicht 1 cm\": 1.0, \"KS-Mauerwerk-aussen\": 12.0 }"
"schichten = {\"KS-Mauerwerk-innen\": 10.0, \"Mineralwolle\": 28.0, \"Luftschicht 1 cm\": 1.0, \"KS-Mauerwerk-aussen\": 12.0 }\n",
"schichten.keys()"
]
},
{
......@@ -695,6 +711,36 @@
"| Luftschicht 1 cm | 0.15 |"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"slideshow": {
"slide_type": "skip"
}
},
"outputs": [],
"source": [
"lambdas = {\"KS\": 0.99, \"Mineralwolle\": 0.04, \"Luftschicht 1 cm\" : 0.15}\n",
"r_gesamt = 0\n",
"for schicht, dicke in schichten.items():\n",
" l = 0\n",
" if schicht.find(\"KS\") > -1:\n",
" l = lambdas[\"KS\"]\n",
" elif schicht.find(\"Mineralwolle\") > -1:\n",
" l = lambdas[schicht]\n",
" elif schicht.find(\"Luftschicht 1 cm\") > -1:\n",
" l = 0.15\n",
" r = dicke / l / 100\n",
" r_gesamt = r_gesamt + r \n",
" print (f\"{schicht} \\t: {dicke:<3} \\t lambda: {l}, R={r}\" )\n",
"print(f\"R-Gesamt : {r_gesamt}\")\n",
"U = 1/(0.13+r_gesamt+0.04) \n",
"U\n",
" \n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {
......@@ -729,6 +775,7 @@
"while zahl < 10:\n",
" zahl = zahl + 2\n",
" print (zahl)\n",
" \n",
"print(\"Schleife beendet, Bedingung nicht mehr erfüllt\")"
]
},
......@@ -819,7 +866,7 @@
"metadata": {
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3",
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
......@@ -833,7 +880,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.8"
"version": "3.8.8"
}
},
"nbformat": 4,
......
This diff is collapsed.
%% Cell type:markdown id: tags:
# bim-programming
--- English below ---
Diese Sammlung von Jupyter Notebooks soll Studierenden der Architektur, des Städtebaus under ander Disziplinen der Gebauten Umgebung eine Einstieg in die strukturierte Informationsverarbeitung ergmöglichen. Die Sammulung wird ständig erweitert.
Ein erster Einstieg in die Programmierung mit der Sprache Python findet sich im Ordner
[00_Python](00_Python/00_Hallo_Python.ipynb)
[00_Python](00_Python_intro/00_Hallo_Python.ipynb)
Ein Einstieg in die Programmierung mit domänenspezifischer Information und Modellen in
[01_IFC](01_IFC/HelloIfcDisplay.ipynb).
### English
Collection of Jupyter Notebooks for the introduction of programming Building Information Models (BIM) in python
For the English Versions, please use the notebooks in the [03_IFC](./03_Python_intro_EN/00_introduction.ipynb).
The notebooks are used in the Bachelor track of the architecure curriculum at the RWTH Aachen and are licensed under MIT license as Open Educational Resources (OER)
Design Compuation Group RWTH Aachen
%% Cell type:code id: tags:
``` python
!pip install RISE
```
%% Output
Collecting RISE
Downloading rise-5.7.1-py2.py3-none-any.whl (4.3 MB)
 |████████████████████████████████| 4.3 MB 14.3 MB/s eta 0:00:01
[?25hRequirement already satisfied: notebook>=6.0 in /opt/conda/lib/python3.7/site-packages (from RISE) (6.0.3)
Requirement already satisfied: traitlets>=4.2.1 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (4.3.3)
Requirement already satisfied: jupyter-client>=5.3.4 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (6.1.3)
Requirement already satisfied: terminado>=0.8.1 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (0.8.3)
Requirement already satisfied: jinja2 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (2.11.2)
Requirement already satisfied: pyzmq>=17 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (19.0.0)
Requirement already satisfied: ipython-genutils in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (0.2.0)
Requirement already satisfied: jupyter-core>=4.6.1 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (4.6.3)
Requirement already satisfied: nbconvert in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (5.6.1)
Requirement already satisfied: ipykernel in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (5.2.0)
Requirement already satisfied: nbformat in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (5.0.6)
Requirement already satisfied: Send2Trash in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (1.5.0)
Requirement already satisfied: tornado>=5.0 in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (6.0.4)
Requirement already satisfied: prometheus-client in /opt/conda/lib/python3.7/site-packages (from notebook>=6.0->RISE) (0.7.1)
Requirement already satisfied: decorator in /opt/conda/lib/python3.7/site-packages (from traitlets>=4.2.1->notebook>=6.0->RISE) (4.4.2)
Requirement already satisfied: six in /opt/conda/lib/python3.7/site-packages (from traitlets>=4.2.1->notebook>=6.0->RISE) (1.14.0)
Requirement already satisfied: python-dateutil>=2.1 in /opt/conda/lib/python3.7/site-packages (from jupyter-client>=5.3.4->notebook>=6.0->RISE) (2.8.1)
Requirement already satisfied: MarkupSafe>=0.23 in /opt/conda/lib/python3.7/site-packages (from jinja2->notebook>=6.0->RISE) (1.1.1)
Requirement already satisfied: bleach in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (3.1.4)
Requirement already satisfied: pandocfilters>=1.4.1 in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (1.4.2)
Requirement already satisfied: testpath in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (0.4.4)
Requirement already satisfied: defusedxml in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (0.6.0)
Requirement already satisfied: entrypoints>=0.2.2 in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (0.3)
Requirement already satisfied: pygments in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (2.6.1)
Requirement already satisfied: mistune<2,>=0.8.1 in /opt/conda/lib/python3.7/site-packages (from nbconvert->notebook>=6.0->RISE) (0.8.4)
Requirement already satisfied: ipython>=5.0.0 in /opt/conda/lib/python3.7/site-packages (from ipykernel->notebook>=6.0->RISE) (7.13.0)
Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /opt/conda/lib/python3.7/site-packages (from nbformat->notebook>=6.0->RISE) (3.2.0)
Requirement already satisfied: webencodings in /opt/conda/lib/python3.7/site-packages (from bleach->nbconvert->notebook>=6.0->RISE) (0.5.1)
Requirement already satisfied: pickleshare in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.7.5)
Requirement already satisfied: setuptools>=18.5 in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (46.1.3.post20200325)
Requirement already satisfied: backcall in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.1.0)
Requirement already satisfied: jedi>=0.10 in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.17.0)
Requirement already satisfied: pexpect; sys_platform != "win32" in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (4.8.0)
Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /opt/conda/lib/python3.7/site-packages (from ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (3.0.5)
Requirement already satisfied: attrs>=17.4.0 in /opt/conda/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat->notebook>=6.0->RISE) (19.3.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /opt/conda/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat->notebook>=6.0->RISE) (0.16.0)
Requirement already satisfied: importlib-metadata; python_version < "3.8" in /opt/conda/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat->notebook>=6.0->RISE) (1.6.0)
Requirement already satisfied: parso>=0.7.0 in /opt/conda/lib/python3.7/site-packages (from jedi>=0.10->ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.7.0)
Requirement already satisfied: ptyprocess>=0.5 in /opt/conda/lib/python3.7/site-packages (from pexpect; sys_platform != "win32"->ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.6.0)
Requirement already satisfied: wcwidth in /opt/conda/lib/python3.7/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=5.0.0->ipykernel->notebook>=6.0->RISE) (0.1.9)
Requirement already satisfied: zipp>=0.5 in /opt/conda/lib/python3.7/site-packages (from importlib-metadata; python_version < "3.8"->jsonschema!=2.5.0,>=2.4->nbformat->notebook>=6.0->RISE) (3.1.0)
Installing collected packages: RISE
Successfully installed RISE-5.7.1
%% Cell type:code id: tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment