Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
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.
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?
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.
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.
Es geht auch auf die Aspekte der objektorientierten Programmierung ein, also das, was du oben beschrieben hast.
Ich hab hier noch eine etwas in die Jahre gekommene Auflage, ca. 140 Seiten. Es bezieht sich aber noch auf Python 2, sonst hätte ich dir das per Post senden können. 😬
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.
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
>>>
Hier habe ich 2 Kurse für Schüler mitgemacht und die waren bockschwer fand ich. So in der Mitte steht man bei den Themen auf dem Schlauch und es geht nicht weiter. Wie das Schüler packen sollen ist mir unklar.
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.
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.
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?
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.
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.
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.
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.
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.