Latitude schrieb:
Soo, ich bin grad in der VM und habe einfach ma den Script von "Developer92" so wie er hier steht getestet...
Verwende es bitte als Beispiel-Code und versuche daran den Aufbau und die Funktionsweise zu verstehen – schreibe davon abgesehen aber bitte deinen eigenen Code. Weil nur so kannst du lernen, einfach eine fremde Arbeiten kopieren wird dir nicht helfen.
Naja, ich weis nicht was ich falsch gemacht habe aber es funktioniert leider nicht. Ich versteh jetzt sowieso die meisten Befehle nichtmehr 😐 Ich sehe schon ich muss Google mal wieder ein Bierchen ausgeben...
Ja, vielleicht hilft es auch, mal ein paar Tutorials durch zu arbeiten (zum Beispiel das da: https://docs.python.org/2/tutorial/).
Die Fehlermeldung...
Das liegt wohl daran, dass Developer92 ein Unicode-Zeichen verwendet hat, wenn auch in einem Kommentar: „…“
an den Anfang der Datei stellen, dann sollte das durch gehen. Aber wie gesagt, sinnvoller ist es, wenn du deinen eigenen Code entwickelst, deshalb hast du von mir auch keinen kompletten Code bekommen, sondern nur sehr abgespeckte Beispiele.
Was meint ihr mit Python3? Macht das einen großen Unterschied?
Das macht schon einen Unterschied. Auch wenn der für dich als Anfänger wahrscheinlich schwer zu erfassen sein wird. Ich würde mich seahawk1986 anschließen, das wäre sinnvoll gleich mit Python3 anzufangen. Allerdings ist Python 2.7 immer noch sehr verbreitet und wenn du ernsthaft damit arbeiten willst, wirst du wohl früher oder später auch python2.7 brauchen … hmm.
mich verwirren hier schon viel einfachere Sachen wie z.B das man 3mal ein Leerzeichen machen muss und Tab nicht funktioniert bei Schleifen und soweiter. Find ich bischen doof ☹
Das ist nunmal die Syntax. Ich weiß nicht, wie deine Erfahrung mit anderen Sprachen ist, deshalb weiß ich nicht, ob es dir was bringen würde, wenn ich das jetzt mit einer anderen Sprache erkläre. Ich versuche es mal. Wo andere Sprachen Klammern verwenden { }
um Codeblöcke zu kapseln, verwendet Python Einrückungen. Wie viele Leerzeichen/Tabs man da verwendet, das ist weitestgehend dir überlassen, es muss nur einheitlich sein. Du darfst also zum Beispiel nicht Tabs und Leerzeichen mischen.
Beispiel:
| #include <stdio.h>
int main(void)
{
puts("Hallo Welt!");
}
|
Das wäre ein einfaches „Hallo Welt“ Programm in C. Hier wird eine Funktion main
definiert, die C beim Start des Programms automatisch ausführt … zwischen den geschweiften Klammern steht der Körper der Funktion, das was die Funktion ausführt. Alles bis zur schließenden Klammer ist Teil dieser Funktion. Einrückungen, Leerzeichen und Tabs sind C dabei egal. Ich kann das also auch so schreiben:
| #include <stdio.h>
int main(void){puts("Hallo Welt!");}
|
Oder so:
| #include <stdio.h>
int main( void ) {
puts( "Hallo Welt!" ) ; }
|
Sieht aber nicht mehr so schön aus. Einrückungen werden hier üblicherweise genutzt um den Code besser lesbar zu gestalten, siehe mein erstes Beispiel. Im Grunde sind sie aber optional und dem jeweiligen Entwickler überlassen. Häufig gibt es für solche Fälle einen Styleguide, wie solcher Code formatiert werden soll, damit er gut lesbar ist und mehrere Programmierer an einem Programm gut zusammen arbeiten können weil alle den selben Regeln folgen.
Python nutzt statt den {}
Klammern ganz spezifisch Einrückungen, um den Körper einer Funktion (oder einer Schleife oder einer if-Klausel) zu definieren.
| #!/bin/python
def main():
print('Hallo Welt!)
if __name__ == '__main__':
main()
|
Die Einrückung mit 4 Leerzeichen ist die Definition, dass die Zeile print
in die Funktion main
gehört. Alle weiteren Zeilen müssten ebenfalls 4 Leerzeichen eingerückt sein. Bis eine Zeile folgt die weniger stark eingerückt ist, dann außerhalb der Funktion wäre. Das zwingt Python-Entwickler praktisch dazu saubere Einrückungen zu verwenden und lesbaren Code zu schreiben. Du kannst theoretisch statt 4 Leerzeichen auch Tabulatoren verwenden, oder eine andere Anzahl an Leerzeichen, wenn du das möchtest, aber du musst dabei konsequent sein und alle Zeilen gleich weit einrücken.
In dem Beispiel wäre die Zeile die mit if
beginnt also nicht mehr Teil der Funktion main()
, weil sie nicht eingerückt ist. Das ist hier nötig um dem Python-Interpreter zu sagen: wenn diese Datei alleine ausgeführt wird, wenn also __name__ == '__main__'
ist, dann führe die Methode main()
aus. Im Gegensatz zu C muss man dem Python-Interpreter sagen, welche Funktion beim Start ausgeführt werden soll. 😉 Hier wird also main()
aufgerufen, auch wieder eingerückt und damit Teil des if
-Blocks.
Es gibt aber einen "globalen" Styleguide der Python-Community, der 4 Leerzeichen vorsieht. Ich selbst bin da auch manchmal nicht glücklich mit der Entscheidung, aber „Tabs vs Spaces“ ist ein Glaubenskrieg, den ich jetzt hier nicht anzetteln will.
Dein Editor kann dir übrigens helfen, viele Editoren können einen Druck auf die Tab-Taste automatisch in vier Leerzeichen umwandeln und umgekehrt. Die meisten Editoren machen Einrückungen sogar automatisch für dich. ☺
~jug