Python Programmierung

Inhaltsverzeichnis

    Struktur des Python Codes

    • Zeilenende wird durch Zeilenumbruch gekennzeichnet
    • Soll eine Anweisung über mehrere Zeilen gehen (beispielsweise weil der Code sonst sehr lang und unlesbar wird), können Sie einen Backslash \ am Ende der Zeile einfügen. Der Zeilenumbruch wird dann nicht als solcher interpretiert.
    • Ein Block wird durch Einrückung gebildet.

    Hilfsfunktionen

    FunktionBeschreibung

    type(x)

    Zeigt den Typ vom x-Wert an

    dir(x)

    Zeigt mögliche Funktionen vom x-Typ an

    help(x)

    Zeigt eine Hilfe zum x-Typ an. (Achtung: case-sensitiv)

    Beispiele: Help(vtcapp)

    Help(vtcapp.getwithsql)

    Help(vtcforms.CheckBox.Items)

    print 'text'

    Gibt den Text im Debugfenster aus.

    int(x) Umwandlung in Integer
    float(x) Umwandlung in Float
    str(x) Umwandlung in String

    Blöcke

    In Python werden Blöcke durch Einrücken gebildet. Das heisst, alle Zeilen, die zur selben Ebene gehören, müssen gleich weit eingerückt sein (auf Tabs achten):

    if x ==1:
    y = 2

    Wenn ein Block (noch) keinen Code enthält, muss ein "pass" als Platzhalter gesetzt werden.

    if x == 1:
    pass

    Vergleiche

    <

    kleiner als

    <=

    kleiner oder gleich

    >

    grösser als

    >=

    grösser oder gleich

    ==

    gleich

    !=

    nicht gleich

    < >

    nicht gleich

    is

    identisch

    is not

    nicht identisch

    x in s

    x vorhanden in Liste s

    x not in s

    x nicht vorhanden in Liste s

    Weitere Informationen

    http://docs.python.org/library/stdtypes.html#comparisons

    Strings

    Definieren von Strings

    In Python gibt es drei Möglichkeiten, Strings zu definieren:

    • 'String'
    • "String"
    • """String"""

    Der String muss mit demselben Zeichen geschlossen werden, mit dem er geöffnet wird. Dreifachstrings(""") können beliebig viele Zeilen umfassen (z.b. Formulardefinitionen oder , während einfache und doppelte Strings jeweils eine Zeile Umfassen können:

    Einzeilig

    'string1' oder "string1"

    Mehrzeilig

    """zeile1

    zeile2

    zeile3"""

    Formatieren von Strings

    Im String werden die Platzhalter mit einem % und dem entsprechenden Typ (String, Integer, Float) definiert. Am Schluss werden die Werte für die Platzhalter in einem Tuple nach dem %-Zeichen übergeben:

    "Hallo, mein Name ist %s und ich bin %i Jahre alt." % ("Tobias", 18)

    Diese Variante in Python ist sehr übersichtlich, da alle Variablen am Schluss angegeben werden. Der String wird vollständig dargestellt und wird nicht getrennt durch Sonderzeichen wie [+, &].

    Möchte man mehrzeiligen Text ausgeben, beispielsweise eine Adresse, kann mit \n ein Zeilenumbruch eingefügt werden.

    PlatzhalterTyp

    %s

    Stringwert

    %i

    Integerwert

    %f

    Floatwert

    Teilstrings

    Ein String wird in Python wie eine Liste behandelt. Die einzelnen Zeichen können iteriert werden.

    a[0:]

    Teilstring von a: ab 1. Zeichen... alle Zeichen

    a[0:2]

    Teilstring von a: ab 1. Zeichen... 2 Zeichen

    a[3:len(a)-1]

    Teilstring von a: ab 4. Zeichen... bis vorletztes Zeichen

    a[:5]

    Teilstring von a: die ersten 5 Zeichen

    a[-1]

    Letzter Eintrag der Liste

    a + " test"

    Zeichenkette anhängen

    Wichtige Stringfunktionen

    FunktionBeschreibung

    len(a)

    Die Länge eines Strings.

    a.strip()

    Entfernt alle Leerzeichen links und rechts der Zeichenkette.

    a.lower()

    Zeichen in Kleinbuchstaben umwandeln

    a.upper()

    Zeichen in Grossbuchstaben umwandeln

    a.isdigit()

    Überprüft ob der String eine Zahl ist. Wenn True, dann ist eine Umwandlung möglich.

    a.replace('1', '2')

    Suchen, Ersetzen. Rückgabewert ist die geänderte Zeichenkette.

    a.split(',')

    Trennt die Zeichenkette mit dem angegebenen Separator und gibt eine Liste zurück.

    a.find('eile')

    Sucht den Teilstring in der Zeichenkette. Gibt den Index zurück, falls gefunden. Sonst –1

    a.index('eile')

    Sucht den Teilstring in der Zeichenkette. Gibt den Index zurück, falls gefunden. Sonst ValueError. Sinnvoll in einem Try...except.

    a.translate()

    Übersetzt den String

    Alle verfügbaren Stringfunktionen erhalten Sie mit dem Befehl:

    help(str)

    Weitere Informationen

    http://docs.python.org/library/stdtypes.html#string-methods

    http://docs.python.org/library/stdtypes.html#string-formatting-operations

    Zahlen

    Zahlenwerte initialisieren

    Je nachdem, wie ein Wert initialisiert wird, erhält er einen bestimmten Datentyp. So wird die Initialisierung a = 5 als Integer interpretiert. Möchten Sie die Zahl als Floatwert initialisieren, müssen Sie stattdessen a = 5.0 angeben.

    InitialisierungDatentyp des Werts

    a = 5

    Integer

    a = 5.0

    Float

    a = 4.35

    Float

    Informationen zu den verschiedenen Zahlenformaten erhalten Sie mit der Hilfsfunktion help:

    • help(int)
    • help(float)

    Operationen mit Zahlen

    OperationBeschreibung

    a + 6

    Addieren

    a - 2

    Subtrahieren

    a * 10

    Multiplikation

    a / 10

    Division

    10.0 // 10

    Division -> integer

    pow(a, 2)
    a ** 2

    Potenz

    5 % 2

    Modular

    Bei einer Operation mit Integer-Werten erhält man als Resultat einen Integer Wert:

    10 / 4 = 2 (Integerwert von 2.5)

    Die gleiche Operation mit einem Float-Wert gibt folgendes Resultat:

    10.0 / 4 = 2.5

    oder

    float(10) / 4 = 2.5

    Das bedeutet: Ist einer der Werte ein Float, wird das Resultat immer als Float ausgegeben:

    1.5 * 7 = 10.5

    1.5 * 6 = 9.0 (Floatwert von 9)

    Zahlen formatieren

    Die Zahlendarstellung als String wird wie folgt formatiert:

    '%06.2f'
    • % - Zeichen für Stringformatierung
    • 0 - Präfix ist 0
    • 6 – Länge der Zahl
    • 2 – Anzahl Dezimalstellen
    • f  – Float

    Beispiel

    '%010.2f' % 555.3

    Resultat: 0000555.30

    Weitere Informationen

    http://docs.python.org/library/stdtypes.html#numeric-types-int-float-long-complex

    Sammeltypen in Python

    In Python gibt es 3 verschiedene Sammeltypen.

    Liste

    Die gewöhnliche Liste. Eine Sammlung von Elementen aus verschiedenen Typen.

    liste = []

    liste = [1,2,3]

    liste = ["a", 2, obj]

    Tuple

    Ein Tuple ist eine Variable aus mehreren Werten. Das Tuple ist nicht veränderbar. Sozusagen eine konstante Liste.

    Tuples werden beispielsweise für Koordinatenzahlen verwendet, wobei ein Tuple einem Datenpunkt entspricht.

    Datenpunkt1 = (5,1)

    Datenpunkte = [(1,1),(2,2),(3,3)]       # List of Tuple's

    Monate = ("Jan", "Feb", "Mär", "Apr", "Mai", "Jun", ...)

    Dictionary

    Ein Dictionary ist eine Sammlung von Daten, welche den Wert und einen eindeutigen Schlüssel speichern.

    Kantone = {"ZH": "Zürich", "ZG": "Zug"}

    Wochentage = {1: "Mo", 2: "Di", 3: "Mi", 4: "Do", 5: "Fr"}

    Der erste Teil ist der Schlüssel und muss eindeutig sein.

    Wichtige Listenfunktionen

    FunktionBeschreibung

    append(x)

    Element [x] hinzufügen

    insert(idx, x)

    Element [x] an einer Position [idx] hinzufügen

    remove(x)

    Element [x] entfernen

    reverse()

    Reihenfolge der Elemente in der Liste umkehren.

    pop([x])

    Gibt das x-te Element aus der Liste zurück und entfernt es gleich. Kann zusammen mit einer While-Schleife gut verwendet werden, um in einer Liste zu iterieren.

    pop() ohne Parameter gibt das letzte Element in der Liste zurück.

    While Len(liste)>0:
    print pop()

    ist gleich wie

    for eintrag in liste:
    print eintrag
    del eintrag

    index(x)

    Gibt den Index von Element [x] zurück, falls vorhanden. Ansonsten wird ein ValueError zurückgegeben. Diese Funktion kann auch für Strings verwendet werden.

    'abc'.index('c')

    Resultat: 2

    count(x)

    Gibt die Anzahl an, wie oft Element [x] in der Liste vorkommt. Diese Funktion kann auch für Strings verwendet werden.

    'Hallo, mein Name ist Hans und ich lerne Python.'.count(' ')

    Resultat: 8

    xrange

    xrange gibt eine Zahlenliste zurück, die vor allem in for-Schleifen verwendet wird.

    xrange(from, to, [step])

    Beispiele von Zahlenlisten:

    xrange(1,3)

    • Resultat: [1,2]

    xrange(0,10,2)

    • Resultat: [0,2,4,6,8]

    xrange(1,12,3)

    • Resultat: [1,4,7,10]

    Weitere Informationen

    http://docs.python.org/library/stdtypes.html#sequence-types-str-unicode-list-tuple-buffer-xrange

    Schleifen in Python

    In Python gibt es die if-Abfrage, die for-Schleife und die while-Schleife.

    if-Abfrage

    if <Abfrage>:
    <do>
    elif <Abfrage>:
    <do>
    else:
    <do>

    Beispiel

    zahlen = [1,2,3]
    if 1 in zahlen:
    print '1 vorhanden.'
    else:
    print 'nicht vorhanden.'

    for-Schleife

    for <variable> in <liste> :
    <do>

    Die For-Schleife in Python kennt den Anfang und das Ende durch die Einrückung und braucht deshalb kein Next.

    Beispiel

    projektListe = vtcapp.evalocl("projekt->orderby(code)")
    for projekt in projektListe:
    print projekt.code  # Members werden mit Punkt angesprochen.

    Zahlenbeispiel

    for i in xrange(1,11):
    print str(i)  # Zahlen von 1-10

    while-Schleife

    while <Abfrage>:
    <do>

    Beispiel

    While True:
    eingabe = vtcapp.inputbox('Zahl eingeben', 'Zahl von 1-10')
    if eingabe.isdigit():
    if int(eingabe)>=1 and int(eingabe)<=10:
    print eingabe
    break # Springt aus der Schleife raus
    else:
    print 'Die Zahl muss zwischen 1 und 10 liegen.'
    else:
    print '%s ist keine Zahl.' % eingabe

    Funktionen erstellen

    In Python werden die Funktionen mit dem Schlüsselwort def begonnen. Der Rückgabewert wird mit dem Schlüsselwort return zurückgegeben. In Python wird nicht zwischen Funktion oder Prozedur unterschieden. Es heissen beide def. Die Funktion gibt etwas zurück und die Prozedur nicht.

    Funktionsbeispiele

    FunktionCode
    Produkt zweier Zahlen
    def produkt(a, b):
    return a*b
    Aktive Projekte aus einer Liste
    def getAktive(projektListe):
    resList = []
    for projekt in projektListe:
    if projekt.aktiv:
    resList.append(projekt)
    return resList
    Eine Aktivität auf einem bestimmten
    Projekt erstellen
    def erstelleAktivitaet(projekt):
    newAkt = vtcapp.createobject("Aktivitaet")
    newAkt.projekt = projekt
    newAkt.bearbeiter = projekt.projektleiter

    # Aktivitaet anzeigen
    vtcapp.showdetailform(newAkt)
    Aus einer Liste von Projekten zwei Listen
    mit aktiven und inaktiven machen
    def aktiveTrennen(projektListe):
    for projekt in projektListe:
    if projekt.aktiv:
    aktive.append(projekt)
    else:
    inaktive.append(projekt)
    return (aktive, inaktive) # Tuple of Lists

    Der Aufruf würde dann so aussehen:

    aktive, inaktive = aktiveTrennen(projektListe)


    22.02.2010 | 12.03.2013: a[-1] unter Teilstrings eingefügt.
    Produktlinien: Expert
    Module: Leistung & CRM