@ss_nase: Zum Thema Englisch gibt es ein hier im Forum „
It's english, get over it”. Ohne technisches Englisch zumindest lesen zu können, kann man das mit dem Programmieren im Grunde vergessen. Aktuelle Dokumentation von Programmiersprachen und Bibliotheken ist in den allermeisten Fällen nur in englischer Sprache verfügbar, und alles interessante, nicht-triviale benötigt früher oder später eine Bibliothek oder ein Modul was nicht in einem deutschen Tutorial oder Buch ausführlich beschrieben ist.
Für absolute Anfänger wird oft dieses Tutorial empfohlen
Learn Python The Hard Way (nicht vom Titel abschrecken lassen

), welches in kleinen Schritten vorgeht, und stark darauf setzt, dass der Leser die Sachen ausprobiert und damit herum experimentiert, um ein Gefühl für die Programmiersprache zu bekommen.
Ich habe Dein Programm nicht ausgeführt oder vebessert, aber es ist eigentlich recht deutlich was da alles schief läuft. Das ist neben der Syntax, ein fehlendes Verständnis vom Unterschied zwischen Namen und literalen Zeichenketten, und dem Unterschied zwischen Zahlen und Zeichenketten (also allgemein Datentypen).
Inhaltlich sind die Ausgaben an den Benutzer nicht besonders gut, weil „eine Form berechnen” sehr vage ist. Das erklärt nicht *wirklich* was das Programm macht, und damit was der Benutzer eingeben soll, und was er zu erwarten hat. Im Beitrag schreibst Du Umfang berechnen, was im Programm dann aber gar nicht wirklich passiert. Im Grunde für beide Formen nicht korrekt. Für das Rechteck steht da nämlich die Rechnung für die Fläche, und beim Quadrat fragt man sich was denn die *zwei* Zahlen sind, welche ein Quadrat beschreiben.
Zum letzten Punkt muss man etwas zu den schlechten Namen sagen, die a) zu allgemein sind, und b) durchnummeriert. Namen sollten dem Leser vermitteln wofür der Wert der daran gebunden wird, im Programm steht. Und `zahl1` und `zahl2` sagen das überhaupt nicht. Die sagen nur was dort für ein Datentyp hinter steckt, beziehungsweise stecken sollte, denn in Deinem Programm sind das keine Zahlen sondern Zeichenketten. Beim Rechteck wären Namen wie `hoehe` und `breite` deutlich aussagekräftiger. Wenn Du die Werte nach ihrer Bedeutung im Programm benennst, wäre Dir beim Quadrat sehr wahrscheinlich auch aufgefallen, dass das dort Unsinn ist, denn ich wäre sehr gespannt wie man bei einem Quadrat *zwei* sinnvoll benannte Werte zusammenbekommt.
Namen durchnummerieren ist selten bis nie eine gute Idee. Entweder ist man zu faul sich passende Namen auszudenken, was das Programm unverständlicher und damit auch fehleranfälliger macht, oder man möchte eigentlich *einen* Namen für eine Datenstruktur worin die Werte gespeichert werden. Meistens eine Liste oder ein Tupel.
Zum Syntaxfehler beim ``if``: Zwischen ``if`` und dem ``:`` muss ein Ausdruck stehen, der zu einem Wahrheitswert ausgewertet wird. Bei Dir stehen da einfach zwei Namen nebeneinander. Zwei Namen nebeneinander zu schreiben ist aber keine gültige Syntax, denn der Compiler weiss an der Stelle nicht was er damit anfangen soll. Was meint der Programmierer damit‽ Da fehlt irgend eine Operation welche die beiden Werte hinter den Namen verknüpft und Python sagt, wie daraus ein Ergebnis berechnet werden soll. Also bei Bedingungen in der Regel einer der Vergleichsoperatoren:
Code: Alles auswählen
In [1]: a = 23
In [2]: b = 42
In [3]: if a b: print 'a ist kleiner als b'
File "<ipython-input-3-cdd979643eef>", line 1
if a b: print 'a ist kleiner als b'
^
SyntaxError: invalid syntax
In [4]: a b
File "<ipython-input-4-7557d2f3a6ad>", line 1
a b
^
SyntaxError: invalid syntax
In [5]: a < b
Out[5]: True
In [6]: if a < b: print 'a ist kleiner als b'
a ist kleiner als b
In [7]: if a > b: print 'a ist kleiner als b' # Keine Ausgabe denn die Bedingung ist unwahr.
In [8]: