# Python Hilfethread



## Gamer090 (19. Mai 2019)

Hallo zusammen

Habe zwar erst vor kurzem damit angefangen mit Python zu schreiben aber aller Anfang ist Schwer und ich habe gleich zu Beginn irgendwas Falsch gemacht  Dieser Thread soll aber nicht nur für mich sein sondern für jeden der mal Hilfe braucht in Python. 

Wichtig! Bitte angeben mit welcher Python Version ihr schreibt, es gibt ein paar Unterschiede zwischen Python 2 und 3, bin mir nicht sicher ob es gleich ersichtlich ist.

Was stimmt hier nicht? Ich habe es von dieser Anleitung und genau so eingegeben wie es dort steht trotzdem kriege ich einen Error an der markierten Stelle. Fehler können passieren, der Rest den ich bis jetzt getippt habe hat immer funktioniert.


```
# This programm says hello and asks for my name.

print('Hello world!')
print('What is your name?') # ask for their name
myName = input ()
print('It is good to meet you, ' + myName)
print(The [COLOR=#ff0000]length of your name is:')
      print(1en(myName))
print('What is your age?') # ask for their age
      myAge = input()
print('You will be ' + str(int(myAge) +1) +' in a year')
```

Als Meldung erschein "Invalid Syntax" Also stimmt was im Text nicht aber was muss denn da stehen damit es stimmt? 

Vielen Dank


----------



## XT1024 (19. Mai 2019)

Ich bin zwar kein (py-)Experte aber

