**Dies ist eine alte Version des Dokuments!**
Python for C# developer and vice versa
1. Print
Ausgabe in der Konsole:
C#:
Console.WriteLine("Hello World");
Python:
print("Hello World")
2. Typen
Der erste grosse Unterschied ist, dass Python dynamisch typisier während C# typsicher ist.
Soll in Python die Variable a ein Integer mit Wert 7 sein, so kann man einfach schreiben
a = 7
Python erkennt selbst, dass es sich hier um einen Int handelt.
In C# hingegen muss man zuerst den Typ angeben:
int a = 7;
Beachte auch, dass in C# eine Zeile mit einem Semikolon beendet werden muss. Dies ist in Python nicht der Fall.
Der Typ einer Variable kann in Python auch beliebig verändert werden. Folgender Code ist z.B. völlig unproblematisch:
a = 7 a = "Ich bin jetzt ein String" a = False # Boolean a = [1,2,3,4,5] # Liste
Dies ist nicht möglich in C#:
int a = 7; string b = "Ich bin jetzt ein String"; bool c = false;
Ein Kommentar wird in C# mit dem \\ und in Python mit dem #-Symbol gekennzeichnet.
2.1 Listen
In C# ist ein Array quasi eine Liste mit konstanter Grösse: es ist unmöglich, ein Array zu erweitern oder zu kürzen. Der folgende Code erzeugt ein int-Array, welcher genau 5 ints beinhaltet:
int[] A = new int[] { 1, 3, 5, 7, 8 }; A[1] = 33;
Die Werte des des Array können geändert werden, die Länge des Arrays kann aber nicht verändert werden. Möchte man dies tun, so kann man eine List verwenden:
List<int> B = new List<int> { 1, 3, 5, 7, 9 }; B.Add(11); // erweitert die Liste B.RemoveAt(1); // entfert das Element mit index 1, also die 3
Tipp: Arrays sind performanter als Listen und sind klar zu bevorzugen, wenn von Anfang an klar ist, um wie viele Elemente es sich handelt.
In Python erstellt man eine Liste wie folgt:
L = [1,2,3]
Man kann ihr dann wie folgt ein weiteres Element anhängen:
L.append(4)
Speziell an Python ist, dass die Elemente einer Liste beliebige Typen sein können:
K = [1,True,3.14,"hallo",[6,7,8]]
Beachte, dass das letzte Element der Liste K selbst wieder eine Liste ist.
3. Methoden
In C# wird eine Methode wir folgt deklariert:
public static string NumbersToSting(int a, int b, int c) { a.ToString() + b.ToString() + c.ToString(); }
Diese Methode nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und giebt sie zurück.
Die äquivalente Methode in Python sieht wie folgt aus:
def numbers_to_string(a,b,c): return f"{a}{b}{c}"
Erklärung:
- Mit def wird eine Methode gekennzeichnet.
- Der Typ des Rückgabewerts wird nicht angegeben. Hat eine Methode keinen Rückgabewert (in C#: void), so hat diese Methode in Python einfach kein return-Statement, alles andere bleibt unverändert.
- Der Typ der Argumente (a,b,c) wird nicht angegeben.
- In C# wird der Codeblock, der zur Methode gehört, in geschwungene Klammern geschrieben. In Python gibt es diese nicht. Stattdessen wird der Code mit der Tabulatortaste eingerückt.
4. Schlaufen
4.1 For-Schlaufe
C#:
for (int i = 0; i < 5; i++) { Console.WriteLine(i); }
Python:
for i in range(5): print(i)
Beachte, dass in Python die Einrückung wahnsinnig wichtig ist. In C# ist die Einrückung irrelevant. Um den Code übersichtlich zu gestalten lohnt es sich aber, die einzelnen Codezeilen sinnvoll einzurücken. Mit dem Shortcut Ctrl + K + D (Ctrl bleibt gedrückt) übernimmt wird diese Arbeit vom Visual Studio übernommen. Wende diesen Shortcut exzessiv an!
Der folgende Code in beiden Sprachen beinhaltet zwei verschachtelte for-Schlaufen und ist gleichwertig:
C#:
for (int i = 0; i < 3; i++) { Console.WriteLine("---------------"); Console.WriteLine("i=" + i+ " begin"); for (int j = 0; j < 2; j++) { Console.WriteLine("j=" + j); } Console.WriteLine("i=" + i + " end"); }
Python:
for i in range(3): print("---------------") print(f"i={i} begin") for j in range(2): print(f"j={j}") print(f"i={i} end")
Der erste und dritte print-Befehl gehört zur ersten for-Schlaufe. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schlaufe.
In beiden Sprachen kann ganz einfach durch eine Liste (resp. ein Array) durch itteriert werden:
foreach (var a in A) { Console.WriteLine(a); }
for a in A: print(a)
4.2 While-Schlaufe
C#:
int i = 0; while (i < 5) { Console.WriteLine(i); i++; }
Python:
i = 0 while (i<5): print(i) i += 1