Seite anzeigenÄltere VersionenLinks hierherCopy this pageFold/unfold allNach oben Diese Seite ist nicht editierbar. Du kannst den Quelltext sehen, jedoch nicht verändern. Kontaktiere den Administrator, wenn du glaubst, dass hier ein Fehler vorliegt. ====== - Python for C# developers and vice versa ====== ===== - Shortcuts in Visual Studio (C#) ===== Die CTRL-Taste bleibt jeweils gedrückt: * CTRL K + D: Code formatieren (Klammern und Einrückungen richten, hat keinen Einfluss auf Logik des Codes) * CTRL K + C: kommentiert ausgewählte Codezeilen * CTRL K + U: unkommentiert ausgewähle Codezeilen ===== - Ausgabe in Konsole ===== Ausgabe in der Konsole: C#: <code csharp> Console.WriteLine("Hello World"); </code> Python: <code python> print("Hello World") </code> ===== - 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 <code phython> a = 7 </code> Python erkennt selbst, dass es sich hier um einen Int handelt. In C# hingegen muss man zuerst den Typ angeben: <code csharp> int a = 7; </code> 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: <code python> a = 7 a = "Ich bin jetzt ein String" a = False # Boolean a = [1,2,3,4,5] # Liste </code> Dies ist nicht möglich in C#: <code csharp> int a = 7; string b = "Ich bin jetzt ein String"; bool c = false; </code> Ein **Kommentar** wird in C# mit dem //\\// und in Python mit dem //#//-Symbol gekennzeichnet. ==== - 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: <code csharp> int[] A = new int[] { 1, 3, 5, 7, 8 }; A[1] = 33; </code> 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: <code csharp> 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 </code> **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: <code python> L = [1,2,3] </code> Man kann ihr dann wie folgt ein weiteres Element anhängen: <code python> L.append(4) </code> Speziell an Python ist, dass die Elemente einer Liste beliebige Typen sein können: <code python> K = [1,True,3.14,"hallo",[6,7,8]] </code> Beachte, dass das letzte Element der Liste //K// selbst wieder eine Liste ist. ===== - Funktionen ===== In C# wird eine Funktion wir folgt deklariert: <code csharp> public static string NumbersToString(int a, int b, int c) { return a.ToString() + b.ToString() + c.ToString(); } </code> Diese Funktion nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und gibt sie zurück. Die äquivalente Funktion in Python sieht wie folgt aus: <code python> def numbers_to_string(a,b,c): return f"{a}{b}{c}" </code> Erklärung: * Mit **def** wird eine Funktion gekennzeichnet. * Der **Typ des Rückgabewerts** wird nicht angegeben. Hat eine Funktion keinen Rückgabewert (in C#: void), so hat diese Funktion 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 Funktion gehört, in **geschwungenen Klammern** geschrieben. In Python gibt es diese nicht. Stattdessen wird der Code mit der **Tabulatortaste eingerückt**. ===== - Schleifen ===== ==== - For-Schleife ==== C#: <code csharp> for (int i = 0; i < 5; i++) { Console.WriteLine(i); } </code> Python: <code python> for i in range(5): print(i) </code> 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-Schleifen und ist gleichwertig: C#: <code csharp> 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"); } </code> Python: <code 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") </code> Der erste und dritte print-Befehl gehört zur ersten for-Schleife. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schleife. In beiden Sprachen kann ganz einfach durch eine Liste (resp. ein Array) durch itteriert werden: C#: <code csharp> foreach (var a in A) { Console.WriteLine(a); } </code> Python: <code python> for a in A: print(a) </code> ==== - While-Schleife ==== C#: <code csharp> int i = 0; while (i < 5) { Console.WriteLine(i); i++; } </code> Python: <code python> i = 0 while (i<5): print(i) i += 1 </code> talit/pythonforcsharp.txt Zuletzt geändert: 2022-12-12 15:48von sca