12: Tipps

Diese Lektion beinhaltet ein paar Fakten über die Sprache Python, die wir in früheren Lektionen ausgelassen haben.

print Optionen

Bis jetzt haben wir als einzige Möglichkeit zur Ausgabe die print() Funktion kennengelernt. Sie gibt normalerweise mehrere Elemente in einer Zeile aus und trennt die Elemente durch Leerzeichen. Es ist aber so, dass print() ein paar Schlüsselwort-Argumente akzeptiert, die du nutzen kannst, um dieses Verhalten nach deinen Bedürfnissen zu modifizieren.

  • Um die Elemente nicht mit einem Leerzeichen sondern mit einem anderen String S zu trennen, gib das Argument sep = «S» an.
  • Um nach der Ausgabe aller Elemente statt eines Zeilenwechsels einen anderen String S auszugeben, verwende das Argument end = «S».

Diese neue Eigenschaft, die wir Schlüsselwort-Argumente nennen (engl: keyword arguments), ist am einfachsten mit ein paar Beispielen zu demonstrieren.

Beispiel
Beispiele von sep und end. Schau dir den Effekt an, den jeder Aufruf von print hat.

Diese Schlüsselwort-Argumente müssen am Ende der Argumentliste stehen, oder ein error wird auftreten. Die Reihenfolge der Schlüsselwort-Argumente untereinander ist aber egal.

Programmierübung: Alphabet Aerobics
Verwende, was wir gerade eingeführt haben, und debugge das folgende Programm so, dass es das Alphabet in Großbuchstaben in einer einzigen Zeile ausgibt.

Zulässige Variablen-/Funktionennamen

  • Namen können Buchstaben, Zahlen und den Unterstrich (_) enthalten.
  • Das erste Zeichen jedes Namen muss ein Buchstabe sein.
  • Python unterscheidet zwischen Groß- und Kleinbuchstaben.

So ist my_3rd_int ein zulässiger Variablenname, aber 3rd_int ist keiner.

Beispiel
Ein Beispiel davon, wie man zwischen Groß- und Kleinbuchstaben unterscheiden kann/muss.

Absteigende for Schleifen & andere Abstufungen

Erinnere dich daran, dass wir gezeigt haben, wie for Schleifen Zahlen in aufsteigender Reihenfolge durchgehen können:

Beispiel
Eine for Schleife

Oft ist es notwendig, eine for Schleife zu schreiben, die die Zahlen in absteigender Reihenfolge durchläuft (von der größten zur kleinsten Zahl). Um dies zu machen, rufen wir range auf, zusammen mit einem dritten Argument, das step genannt wird:

Beispiel
Negativer step für range

Wenn du kurz nachdenkst, fällt dir sicher auf, dass range(0, 5) das gleiche ist wie range(0, 5, 1): die Standardabstufung ist 1. In beiden Fällen solltest du sicher stellen, dass range(start, stop, step) nur gerade so weit geht, bis kurz bevor es den Wert stop erreicht. Wenn du mehr Informationen brauchst, schaust du dir am besten das Python manual an.

Programmierübung: Lucky Sevens
Schreibe ein Programm, bei dem du eine for Schleife verwendest mit der Stufengröße 10, um alle zweistelligen Zahlen aufzulisten, die auf 7 enden, in aufsteigender Reihenfolge.

In ähnlicher Weise kannst du string[x:y:-1] verwenden, um einen umgekehrten Teil eines Strings zu erhalten, oder string[x:y:2], für den Substring mit den Zeichen x, x+2, x+4, ...

Mit einer for Schleife ist reversed(range(x, y)) eine andere Möglichkeit, eine absteigende Reichweite zu erreichen, die von y-1 bis x in absteigender Reihenfolge geht.

Kleineren Code schreiben

Python bietet unterschiedliche Möglichkeiten, um kürzeren Code zu schreiben; wir führen hier ein paar davon ein.

Auf dieser Seite werden wir nicht immer diese Eigenschaften benutzen, da es manchmal dazu führt, dass Code schwerer zu lesen ist.

Übertragungs-Operatoren

Python erlaubt es dir, "x += 1" zu schreiben, was bedeutet "füge eins zu x hinzu." Es ist gleichwertig mit "x = x + 1" wie wir unten zeigen:

Beispiel
Beispiele von +=, -=, *=, /=

Gleichermaßen gibt es Operatoren für die Division von ganzen Zahlen (//=), Teilungsrest (%=), und Potenz (**=).

Inline Blöcke

Wir haben mehrere Statements gesehen, auf die eingerückte "Blöcke" von Code folgen: for, if, else, elif, while, und def, zum Beispiel:

if x==y:
  «block» #indented, multiline
Im Sonderfall. dass «block» nur eine Zeile lang ist, erlaubt es Python, die folgende alternative Syntax zu verwenden:

if x==y: «block» #single line
Hier ist ein Beispiel:

Beispiel
Inline Block Statements

Dies hat allerdings Grenzen: ein zusammenhängender Block mit einem Doppelpunkt (if, for, etc) kann nicht als Inline Block verwendet werden. Zum Beispiel, if 2>1: if 4>3: print() ergibt einen Syntaxfehler.

Mehrere Aufgaben

Python erlaubt es dir, zwei Statements mit Aufgaben zu einem einzigen Statement zu kombinieren:

Beispiel
Mehrere Aufgaben

Beachte, dass dies es dir erlaubt, unsere Übung mit dem Tausch mit einer einzigen Zeile zu lösen!

Verkettungen von Vergleichen

Python erlaubt es dir auch, mehrere Vergleiche zu einem einzigen zu kombinieren:

Beispiel
Mehrere Aufgaben
Jede Kette v1 c1 v2 c2 v3 ... bei der v Werte sind und c Vergleiche, wird genauso behandelt wie (v1 c1 v2) and (v2 c2 v3) and...

Normale Werte für [:] und range()

Du kannst einen oder beide der start/end-Werte weglassen, wenn du den sub-string-Operator [:] benutzt.
(Dies gilt auch für Listen, wie wir sie in der nächsten Lektion sehen werden.)
Der normale Wert des ersten Index ist 0 (Anfang des strings)
und der normale Wert des letzten Index ist die Länge des strings. Ebenso ist range(n) kurz für range(0, n).

Beispiel
Nutzt die normalen Werte für [:] und range()

None

Einige Funktionen sind hauptsächlich dazu da, einen Wert auszugeben, wie z.B. abs(x). Andere Funktionen, die nützlicher sind in ihren Auswirkungen, wie zum Beispiel print(), geben dennoch den 'Standardwert' None aus:

Beispiel
Der Wert von print

Hier ist None ein besonderer Wert, der von Python als Platzhalter verwendet wird. Wenn du type(None) aufrufst, wirst du herausfinden, dass None sogar seine eigene Type hat, NoneType. Und wenn wir schon dabei sind, lass uns herausfinden, was der Typ einer Typenvariable ist:

Beispiel
Die Type einer Type

In der nächsten Übung bitten wir dich, die Ergebnisse eines langen Befehls zu überprüfen, bei dem sowohl type als auch print verwendet wird.

Sortierübung: One None
Der Output von print(type(print(type(type(print(print())))))) besteht aus 4 Zeilen. Ordne sie in der richtigen Reihenfolge.
  • <class 'type'>
  • <class 'NoneType'>
  • «blank line»
  • None
Richtig!

Das sind erstmal alle Tipps. Du bist jetzt soweit, zur nächsten Lektion zu gehen!