print(The length of your name is:')
Vor The fehlt wohl das ' und bei print(1en(myName)) ist die EINS bestimmt ein _kleines L_.


----------



## taks (19. Mai 2019)

> print(Th



Das Hochkomma fehlt.


----------



## Gamer090 (19. Mai 2019)

XT1024 schrieb:


> Ich bin zwar kein (py-)Experte aber
> 
> print(The length of your name is:')
> Vor The fehlt wohl das ' und bei print(1en(myName)) ist die EINS bestimmt ein _kleines L_.



Du hattest Recht, jetzt passt es  

Schon krass wie genau man aufpassen muss beim eintippen  


```
>>> print('Hello World')
Hello World
>>> print('What is your name?')
What is your name?
>>> myName = input ()
tom
>>> print('It is good to meet you,' +myName)
It is good to meet you,tom
>>> print('The length of your name is:')
The length of your name is:
>>> print(len(myName))
3
>>> print('What is your age?')
What is your age?
>>> myAge = input ()
28
>>> print('You will be ' + str((int(myAge) +1) +' in a year')
      28
      
SyntaxError: invalid syntax
>>> print('You will be ' + str(int(myAge) +1) +' in a year')
You will be 29 in a year
```

Jetzt hat es funktioniert.


----------



## Laudian (19. Mai 2019)

2 Sachen:

1) Wenn du IDLE benutzt, kannst du oben links File > New File benutzen. Dann hast du auch Syntax-Highlighting und würdest solche Fehler sehr einfach erkennen. Das Programm kannst du dann mit F5 / Run > Run Module ausführen oder mit Alt-X / Run > Check Module auf Syntaxfehler überprüfen.

2) Man kann sowohl Anführungszeichen als auch Hochkommata für Strings benutzen:

```
print("hallo")
print('hallo')
```
Das Anführungszeichen erkennt man meiner Meinung nach besser und es ist auf einer deutschen Tastatur auch besser zu erreichen als das Hochkomma, deswegen würde ich eher Anführungszeichen empfehlen.

Edit: Wobei, in der interaktiven Shell solltest du auch Syntax Highlighting haben. Wenn dein String so bunt ist wie auf dem Bild, muss da irgendwas falsch sein.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## Gamer090 (19. Mai 2019)

Das mit dem Check Module kannte ich noch gar nicht aber werde ich in Zukunft öfters verwenden, Danke für den tipp  

Ein Teil des Textes ist in der Shell immer bunt oder?


----------



## Laudian (19. Mai 2019)

Ein String sollte komplett in Grün gehalten sein, nicht mehrfarbig(=bunt).


----------



## taks (19. Mai 2019)

taks schrieb:


> Das Hochkomma fehlt.



edit: oh, ich hätte wohl vorher noch aktualisieren sollen ^^

edit: Oha, das Bearbeiten hat nen neuen Beitrag erstellt  -.-


----------



## Gamer090 (19. Mai 2019)

Die Farben habe ich noch nicht genauer angeschaut welche Farbe was bedeutet weiss ich gar nicht.


----------



## DKK007 (19. Mai 2019)

Wenn man nicht gerade den Windows Editor verwendet, bietet jeder Editor Syntax-Highliting an. 
Meine Empfehlungen wären Notepad++ für Windows und gedit für Linux. 

Ich würde jetzt auch gerne mal in Python einsteigen, hatte bisher aber noch nicht wirklich Gelegenheit dazu.


----------



## Laudian (19. Mai 2019)

IDLE (Integrated Development and Learning Environment) ist schon ok für den Anfang. Man kann die interaktive Shell ganz gut als sehr sehr simplen Debugger verwenden.
Wenn man damit dann zurechtkommt kann man auf eine richtige IDE umsteigen und sich über die ganzen netten Features freuen, aber als Anfänger verwendet man sonst mehr Zeit für das Lernen der IDE als für das Lernen der Sprache...


----------



## DKK007 (19. Mai 2019)

Wenn man einfach mal die Sprache erkunden will und nicht erst Kompiler usw. installieren möchte, gibt es auch Online-Tools:
https://www.onlinegdb.com




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



@Gamer090 nutzt du auch ein Buch zum lernen, oder machst du das komplett online?


----------



## Kotor (19. Mai 2019)

PyCharm: the Python IDE for Professional Developers by JetBrains

Kotor


----------



## Gamer090 (19. Mai 2019)

DKK007 schrieb:


> Wenn man einfach mal die Sprache erkunden will und nicht erst Kompiler usw. installieren möchte, gibt es auch Online-Tools:
> https://www.onlinegdb.com
> 
> 
> ...



Komplett Online, Bücher will ich nicht immer mit mir rumtragen, wenn ich mir vorstelle wie gross und schwer diese Bücher sein müssen wenn da so viel drin steht wie auf manchen Webseiten  Schreibe aber Offline auf IDLE und nicht in dem Online Tool das du verlinkt hast, habe sowas schon auf ein paar Webseiten gefunden aber ich möchte mich an die Software gewöhnen die ich seit Anfang nutze. Und wenn ich Fortgeschritten bin und nicht mehr so viele Anleitungen brauche, dann will ich auch komplett Offline schreiben können  



Laudian schrieb:


> IDLE (Integrated Development and Learning Environment) ist schon ok für den Anfang. Man kann die interaktive Shell ganz gut als sehr sehr simplen Debugger verwenden.
> Wenn man damit dann zurechtkommt kann man auf eine richtige IDE umsteigen und sich über die ganzen netten Features freuen, aber als Anfänger verwendet man sonst mehr Zeit für das Lernen der IDE als für das Lernen der Sprache...



Wo sind die Unterschiede der beiden? Macht es überhaupt einen Unterschied?


----------



## Laudian (19. Mai 2019)

Welche beiden?  Die Interaktive Shell ist der Teil von IDLE, bei dem Befehle direkt einzeln ausgeführt werden, wenn du sie eintippst.

Wenn du etwas weiter bist, kann ich auch PyCharm empfehlen. Allein schon wegen der GIT Integration... Aber das sind Dinge für später.


----------



## taks (20. Mai 2019)

Oder Anaconda wär noch ne Option.
Mach zwar nicht viel mit Python aber im Moment benutz ich das 
Ist aber glaub eher speziell für Machinelearning.


----------



## Gamer090 (2. Juni 2019)

Wie habt ihr eigentlich Python gelernt ? Ich nutze auf dem Smartphone die Apps: Py und Sololearn. 

Habe trotzdem das Gefühl nicht wirklich viel zu lernen. Klar es dauert lange bis man „Profi“ ist aber auch wenn ich in den Kursen das meiste auf anhieb richtig habe, fällt es mir schwer alles zu merken wenn wieder was gefragt wird was schon länger her ist.

Alles aufschreiben wäre besser oder? Habe aber nicht täglich Zeit und Lust zu lernen.  

Cybrary und Udemy kenne ich auch aber die haben auch in den Apps nur Videos


----------



## Laudian (2. Juni 2019)

Ich habe mir ein Ziel gesetzt und dann einfach die Sachen gelernt, die ich dafür gebraucht habe. Mein Ziel war ein Kartenspiel übers Internet mit Freunden spielen zu können.

Programmieren ist ja kein Selbstzweck, Programmiersprachen sind Werkzeuge. Und im Gegensatz zu herkömmlichen Werkzeugen kann man beim Programmieren einfach alles ausprobieren.

Außerdem sind die Aufgaben von adventofcode.com meiner Meinung nach sehr praktisch. Man bekommt da immer eine Aufgabe mit einer Eingabe und kann dann sein Ergebnis überprüfen, außerdem gibt es auf reddit jede Menge Lösungsvorschläge, die man sich anschließend noch angucken kann.
Fängt leicht an und wird dann immer schwerer. Und es gibt keinerlei Hilfe, wie man die Aufgaben lösen soll. Stattdessen muss man selbst nachdenken, wie man die Aufgaben lösen kann, was meiner Meinung nach sehr wichtig ist.

Von Kursen halte ich nicht besonders viel. Ich informiere mich lieber direkt darüber, wie ich gerade anfallende Probleme lösen kann. Von diesen Kursen gehen immer mindestens 50% ins eine Auge rein und aus dem anderen wieder raus. Lieber direkt versuchen, ein Problem zu lösen und mit Stackoverflow arbeiten...


----------



## Gamer090 (2. Juni 2019)

Werde mir adventofcode mal anschauen bin eben blutiger Anfänger


----------



## Laudian (2. Juni 2019)

Adventofcode fängt wirklich sehr sehr simpel an. Du bekommst eine Eingabe wie diese (nur sehr viel länger) und sollst dann ein Programm schreiben, dass alle diese Zahlen addiert... Simpler geht es kaum. Mit jedem Schritt kommt dann einfach ein wenig Komplexität dazu, sodass die späteren Aufgaben z.B. nicht mehr mit naiven Algorithmen lösbar sind.



Spoiler



-8
-13
+17
+7
+12
-18
+19
+14
-19
+16
-10


----------



## Gamer090 (2. Juni 2019)

Das klingt ganz gut, ich erweitere mein Englisch mit der app Duolingo und die widerholt gelerntes später immer wieder, man vergisst es so schnell nicht.  Bei den von mir genannten Apps fehlt mir sowas komplett


----------



## Arkintosz (2. Juni 2019)

Dieser ganze IDE-Kram ist irgendwie so eine Art Zeitverschwendung... Der Gedanke, dass ich für alle 2 Sprachen wieder eine neue IDE bräuchte, weil die meistens nur auf eine angepasst ist, ist ja völlig abwegig.

Meiner Meinung nach braucht man nur seinen bevorzugten Editor mit Syntax-Highlighting für seine Programmiersprachen.

Wie jede Programmiersprache lernt man auch Python durch ein ganz einfaches Prinzip: Es ist etwas kaputt, oder man kann etwas nicht ohne weiteres erreichen und deshalb ist man verärgert.
Der Ärger führt dazu, dass man den Kopf nicht in den Sand steckt, sondern die Sache selbst in die Hand nimmt - Analog auch zum Heimwerken oder Werken an sich, wo auch etwas im Argen ist, dass man in Ordnung bringen muss und es dabei erst mal lernen muss.

Also wäre mein konkreter Ratschlag, dass Du (oder auch andere) Dir ein Projekt suchst, was Du schreiben kannst. Natürlich ist der Lerneffekt größer, wenn es ein komplettes Projekt ist. Aber wenn das zu schnell demotiviert, kann man auch bei einem bestehenden Programm z.B. die Bugs durchforsten und eventuell findet man einen, den man selbst beheben kann.
Es gibt gerade für Linux sehr viele Desktop-Programme die man mit Python schreiben könnte, und die einiges erleichtern. Beispielsweise auch einfach durch Umsetzung eines Konsolenprogramms in schöne Schaltflächen usw.

Ich bin selbst kein Python-Fan obwohl ich damit  auch einiges programmieren musste, und für rechenintensive Programme würde ich Python nicht nutzen (als ob man immer die Wahl hätte). Der folgende Link dürfte offensichtlich machen, was das Problem an Sprachen wie Python, aber auch dem ganzen andere Kram in dem Bereich, allgemein ist:
Which benchmark programs are fastest? | Computer Language Benchmarks Game

Wenn es doof läuft, hat man eine 100-fache Programmlaufzeit gegenüber C/C++/Rust, und das sind zum großen Teil die bestmöglichen Implementationen für die jeweilige Sprache, weil es ja ein Wettbewerb ist. Die Wahrscheinlichkeit ist also hoch, dass man gerade als Anfänger nicht die optimale Implementierung findet, und es noch schlimmer wird.
Vorteil von Python ist, dass die Entwicklung billig ist, weil es schnell geht und meist nur auf einem hohen Level programmiert wird. Das ist oft der Grund, warum Python zum Einsatz kommt, und geht leider auf Kosten des Ressourcenverbrauchs und der Programm-Geschwindigkeit.

Da es so oft benutzt wird, ist es sicherlich trotzdem nicht verkehrt, wenn man damit etwas anfangen kann.


----------



## taks (3. Juni 2019)

Meine Taktik ist meist auch lernen durch konkrete Aufgaben und nich Tutorials.
Z.B. wollt ich alle Gewinnzahlen von Euromillions haben. Weil sie mir diese nicht zuschicken wollten hab ich mir ein Webcrawler geschrieben welcher ihre Website ausliest und die Zahlen in eine csv schreibt.
Ich hab denn erstmal per google gesucht wie man die Tags einer html ausliest und das auf meine Bedürfnisse angepasst, dann weiter mit Daten in csv schreiben etc.


----------



## Gamer090 (3. Juni 2019)

Danke für die Tipps, werde mir mal überlegen was ich genauer will, ich dachte zu Beginn immer man sollte zuerst 50 Tutorials machen um eine Basis zu haben. Aber anscheinend eher die falsche Richtung, ganz ehrlich, ich habe bis jetzt nix gelernt ausser ein paar wenigen Befehlen die ich schon 1000mal getippt habe. Ich weiss nicht ob es an mir liegt, aber diese Tutorials gehen einfach zu schnell durch. Nach 5min und einer Lektion in einem Befehl habe ich das noch lange nicht abgespeichert im Hirn. Erst wenn ich es mehrmals mache funktioniert es.

Ich überleg mir mal was ich erstellen möchte und dann wie ich dahin komme, interessieren tun mich 3 Dinge wenn die auch eher für Fortgeschrittene sind:

1. Machine Learning (Deep Learning)
2. Cybersicherheit
3. Data Science

Nix für Anfänger ich weiss aber schon seit langem lese ich täglich News zu diesen Themen, aber ähm... nicht auf PCGH , da gibt es andere Quellen.


----------



## Arkintosz (3. Juni 2019)

Wenn Du was tun willst, was erst mal cool ist, dann spiele mal ein bisschen mit Selenium in Python herum. Dazu brauchst Du einen Treiber für Deinen Browser.

Z.B. könntest Du ein Programm schreiben, das sich hier auf der Seite einloggt und Dir dann auf der Konsole ausgibt, wie viele Besucher (als Int-Zahl) Dein Profil hatte.

Beispielsweise so:

```
user@localhost:~> ./usercount
user: Gamer090
pass: PASSWORD
Number of visitors: 3204
user@localhost:~>
```

Das sollte relativ anspruchslos sein, aber gleichzeitig wirst Du Dich in ein paar Dinge einlesen müssen. So ist Programmierung aber meistens. Man muss sich erst in ein Thema einlesen und die eigentliche Sprache ist nicht das große Problem.


----------



## DKK007 (4. Juni 2019)

Arkintosz schrieb:


> Dieser ganze IDE-Kram ist irgendwie so eine Art Zeitverschwendung... Der Gedanke, dass ich für alle 2 Sprachen wieder eine neue IDE bräuchte, weil die meistens nur auf eine angepasst ist, ist ja völlig abwegig.
> 
> Meiner Meinung nach braucht man nur seinen bevorzugten Editor mit Syntax-Highlighting für seine Programmiersprachen.



Solange man keine grafischen Oberflächen in seinem Programm braucht oder haben will, stimme ich dir zu.

Ansonsten greife ich gleich zum Lazarus.


----------



## taks (4. Juni 2019)

Arkintosz schrieb:


> und die eigentliche Sprache ist nicht das große Problem.



Vorallem muss man auch realistisch sein was das "auswendig können" angeht.
Wenn du einmal die Woche am Abend ein bisschen italienisch übst kannst du auch nicht erwarten, dass du nach einem Jahr fliessend sprichst.
Mach was dir Spass macht, dann ist auch die Motivation grösser.
Was ich immer mache ist ausführliche Comments zu schreiben mit der Funktionsbeschreibung der Methode & den Parametern.
Zum einen kannst du dann davon ausgehen, dass du es verstanden hast und du weisst auch noch nach einem Jahr was die Methode genau tut ^^


----------



## Gamer090 (5. Juni 2019)

Kennt jemand eines dieser E-Books?
Humble Book Bundle: Hacking 2.0 by No Starch Press (pay what you want and help charity)
 Für ein paar der Themen interessiere ich mich, weiss nur nicht ob da mit Python geschrieben wird.


----------



## Noofuu (18. Juni 2019)

Also ich habe auch mit Python angefangen, habe hier und da ein Youtube Video angesehen aber oft wurde hier und da wichtiges vergessen.
Habe mich dann entschlossen dieses Buch hier zu Kaufen : https://www.amazon.de/Python-Progra...32898&s=gateway&sprefix=python,aps,164&sr=8-3 , ich kann es nur weiter Empfehlen es ist wirklich gut erklärt, mit Übungsaufgaben etc.

Ich mache die Übungsaufgaben im Buch, und nebenbei habe ich ein kleines Projekt, was ich dann mit dem immer besseren Verständnis mit Python verbessern kann. bzw es so umschreibe wie ich es im Kopf haben will


----------



## bockwurst90 (18. Juni 2019)

Gamer090 schrieb:


> Kennt jemand eines dieser E-Books?
> Humble Book Bundle: Hacking 2.0 by No Starch Press (pay what you want and help charity)
> Für ein paar der Themen interessiere ich mich, weiss nur nicht ob da mit Python geschrieben wird.



Ist ein Mix aus Bash, C und Python, den du dafür brauchst. Mit Python kannst du grundsätzlich alle Web Attacken ausführen, du hast einen Wrapper für jedes OS Api. Du wirst keine Speicher Attacken wie mit C machen können, aber mit Python alleine kommst du weit.


----------

