Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:pythonforcsharp [2020-01-14 20:03] – [Python for C# developer] scatalit: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("Hello World") print("Hello World")
 </code> </code>
 +
 +
 ===== - Typen ===== ===== - Typen =====
  
-Der erste grosse Unterschied in Python im Vergleich zu C# ist, dass Python **dynamisch typisier**. Soll die Variable //a// ein Integer mit Wert 7 sein, so kann man einfach schreiben+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> <code phython>
 a = 7 a = 7
 </code> </code>
 +
 +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:
 </code> </code>
  
-Beachte auch, dass in Python die Zeilen **nicht mit einem Semikolon beendet** werden.+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 auch beliebig verändert werden. Folgender Code ist z.B. völlig unproblematisch:+Der Typ einer Variable kann in Python auch beliebig verändert werden. Folgender Code ist z.B. völlig unproblematisch:
  
 <code python> <code python>
Zeile 39: Zeile 54:
 </code> </code>
  
-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 wir folgt deklariert:+==== - 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> <code csharp>
-public static string NumbersToSting(int a, int b, int c)+public static string NumbersToString(int a, int b, int c)
 { {
-    a.ToString() + b.ToString() + c.ToString();+    return a.ToString() + b.ToString() + c.ToString();
 } }
 </code> </code>
  
-Diese Methode nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und giebt sie zurück.+Diese Funktion nimmt drei Ints, wandelt diese in Strings um, hängt sie aneinander und gibt sie zurück.
  
-Die äquivalente Methode in Python sieht wie folgt aus:+Die äquivalente Funktion in Python sieht wie folgt aus:
  
 <code python> <code python>
Zeile 62: Zeile 122:
  
 Erklärung: Erklärung:
-   * Mit **def** wird eine Methode gekennzeichnet. +   * Mit **def** wird eine Funktion 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 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.    * 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**.+   * 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**.
  
-===== - Schlaufen =====+===== - Schleifen =====
  
-==== - For-Schlaufe ====+==== - For-Schleife ====
  
 C#: C#:
Zeile 87: Zeile 147:
 </code> </code>
  
-Beachte, dass in Python die **Einrückung** wahnsinnig wichtig ist. Betrachte dazu den folgenden Code in beiden Sprachen, der zwei verschachtelte for-Schlaufen enthält:+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#: C#:
Zeile 115: Zeile 177:
 </code>         </code>        
  
-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); 
 +
 +</code>        
 + 
 +Python:         
 +<code python> 
 +for a in A: 
 +    print(a) 
 +</code>  
 +==== - While-Schleife ====
  
 C#: C#:
  • talit/pythonforcsharp.1579032185.txt.gz
  • Zuletzt geändert: 2020-01-14 20:03
  • von sca