Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| talit:pythonforcsharp [2020-01-14 20:03] – [Python for C# developer] sca | talit:pythonforcsharp [2022-12-12 15:48] (aktuell) – sca | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== - Python for C# developer | + | ====== - Python for C# developers and vice versa ====== |
| - | ====- Print ==== | + | ===== - 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: | Ausgabe in der Konsole: | ||
| Zeile 14: | Zeile 23: | ||
| print(" | print(" | ||
| </ | </ | ||
| + | |||
| + | |||
| ===== - Typen ===== | ===== - Typen ===== | ||
| - | Der erste grosse Unterschied | + | Der erste grosse Unterschied ist, dass Python **dynamisch typisier** |
| + | |||
| + | Soll in Python | ||
| <code phython> | <code phython> | ||
| a = 7 | a = 7 | ||
| </ | </ | ||
| + | |||
| + | Python erkennt selbst, dass es sich hier um einen Int handelt. | ||
| In C# hingegen muss man zuerst den Typ angeben: | In C# hingegen muss man zuerst den Typ angeben: | ||
| Zeile 28: | Zeile 43: | ||
| </ | </ | ||
| - | Beachte auch, dass in Python die Zeilen **nicht | + | Beachte auch, dass in C# eine Zeile mit einem **Semikolon** |
| - | Der Typ einer Variable kann auch beliebig verändert werden. Folgender Code ist z.B. völlig unproblematisch: | + | Der Typ einer Variable kann in Python |
| <code python> | <code python> | ||
| Zeile 39: | Zeile 54: | ||
| </ | </ | ||
| - | Ein **Kommentar** wird mit dem //#//-Symbol gekennzeichnet. | + | Dies ist nicht möglich in C#: |
| + | <code csharp> | ||
| + | int a = 7; | ||
| + | string b = "Ich bin jetzt ein String"; | ||
| + | bool c = false; | ||
| + | </code> | ||
| - | ===== - Methoden ===== | + | Ein **Kommentar** wird in C# mit dem //\\// und in Python mit dem //#//-Symbol gekennzeichnet. |
| - | In C# wird eine Methode | + | ==== - 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; | ||
| + | </ | ||
| + | |||
| + | 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< | ||
| + | B.Add(11); // erweitert die Liste | ||
| + | B.RemoveAt(1); | ||
| + | </ | ||
| + | |||
| + | **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] | ||
| + | </ | ||
| + | Man kann ihr dann wie folgt ein weiteres Element anhängen: | ||
| + | <code python> | ||
| + | L.append(4) | ||
| + | </ | ||
| + | |||
| + | Speziell an Python ist, dass die Elemente einer Liste beliebige Typen sein können: | ||
| + | <code python> | ||
| + | K = [1, | ||
| + | </ | ||
| + | Beachte, dass das letzte Element der Liste //K// selbst wieder eine Liste ist. | ||
| + | |||
| + | |||
| + | |||
| + | ===== - Funktionen ===== | ||
| + | |||
| + | In C# wird eine Funktion | ||
| <code csharp> | <code csharp> | ||
| - | public static string | + | public static string |
| { | { | ||
| - | a.ToString() + b.ToString() + c.ToString(); | + | |
| } | } | ||
| </ | </ | ||
| - | Diese Methode | + | Diese Funktion |
| - | Die äquivalente | + | Die äquivalente |
| <code python> | <code python> | ||
| Zeile 62: | Zeile 122: | ||
| Erklärung: | Erklärung: | ||
| - | * Mit **def** wird eine Methode | + | * Mit **def** wird eine Funktion |
| - | * Der **Typ des Rückgabewerts** wird nicht angegeben. Hat eine Methode | + | * Der **Typ des Rückgabewerts** wird nicht angegeben. Hat eine Funktion |
| * Der Typ der Argumente (//a,b,c//) wird nicht angegeben. | * Der Typ der Argumente (//a,b,c//) wird nicht angegeben. | ||
| - | * In C# wird der Codeblock, der zur Methode | + | * In C# wird der Codeblock, der zur Funktion |
| - | ===== - Schlaufen | + | ===== - Schleifen |
| - | ==== - For-Schlaufe | + | ==== - For-Schleife |
| C#: | C#: | ||
| Zeile 87: | Zeile 147: | ||
| </ | </ | ||
| - | Beachte, dass in Python die **Einrückung** wahnsinnig wichtig ist. Betrachte dazu den folgenden | + | 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 | ||
| C#: | C#: | ||
| Zeile 115: | Zeile 177: | ||
| </ | </ | ||
| - | Der erste und dritte print-Befehl gehört zur ersten for-Schlaufe. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schlaufe. | + | Der erste und dritte print-Befehl gehört zur ersten for-Schleife. Der zweite print-Befehl (doppel-Tab) gehört zur zweiten for-Schleife. |
| - | + | ||
| - | ==== - While-Schlaufe | + | 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); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | Python: | ||
| + | <code python> | ||
| + | for a in A: | ||
| + | print(a) | ||
| + | </ | ||
| + | ==== - While-Schleife | ||
| C#: | C#: | ||