Python lernen

CyborgBeta schrieb:
Und ChatGPT muss man auch gezielt Fragen stellen können (was man am Anfang noch nicht kann)
Ich hatte Vorkenntnisse in C, mehr nicht. Bei Python hab ich bei 0 angefangen und es hat trotzdem funktioniert. Solange man das was man nicht versteht in Worte formulieren kann ist es kein Problem wenn man mit GPT bei 0 anfängt.
 
ghecko schrieb:
Solange man das was man nicht versteht in Worte formulieren kann ist es kein Problem wenn man mit GPT bei 0 anfängt.
Du hast dann aber keine Möglichkeit, um zu beurteilen, ob das, was GPT dir sagt, auch richtig ist.
 
CyborgBeta schrieb:
Du hast dann aber keine Möglichkeit,
Bei Code halluziniert GPT sehr selten, weil es ein logisches Konstrukt mit festen Regeln ist. Und ob es funktioniert sieht man bei Python sofort, weil man keine 20k Zeilen Code schreibt und ihn dann erst testet. Wenn etwas nicht funktioniert kann man das übrigens auch mit GPT besprechen. Hast du überhaupt mal versucht damit zu arbeiten?
 
  • Gefällt mir
Reaktionen: TomH22
ghecko schrieb:
Wenn etwas nicht funktioniert kann man das übrigens auch mit GPT besprechen.
Ja, das schon. Aber "es funktioniert alles" ist nicht immer == schön/gut (nicht umsonst gibt es Code-Metriken und Reviews). Aber lassen wir diese Diskussion, das hilft der TE ja nicht.
 
ghecko schrieb:
Bei Code halluziniert GPT sehr selten, weil es ein logisches Konstrukt mit festen Regeln ist.
Das ist falsch. LLMs haben große Probleme, logisch zu denken. Erstaunlich für ein Computerprogramm, ich weiß. LLMs lernen statistische Verteilungen jedoch keine Regeln und es ist auch nicht garantiert, dass die gelernten "Regeln" also der Input auch korrekt ist. Die KI lernt ja nicht nur die Antworten von StackOverflow sondern auch die ganzen Codes, die falsch sind. Genau deshalb kommt es zum bekannten Halluzinieren.

CyborgBeta schrieb:
Das ist schon die richtige Herangehensweise. Ich konnte irgendwelchen dubiosen Online-Kursen, Videos oder gar Tutorials auch nie etwas abgewinnen, einfach, da damit Wissen nicht vertieft werden kann.
Ich bin da ganz ähnlich. Python hat schon so seine Eigenheiten.
  • Ich meine damit nicht das Einrücken sondern so was wie __main__, das in Python eine relativ wichtige Bedeutung hat, aber in dieser Form nicht in anderen Sprachen vorkommt. Vielleicht kommt der statische Konstruktor der Application-Klasse in C# dem am nächsten. Und __init__ sind dann die "normalen" objektorientierten Konstruktoren.
  • Genauso nonlocal, das habe ich auch noch nicht vorher gesehen. Ein extra Modifier, um auf einen äußeren Scope zuzugreifen. In C# war das implizit und brauchte nur dann einen Modifier, wenn die Referenz nicht eindeutig war. (Wenn ich mich recht erinnere.) 🤔
  • Und dann gibt es auch noch Mehrfachvererbungen! Und keine Interfaces!
  • Iteratoren werfen eine Exception, wenn sie am Ende einer Folge angekommen sind.

Das ist alles abgefahrenes Zeug. 🤯
 
  • Gefällt mir
Reaktionen: CyborgBeta
@CyborgBeta
Ich glaube, das ist nicht nötig. Ich wühle mich gerade durch
tomgit schrieb:

Der Crash-Kurs am Anfang war super. Der hat für ein paar Aha-Momente gesorgt. An dem zweiten Teil, in dem es dann ans Eingemachte geht, habe ich gerade erst angefangen zu lesen. Ich bin dann aber irgendwie ein paar Stunden in der offiziellen Online-Python-Doku versunken, um mehr über die verfügbaren Standardmodule herauszufinden. Ich muss erst mal meine Gedanken sortieren und dann schau ich weiter.

