Python Programmierung

Kurzeinführung in die Python Programmierung

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 22.02.2010
Aktualisiert: 19.08.2024 | Link zu Python Standard Library eingefügt

Vertec Python Funktionen

Python Standard Library

Struktur des Python Codes

  • Das Zeilenende wird durch den 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. Alle gleich eingerückten Zeilen gehören zum selben Block.
  • Python ist case-sensitiv, das heisst, die Gross-/Kleinschreibung muss beachtet werden.

Hilfsfunktionen

Funktion Beschreibung

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)

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

Variablen

Variablen können einfach zugewiesen werden. Der Datentyp wird durch die Zuweisung automatisch erkannt. Wichtig ist auch hier, auf die Gross-/Kleinschreibung zu achten.

bearb = vtcapp.currentlogin()

Unterschied zwischen lokalen und globalen Variablen:

  • Lokale Variablen können nur innerhalb der Funktion verwendet werden und müssen für jede Verwendung in einer anderen Funktion als Parameter übergeben werden.
  • Globale Variablen werden einmal initialisiert und sind in jeder Funktion im gleichen Script verfügbar.

Globale Variablen deklariert man ausserhalb von Funktionen. Um eine globale Variable innerhalb einer Funktionen zu verwenden, muss sie mit global geladen werden:

leistung = argobject # globale Variable deklarieren

def WertExtAendern(betrag): 
    global leistung # globale Variable verwenden 
    leistung.xWertExt = betrag 

def BearbeiterSetzen(bearbeiter): 
    global leistung 
    leistung.bearbeiter = bearbeiter

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

https://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 geschweiften Klammern definiert und mit der Methode .format() in einem Tuple übergeben:

"Hallo, mein Name ist {} und ich bin {} Jahre alt.".format("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.

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

Funktion Beschreibung

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.

str.join(liste)

Die join-Methode gibt einen String zurück, in dem sich alle Elemente der übergebenen Liste, durch str getrennt, befinden. Beispiel:

empfaengerStr = '; '.join(empfaenger)

Alle verfügbaren Stringfunktionen erhalten Sie mit dem Befehl:

help(str)

Pfade in Python Strings

Will man einen Pfad übergeben in Python, muss man aufpassen, da Backslashes in Python zum Encoding von Steuerzeichen in Strings verwendet werden. So wird zum Beispiel der Pfad C:\Dokumentation\temporäre Dokumente\.. zu C:\Dokumentation          emporäre Dokumente\.. und damit ungültig, weil \t als Tabulator-Zeichen interpretiert wird. Um diesem Problem abzuhelfen, gibt es folgende zwei Varianten:

  • Entweder alle Backslashes verdoppeln, d.h. 'C:\\Dokumentation\\temporäre Dokumente\\...'. Das geht natürlich nur, wenn man den Pfad "von Hand" eintippt.
  • "raw string" verwenden, welcher keine Steuerzeichen interpretiert. Dafür setzt man einfach ein r unmittelbar vor den Pfad: pfad = r'C:\Dokumentation\temporäre Dokumente\...'.

Weitere Informationen

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

https://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 wird wie folgt formatiert:

  • {:} - Zeichen für Formatierung
  • 0 - Präfix ist 0
  • 6 - Länge der Zahl
  • 2 - Anzahl Dezimalstellen
  • f  - Float
Beispiel
'{:06.2f}'.format(555.3)

Resultat: 555.30

Weitere Informationen

https://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

Funktion Beschreibung

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

str.join(list)

Gibt die Liste als String zurück. Ist eine String-Funktion.

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

https://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
bearbeiter = vtcapp.currentlogin()
projektListe = bearbeiter.evalocl("eigProjekte->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
i = 1
while i <= 10:
    print 'Die Zahl ist {}'.format(i)
    i += 1

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.

def ChangeText(leist):
    leist.text = ...

Danach kann im Code darauf zugegriffen werden:

ChangeText(argobject)

Funktionsbeispiele

Funktion Code
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)

Funktionen ohne Parameter aufrufen

Beim Aufruf einer Funktion, welche keine Parameter erwartet, ist es sehr wichtig, dass die Klammern nicht vergessen gehen. Beispiel:

vtcapp.currentlogin #Falsch, Funktion wird nicht aufgerufen, es wird eine Fehlermeldung ausgegeben
vtcapp.currentlogin() #Richtig

 

Bitte wählen Sie Ihren Standort