/media/sda-magnetic/david/Dokumente-16-2024-08-01/informatikUmathematik/literatur20240804/literatur20240804v01.txt


Python Skript

Clelia Albrecht,
Felix Boes,
Johannes Holke


Python ist ja ganz nett, aber ist C++ nicht besser und
überhaupt, was soll dieses Einrücken?
Guido von Rossum

2.) Das Python Datenmodell
3.) Crashkurs
4.) einige Standarddatentypen
5.) Namespacing
6.) Funktionen
7.) Klassen
8.) Ausnahmen
9.) Module


Anmerkung: Namespacing = Namensraum, Variable
1.) Datentyp
2.) Addresse
3.) Wert
4.) Name
II.) Block, Funktion
=> Wo gilt der Name einer Funktion

Namensraum = Namespacing

Standarddatentypen
1.) Zahlen
2.) bool
3.) Sequenzen
4.) None
5.) Dateien
6.) Mengen
7.) Verzeichnisse

Sequenzen:
1.) Gemeinsamkeiten
2.) Oberflaechliche und tiefe Kopien
3.) tuple
4.) list
5.) range
6.) list comprehension
7.) str


2.) Das Python Datenmodell
3.) Crashkurs
4.) einige Standarddatentypen
5.) Namespacing
6.) Funktionen
7.) Klassen
8.) Ausnahmen
9.) Module

Standarddatentypen
1.) Zahlen
2.) bool
3.) Sequenzen
4.) None
5.) Dateien
6.) Mengen
7.) Verzeichnisse

Sequenzen:
1.) Gemeinsamkeiten
2.) Oberflaechliche und tiefe Kopien
3.) tuple
4.) list
5.) range
6.) list comprehension
7.) str

Mengen:
1.) Mengen erzeugen
2.) Operationen fuer set und frozenset
3.) Operationen fuer set

Wissenschaftliche Programmierung
1.) C++
2.) Python

Ueberschaubare Standardbibliothek

Module und Bibliotheken

Die awesome Effizienzmatrix

nicht kompiliert, interpretiert

Python
Python3
Pyta

Python Datenmodell

Python Datenmodell nicht so einfach zu erfassen wie von C++

Python
1.) Objekte
2.) Variablen

Objekte
1.) Identitaet
2.) Typ
3.) Wert

Identitaet eines Objekts aendert sich nie

Objekt, entweder
1.) mutable
2.) immutable

In C C++ sind alle Objekte mutable, ausser mit dem Praefix const

Mehrfach wiederholen, in Python haben Variablen keinen Typ

Garbage Collector

Kommetare: # Gartenzaun

print

python2
python3

python2: print a, b
python3: print (a,b)

Typ und Identitaet

Identitaet eines Objekts bestimmen: id (x)
Typ eines Objekts bestimmen: type (x)

id (x), liefert string kann mit print ausgegeben werden

Zahlen, Python, Zahlentypen
1.) int
2.) long
3.) float
4.) complex

Strings
' oder "

Python strings immutable, d.h. koennen nicht veraendert werden

Bedingungen

Objekte
    True
    False
    vom Typ bool

konsistente Einrueckungen

if x == 42:
    print ("A")
elif x == 84:
    print ("B")
elif x == 106:
    print ("C")
else:
    print ("D")

if elif else

Listen
Containertypen

thor = [2, "hallo", 33.3, "Welt", []]
print (thor [0], thor [-1])

Laenge einer Liste: len (thor)
Listen sind mutable,
thor.append (x) erweitert die Liste thor um x

thor+asgard verknuepft zwei Listen



For Schleife

for i in s:
    ausdruck

s: Liste

sum = 0
for in range (1,5):
    sum += 3*i
print (sum)

sum = 0
for i in range (1,15,3):
    sum += i
print (sum)


Funktionen

def funktionsname (parameter):
    ausdruck

Die Beschreibung einer Funktion kann mit
    help (f)
    abgerufen werden

Kein definierbarer Rueckgabetyp anders als in C und C++

mit Return koennen kein, ein oder mehrere Objekte zurueckgegeben werden

Kein Objekt zurueckgegeben: None

Rueckgabetyp: type (x)

Mehrere: mit tuple zusammengefasst

tuple

tuple, liste die nicht geaendert werden kann

def f (i):
    if i == 1:
        return 1
    elif i == 2:
        return "Hallo", 44

Module
Python maechtig durch Module

Module: Shared Library

Abbildung: "Python" by Randall Munroe

import modulname

Alle:
    Klassen
    Funktionen
    Objekte

lassen sich ueber
    modulname.objektname
erreichen

import math
print (math.sin(math.pi / 3.0))

Nur bestimmte Objekte einbinden

from modulname import oname1, oname2

from math import sin, cos, pi

Standarddatentypen
1.) Funktionen
2.) Klassen
3.) Module

Zahlen
    int
    bool
    float
    complex

Objekte dieses Typs sind immutable

bool
    True
    False

Sequenzen:
    Container

Wichtigste Sequenztypen:
    list
    tuple
    str

a = [x, y, z]
a = (x, y, z)
a = "xyz"

Um zu ueberpruefen ob der Wert x mindestens ein Mal in a vorkommt oder nicht gibt es folgende Operationen:
    x in a
    x not in a

Boolean


    list
    tuple
    str

Container desselben Typs aneinander heften

a + b
n * a

n * a bedeutet man heftet a n mal aneinander

thor = n*[0]

Teilsequenz:
    b = a[i:j]

Teilsequenzen: Oberflaechliche Kopien

    Oberflaechliche Kopie
    Tiefe Kopie

Tiefe Kopie: copy verwenden

vekt_lst = [[0,1], [2,3]], [5,1]]

tuple is immutable

weder eintraege veraenderbar
noch laenge

doppeltupelfkt

list

insert
append
pop
push
remove

clear
copy

reverse
sort

a.insert (i, x)     # Fuege x hinter a [i] ein
a.append (x)
x = a.pop ()
a.remove (x)        # Entferne die erste Variable mit dem Wert x
a.clear ()          # Entfernt alle Elemente
a.copy ()           # Erstellt oberflaechliche Kopie
a.reverse ()        # Kehrt a um
a.sort ()           # Sortiert a, falls moeglich