Einstieg auf openSUSE
-
python3 installieren, falls nicht schon vorhanden.
Gebe python --version ein. Wenn die Ausgabe nicht mit 3 beginnt, dann füge folgende Zeile ans Ende deiner ~/.bashrc ein: alias python=python3 |
-
Optional: Offline-Doku installieren: sudo zypper install python3-doc (bei Bedarf auch python3-doc-pdf)
-
Die Doku ist dann hier lokal verfügbar: file:///usr/share/doc/packages/python3/html/index.html
-
Ansonsten ist die Doku auch online zu finden: https://docs.python.org/3/
-
-
kate-Texteditor installieren und verschiedene Plugins aktivieren, unter anderem das Terminal-Plugin.
-
Speichern: Strg+S
-
Tools → Shortcuts → Focus Terminal: F4
-
Auskommentieren: Strg+D
-
Einkommentieren: Strg+Umschalt+D
-
Zeile nach oben/unten verschieben: Strg+Umschalt+Cursor hoch/runter
-
Zeile nach oben/unten kopieren: Strg+Alt+Cursor hoch/runter
-
-
Python-Shell (python-kurs.eu)
-
Ausloggen mit Strg+D
-
-
Interaktive Hilfe
-
Scripts ausführen und eingebaute Hilfe (python-kurs.eu)
-
help, type
-
ipython: ?, ??
-
objekt. TAB TAB
-
Basiswissen
Aufbau py-Datei
test1.py:
#!/usr/bin/python3 # -*- coding: utf-8 -*- """ Dieses Programm gibt "Hallo Welt" aus. """ print("Hallo Welt")
Datei ausführbar machen:
chmod +x test1.py
Script ausführen:
./test1.py
Alternativ test2.py:
""" Dieses Programm gibt "Hallo Welt" aus. """ print("Hallo Welt")
Script ausführen:
python3 test1.py
Ausgabe
Ausgabe auf der Konsole.
# Befehl Ausgabe # ---------------------------------------------- print("Hallo") # Hallo print("Hallo {}.".format("Welt")) # Hallo Welt. print("Hallo ", end='') # kein Zeilenumbruch am Ende print("Welt") # Hallo Welt
Variablen
string1 = "Hallo" string2 = "Welt" zahl1 = 24 print("{} {}. Der Tag hat {} Stunden.".format(string1, string2, zahl1)) # Hallo Welt. Der Tag hat 24 Stunden. # Oder: print(string1 + " " + string2 + ". Der Tag hat " + str(zahl1) + " Stunden.") # Hallo Welt. Der Tag hat 24 Stunden.
Siehe auch Datentypen und Variablen (python-kurs.eu)
Eingabe
Eingabe von der Konsole.
eingabe1 = input("Bitte geben Sie Ihren Namen ein: ") eingabe2 = input("Hallo {}. Wie geht es Ihnen? ".format(eingabe1)) print("Schön, dass es Ihnen {} geht, {}.".format(eingabe2, eingabe1)) e3s = input("Ganzzahl eingeben (z. B. 15): ") type(e3s) # <class 'str'> e3 = int(e3s) type(e3) # <class 'int'> e4s = input("Fließkommazahl eingeben (z. B. 13.45): ") type(e4s) # <class 'str'> e4 = float(e4s) type(e4) # <class 'float'> print("{} + {} = {}".format(e3, e4, e3 + e4)) print("{} - {} = {}".format(e3, e4, e3 - e4))
Siehe auch Eingabe (python-kurs.eu)
Programm vorzeitig beenden
# Beispiel: if a == b: exit(0) # Beenden mit Exit-Code 0, wenn a == b print("Hallo und Tschüß") # Letzter Befehl => Reguläres Beenden mit Exit-Code 0
Kommandozeilen-Argumente
args.py:
#!/usr/bin/python3 import sys print("Anzahl der Argumente: {0}".format(len(sys.argv))) print("Argument-Liste: {0}".format(sys.argv))
args.py auf der Konsole ausführen:
$ ./args.py Hallo Test Anzahl der Argumente: 3 Argument-Liste: ['./args.py', 'Hallo', 'Test']
Rechenoperatoren
30 + 1 # = 31 30 - 2 # = 28 30 / 2 # = 15 30 * 2 # = 60 2 ** 4 # = 2 hoch 4 = 2 * 2 * 2 * 2 = 16 a = 30 a += 1 # a == 31
Siehe auch Operatoren (python-kurs.eu)
Vergleichs- und Logikoperationen
False or False # = False False or True # = True True or False # = True True or True # = True False and False # = False False and True # = False True and False # = False True and True # = True not False # = True not True # = False 1 < 2 # = True 2 < 2 # = False 1 <= 2 # = True 1 > 2 # = False 1 == 1 # = True 1 != 2 # = True print("Ist 1 == 2? {}".format(1 == 2)) # Ist 1 == 2? False
Siehe auch Operatoren (python-kurs.eu)
if-Anweisung
x = int(input("x: ")) y = int(input("y: ")) if x > y: print("x ist größer als y") if x > y: print("x ist größer als y") else: print("x ist kleiner als y oder gleich") if x > y: print("x ist größer als y") elif x == y: print("x ist gleich y") else: print("x ist kleiner als y")
Siehe auch Bedingte Anweisung, Blöcke durch Einrückung (python-kurs.eu)
while-Schleife
i = 0 while i < 5: print(i) i += 1 # Ausgabe: 0, 1, 2, 3, 4
# Unendlich-Schleife: i = 0 while True: print(i) i += 1 # Ausgabe: 0, 1, 2, 3, 4, 5, 6, 7, ...
Unterbrechen mit Strg+C. |
# break i = 0 while True: print(i) if i == 4: break # Vorzeitiger Abbruch i += 1 # Ausgabe: 0, 1, 2, 3, 4
# continue i = 0 while i < 5: if i == 1 or i == 3: i += 1 continue # Rest des Schleifenblockes überspringen print(i) i += 1 # Ausgabe: 0, 2, 4
Siehe auch Schleifen (python-kurs.eu)
Funkionen / Subroutinen
def meine_funktion(): print("Hallo") print("Test") meine_funktion() # Hallo # Test def print_plus(a, b): ergebnis = a + b print("a + b = {}".format(ergebnis)) print_plus(10, 5) # a + b = 15 def my_plus(a, b): return a + b print(my_plus(10, 5)) # 15
Siehe auch Funktionen (python-kurs.eu)
String-Funktionen
s = "Hallo Welt" len(s) # 10 s.lower() # "hallo welt" s.upper() # "HALLO WELT" " string with space ".strip() # "string with space" ord('A') # 65 ord('B') # 66 chr(65) # 'A' chr(97) # 'a'
Warum diese Zahlen bei ord und chr? Siehe https://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange#ASCII-Tabelle
Zufallszahlen
import random z = random.randint(0, 100) print("Eine Zufallszahl zwischen 0 und 100: {}".format(z)) # Die Endpunkte sind inbegriffen. # Siehe >>> help(random.randint)
Mathematik
import math phi = 0 phi = 2 * math.pi s = math.sin(phi) s = math.cos(phi) round(s) math.sqrt(x) # Wurzel aus x x**2 # x zum Quadrat
Listen
liste1 = [ 1, 10, 15, 140 ] len(liste1) # 4 liste1[0] # 1 liste1[1] # 10 liste1[2] # 15 liste1[3] # 140 liste1[4] # IndexError: list index out of range for elem in liste1: print(elem) a = 5 if a in liste1: print("{0} ist in der Liste enthalten.") 1 in liste1 # True 3 in liste1 # False 1 not in liste1 # False 3 not in liste1 # True
Gerade oder ungerade
0 % 2 # 0 1 % 2 # 1 2 % 2 # 0 3 % 2 # 1 4 % 2 # 0 if z % 2 == 0: print("gerade") else: print("ungerade")
Ausnahmebehandlung
try: zahl = int(input("Gebe eine Zahl ein: ")) print("Die Zahl ist: {}".format(zahl)) except ValueError: print("Fehler beim Umwandeln der Eingabe in eine Zahl.")
oder:
try: zahl = int(input("Gebe eine Zahl ein: ")) print("Die Zahl ist: {}".format(zahl)) except KeyboardInterrupt: raise except: print("Fehler beim Umwandeln der Eingabe in eine Zahl.")
Siehe auch:
-
Fehlerbehandlung und Ausnahmebehandlung (python-kurs.eu) (try, except, finally, else, assert).
sleep
import time print("Warte 2 Sekunden") time.sleep(2) print("Warte 10 Millisekunden") time.sleep(0.01)
Erweitert
Matrix (2D-Array)
# # Matrix / "2-Dimensionale Arrays": # # Methode 1 # (http://stackoverflow.com/questions/6667201/how-to-define-two-dimensional-array-in-python) # # Herleitung: print([ i for i in range(5) ]) # [0, 1, 2, 3, 4] print([ i + 5 for i in range(5) ]) # [5, 6, 7, 8, 9] print([ 0 for i in range(5) ]) # [0, 0, 0, 0, 0] print([ i for i in range(5) ] * 3) # [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4] print([ [ i for i in range(5) ] for i in range(3) ]) # [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4] # Definition einer mxn-Matrix # siehe https://de.wikipedia.org/wiki/Matrix_%28Mathematik%29 # m Zeilen, n Spalten # 3x5-Matrix (3 Zeilen, 5 Spalten) matrix = [ [ 0 for i in range(5) ] for i in range(3) ] # n m print(matrix) # [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] # oder anders formatiert: # [ [0, 0, 0, 0, 0], # [0, 0, 0, 0, 0], # [0, 0, 0, 0, 0] ] for y in range(3): for x in range(5): matrix[y][x] = y * 10 + x print(matrix) # [[0, 1, 2, 3, 4], [10, 11, 12, 13, 14], [20, 21, 22, 23, 24]] # oder anders formatiert: # [ [ 0, 1, 2, 3, 4], # [10, 11, 12, 13, 14], # [20, 21, 22, 23, 24] ] print(matrix[1][2]) # 12 # Methode 2 # (/usr/share/doc/packages/python3-qt5-devel/examples/widgets/tetrix.py) # m = 3 n = 5 # 3x5-Matrix (3 Zeilen, 5 Spalten) matrix = [ 0 for i in range(m * n) ] print(matrix) # [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for y in range(m): for x in range(n): matrix[y * n + x] = y * 10 + x print(matrix) # [0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24] # oder anders formatiert: # [ 0, 1, 2, 3, 4, # 10, 11, 12, 13, 14, # 20, 21, 22, 23, 24] print(matrix[1 * n + 2]) # 12
Sequentielle Datentypen / Listen (2)
-
http://www.python-kurs.eu/python3_sequentielle_datentypen.php
-
Listen ändern: http://www.python-kurs.eu/python3_listen.php
-
Flaches und tiefes Kopieren: http://www.python-kurs.eu/python3_deep_copy.php
-
Dictionaries: http://www.python-kurs.eu/python3_dictionaries.php
-
Sortieren: sorted([ 5, 3, 7, 4 ]) # -> [ 3, 4, 5, 7 ], siehe auch Arbeitsblatt "Sortieren"
for-Schleife
-
"while" vs. "for mit range": code/rangetest.py
-
Zugriff auf Schleifenindex mit enumerate, siehe PEP 279
-
How can I iterate through two lists in parallel in Python? mit zip
while-Schleife (2)
# else-Zweig while True: print("S") break else: print("E") print("Z") # Ausgabe: # S # Z while False: print("S") break else: print("E") print("Z") # Ausgabe: # E # Z
Funktionen (2)
-
http://www.python-kurs.eu/python3_funktionen.php
-
optionale Parameter
-
Docstring
-
Schlüsselwortparameter
-
Rückgabewerte
-
Lokale und globale Variablen in Funktionen
-
Beliebige Anzahl von Parametern
-
-
Parameter: http://www.python-kurs.eu/python3_parameter.php
-
inkl. Übung
-
-
Globale und Lokale Variablen: http://www.python-kurs.eu/python3_global_lokal.php
-
Rekursion und rekursive Funktionen: http://www.python-kurs.eu/python3_rekursive_funktionen.php
-
mit Vergleich zu iterativem Ansatz
-
inkl. Übungen
-
-
Memoisation und Dekorateure: http://www.python-kurs.eu/python3_memoisation.php
Dateien
-
siehe http://www.python-kurs.eu/python3_dateien.php
-
ABER: mit with-Anweisung!
-
-
pickle und shelve: http://www.python-kurs.eu/python3_dateien.php
-
zypper install python3-dbm
-
OOP
Objekt-Orientierte Programmierung:
Beispiele:
class Punkt: """Eine Punkt-Klasse""" # nicht gut, siehe https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables class_constants = [ 3.141 ] def __init__(self, x, y): self.x = x self.y = y self.constants = [ 3.141 ] def print(self): print("Punkt ({}, {}) and class_constants = {}, constants = {}".format( self.x, self.y, self.class_constants, self.constants)) p1 = Punkt(1, 2) p2 = Punkt(3, 4) p1.print() # Punkt (1, 2) and class_constants = [3.141], constants = [3.141] p2.print() # Punkt (3, 4) and class_constants = [3.141], constants = [3.141] p1.x = 5 p1.class_constants.append(10) p1.constants.append(20) p1.print() # Punkt (5, 2) and class_constants = [3.141, 10], constants = [3.141, 20] p2.print() # Punkt (3, 4) and class_constants = [3.141, 10], constants = [3.141]
Properties:
Link-Liste
Sprachelemente
-
Grundlegende Befehle und Operatoren
-
Befehle fuer Sequenz-Typen (Listen etc.)
-
Introspektion