Frei nach dem Collatz-Problem:
Python:
def collatz(number: int) -> int:
    if number % 2 == 0: # number is even
        return number // 2
    return 3 * number + 1

while True:
    try:
        currentNumber = int(input("Gibt eine Startzahl ein: "))
    except ValueError:
        print("Die Eingabe muss eine Zahl sein!")
        continue
    break

while currentNumber != 1:
    currentNumber = collatz(currentNumber)
    print(currentNumber)
Das einzige, worüber ich hier gestolpert bin, ist dass es except statt catch heißt. Ich finde except ist als Wort einfach unglücklich gewählt. Und die : vergesse ich manchmal. Die hab ich seit BASIC nicht mehr gebraucht.
Bash:
>>> %Run uebung3.py
Gibt eine Startzahl ein: 3
10
5
16
8
4
2
1
>>>
Nice!
 
  • Gefällt mir
Reaktionen: tomgit und CyborgBeta
Krik schrieb:
Und die : vergesse ich manchmal.
Ich auch, die sind sehr "nervig", wenn man kein eingefleischter Python'ler ist ...

Ok, gutes Gelingen!
 
  • Gefällt mir
Reaktionen: Krik
ghecko schrieb:
Bei Code halluziniert GPT sehr selten, weil es ein logisches Konstrukt mit festen Regeln ist.
Ne, das liegt daran, dass Anfängerfragen und Code massig vorhanden sind im Internet. Mir fantasiert ChatGPT andauernd was zusammen, auch bei Python baut es gerne diverse Bugs ein.

Krik schrieb:
so was wie __main__, das in Python eine relativ wichtige Bedeutung hat, aber in dieser Form nicht in anderen Sprachen vorkommt.
Main gibt es doch häufig? C, Java, C++ jedenfalls.

Joah, weil Deklaration und (Copy-)Assignment / ... stärker unterschieden in anderen Sprachen ist das nicht notwendig.

Das ist alles abgefahrenes Zeug. 🤯
Kann dir nur raten: Lerne von anderen Sprachen anstatt dich über jeden Doppelpunkt zu brüskieren. Anhand der Unterschiedlichkeiten lernt man immer viel wenn man eine neue Sprache lernt, auch über die Sprachen, die man schon beherrscht.
 
BeBur schrieb:
Main gibt es doch häufig? C, Java, C++ jedenfalls.
Aber nicht in der Form wie es in Python praktiziert wird. main ist keine Methode oder Konstruktor sondern der Name(!) des ersten Programmmoduls (egal wie dieses tatsächlich heißt!), das geladen wird.
In C, C++, Java, C#, usw. definiert der Programmierer den Einsprungpunkt, der üblicherweise in Form einer Methode oder eines Konstruktors vorliegt. In Python muss das Modul das selber ermitteln.

BeBur schrieb:
Lerne von anderen Sprachen anstatt dich über jeden Doppelpunkt zu brüskieren.
Hä? Was hat dich denn zu diesem Satz verleitet? :confused_alt:
Ich habe in meinem Leben über ein Dutzend Programmiersprachen verwendet. Und ich bin auch nicht bei jedem Doppelpunkt brüskiert. Sie sind für mich einfach nur ungewohnt, weil ich sie in dieser Häufigkeit seit BASIC nicht mehr tippen musste.

Überhaupt ist Python BASIC sehr ähnlich. Man scheint daran mehr Anleihen genommen zu haben als an C-ähnliche Sprachen.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Von der Syntax her ähneln sich Python und BASIC sehr stark. Die Ähnlichkeit ist jedenfalls stärker als die zu den C-ähnlichen Sprachen.
Wie kann man das nicht erkennen?
 
"ähnlich" ist subjektiv. Und was bringt es denn jetzt, sich über den syntaktischen Zucker einzelner Sprachen zu streiten ... auch subjektiv. Insofern: Baut alle mal wieder verbal ab.
 
