Einstieg auf openSUSE

  • python3 installieren, falls nicht schon vorhanden.

Achtung 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)

  • 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

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

Siehe auch print, format (python-kurs.eu)

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, ...
Tipp 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'

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:

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

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)

Dateien

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:

GUI