Krik schrieb:
Von der Syntax her ähneln sich Python und BASIC sehr stark.
Welches BASIC meinst Du überhaupt? Das Ur-BASIC mit Zeilennummern und GOTO? Oder Visual Basic? Oder Digital Research CBASIC (ein früher Versuch eines strukturierten BASIC). Oder True Basic? Das BASIC schlechthin gibt es nicht.

Die Syntax einer Sprache sagt wenig über die Sprache aus. Alle „curly braces“ Sprachen, wie Java, C#, JavaScript, usw. basieren auf der grundlegenden Syntax von C, deswegen haben sie aber semantisch nur sehr wenig mit C zu tun.


Aber um auf Deine Kernfrage zurückzukommen: Wie Du eine Programmiersprache lernst, weißt Du nur selber. Ob Du lieber ein Buch liest, oder Dir einen Udemy Kurs reinziehst.

Die elementaren Kontrollstrukturen einer Sprache sind sowieso in allen Sprachen weitgehend gleich. Ein IF Statement oder eine While Schleife haben sind immeg das gleiche. Boolean Expression sind auch immer ähnlich. Außer in Pascal und Verwandten, wo boolean Operatoren nur mit boolean Werten arbeiten können, können bei den meisten Sprachen auch andere Datentypen als Boolean betrachtet werden. Da muss man eben nur wissen, welche Werte als „False“ und welche als „True“ bewertet werden. In Lua z.B. nur „Nil“ und „False“ als False betrachtet, die Zahl 0 oder ein leerer String sind hingegen True.

Python ist erst einmal eine dynamisch typisierte Sprache, die mit einer REPL (Read Eval,Print Loop) arbeitet und dadurch dynamisch interpretiert ausgeführt wird.

Python bietet an strukturierten Datentypen Listen, Tupel und Dictionaries, deren Semantik und Anwendung sollte man verstehen.

Python kann imperativ/ procedural oder objektorientiert verwendet werden. Als Einsteiger kann man aber z.B imperativ beginnen, und Objekte lediglich konsumieren.

Python ist begrenzt auch für funktionale Programmierung geeignet (Stichwort lambda), aber da gibt es wirklich bessere Sprachen für.

Spezielle Features wie async/await, Generatoren (Yield statement) und Decoratoren kann man ignorieren, bis man sie braucht.


Die Stärke von Python ist das Ecosystem, es gibt für Alles und Jedes Libraries. Daher ist die Herausforderung nicht die Spache, sondern die Anwendung fer teilweise sehr komplexen Libraries zu verstehen. Ich nutze z.B. myhdl, damit kann man Python als Hardware Description Language einsetzen. Aber ohne Erfahrung in HDLs und im Design Digitaler Logik kann man damit nichts abfangen.

Ich habe auch schon mit MicroPython auf Microcontrollern gearbeitet, aber auch da ist die Herausforderung nicht unbedingt die Sprache.
Ergänzung ()

User 37650 schrieb:
Wie das Schüler packen sollen ist mir unklar.
Zitat von deren Website:

Der Kurs setzt mathematisches Wissen (10. Klasse) voraus.

Die meinen damit vermutlich 10. Klasse Gymnasium, und das man dort nicht gerade das Schlusslicht im Matheunterricht ist.

Selbst wer in der 10. Klasse diese Vorrausetzungen erfüllt hat, erfüllt sie 10 Jahre später vermutlich nicht mehr, wenn er nicht zufällig Mathelehrer geworden ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: KingLz und CyborgBeta
Mhmm, das einzige was BASIC und Pyhton gemein haben, ist dass man vor 30 Jahren tatsächlich BASIC für Dinge genommen hat, die man heute häufig mit Python macht. Und klar, Python hat, ähnlich wie BASIC, eine etwas mehr auf Lesbarkeit ausgelegte Syntax (z.B. and or not anstatt & | ~). Das gilt aber z.B auch für Pascal.
 
  • Gefällt mir
Reaktionen: CyborgBeta
Zurück
Oben