Python 2 statt Python3 als Standard

  • File "D:\Python27\spiel.py", line 5, in <module>

    if zahl < tipp:

    TypeError: '<' not supported between instances of 'int' and 'str'

    Die Fehlermeldung besagt, dass du in Zeile 5 versucht eine Zahl mit einem Text zu vergleichen. Entweder du wandelst die Zahl in Text oder umgekehrt den Text in eine Zahl. Ich würde die zweite Variante bevorzugen,

    Python
    tipp = int(input("Dein Tipp:"))

    Glaube ersetzt kein Wissen

  • Hallo,

    Wolke: die Fehlermeldung hat aber so rein gar nichts mit Python 2 oder 3 zu tun. Den Fehler bekommst du immer.

    Ansonsten zum Code:

    • `print` ist in Python 2 ein Statement -> die Klammern hinter `print` können weg.
    • Bei Python gilt: eine Zeile, ein Befehl / Variablenzuweisung etc. Syntaktisch funktioniert es zwar, Befehle mit dem Semikolon abzutrennen. Macht aber keiner, weil stilistisch schlecht, weil des den Quelltext unleserlich macht.
    • Strings baut man - auch unter Python 2.7 - mit der `format`-Methode von Strings zusammen und nicht mit einem Komma. Ab Python 3.6 kann man auch f-Strings nehmen.
    • `random.randrange(10000)` kann eine 0 als Rückgabewert haben. Dann würde dein Programm behaupten, man hätte richtig getippt, obwohl man keine Eingabe gemacht hat. Da solltest du vielleicht mal über den ersten Wert nachdenken, den du `tipp` vor der Schleife mit gibst.

    Gruß, noisefloor

  • Wolke : die Fehlermeldung hat aber so rein gar nichts mit Python 2 oder 3 zu tun. Den Fehler bekommst du immer.

    Nö, in Python 2 ist das Ergebnis von input ein int, wenn du eine ganze Zahl eingibst, in Python 3 ein str. Insofern bekommt man mit diesem Programm unter Python 2 die Fehlermeldung nicht. Ansich ist das Problem ("string" < zahl) nicht versions-spezifisch, das stimmt.

  • Hi, das sind tolle Tipps die mir bei P3 helfen.

    Eine Frage habe ich noch: Bei Geany kann ich unter Execute einen Befehl eingeben der Geany auf Python2 umschaltet.

    Da ich einige Skrips in P2 habe könnte ich diese einlesen und ausführen, sonst muss ich alles im Shell eigeben und

    darf mich nicht vertippen. Datei "öffnen mit P2" geht nicht.

    Wie heißt der Befehl?

  • Hallo,

    das ist ziemlich wirr... Geany ist in erster Instanz ein Editor, da kannst du bestenfalls auf Python 2 bei der Syntaxhervorhebung umschalten...

    Willst du das Verhalten von Geany beim Klick auf "Erstellen" beeinflussen willst, dann geht das über "Erstellen -> Kommandos zum Erstellen konfigurieren".

    Gruß, noisefloor

  • Hallo noiseflor, mein eigentliche Problem ist: Ich kann keine Datei im Raspberry mit Python2 öffnen . In Windows läuft alles aber nicht im Raspi.

    Die Oberföäche ist in Win auch anders als im Raspi. Es fehlt die Möglichkeit "Datei öffnen" .Ich hänge mal zwei Bilder an.

    Gruß Wolke

  • Der Unterschied ist, dass du unter Linux ein normales Terminalfenster hast, die grafischen Sachen wie die Menüleiste sind also nur für die Funktionen des Terminalemulators da und nicht für das Programm das darin läuft (in dem Fall python), während unter Windows python offensichtlich als grafisches Programm läuft.

    Um ein Programm mit python auszuführen kenne ich zwei Möglichkeiten:

    • das Starten des Programms von einer Shell (wieder aus dem Terminal) python2 pfad/zu/meinem/programm.py
    • oder aus python2 mit dem Befehl execfile("pfad/zu/meinem/programm.py") oder in python3 mit exec(open("pfad/zu/meinem/programm.py").read())
  • Könnt ihr jetzt bitte Mal aufhören, Python 2 als "Lösung" anzubieten...
    :denker:

    Nein. Denn es gibt genug "Anleitungen" im Internet, die noch auf Python2 aufsetzten. Jemand der ein Problem mit abgetippten Code hat, hilft es in erster Linie gar nicht, wenn man ihm sagt er solle Python3 verwenden. Ich halte es für wesentlich zielführender dem Fragesteller bei seinem akuten Problem zu helfen, mit dem Hinweis auf die Python3 Version. Oder gar einen lauffähigen Code anzubieten, der auf Python3 basiert.

    Und ja, ich verstehe dein Bestreben möglichst nur noch Python3 einzusetzen. Aber verstehe du auch Jemand, der neu mit Rechnern ist und nach Hilfe sucht. Ein Beispiel: Der Kaminkehrer deines Vertrauens kommt und sagt, dass deine Heizung nicht mehr sauber arbeitet. Also gehst du zum Heizungsbauer und fragst nach Rat, natürlich nicht nur einer sondern mehrere (Kostenvergleich/Termine/Verfügbarkeit). Alle sagen du brauchst einen neuen Kessel, nur einer sagt, stimmt der Brenner ist alt, das akute Problem liegt an einer Zerstäuberscheibe für das Heizöl die erneuert werden müsste, ausserdem erwähnt er noch, dass ein neuer Brenner/Kessel besser isoliert ist. Was denkst du über die anderen Heizungsbauer?

    Glaube ersetzt kein Wissen

  • Bei Geany kann ich unter Execute einen Befehl eingeben der Geany auf Python2 umschaltet.

    Da ich einige Skrips in P2 habe könnte ich diese einlesen und ausführen, sonst muss ich alles im Shell eigeben und

    darf mich nicht vertippen. Datei "öffnen mit P2" geht nicht.

    Wie heißt der Befehl?

    Du meinst das hier?:

    Wie man sieht steht da (hier) python "%f" Mit:

    Code
    pi@raspberrypi:~/RAM $ python --version
    Python 2.7.13
    pi@raspberrypi:~/RAM $ python3 --version
    Python 3.5.3

    ergibt sich daraus (wenn ich mich nicht irre), das Python 2 zum Ausführen (F5 oder den Papierflieger klicken) benutzt wird. Wenn es bei dir gleich ist, wird schon Python 2 benutzt. Für Python 3 müsste bei Execute wohl python3 "%f" stehen.

  • Hallo,

    • oder aus python2 mit dem Befehl execfile("pfad/zu/meinem/programm.py") oder in python3 mit exec(open("pfad/zu/meinem/programm.py").read())


    Uh, das ist wirklich gruselig, weil ganz ganz schlimm. Wer das liest -> direkt wieder vergessen.

    Wenn man aus Python (egal welche Version) Python Code ausführen möchte -> dafür gibt es das import-Statement.

    Wolke: wenn du Linux effektiv nutzen willst, dann freunde die mit der Kommandozeile an. Auch, wenn es für Windows-Nutzer ungewohnt ist.

    Gruß, noisefloor

  • Es war nicht als besonders elegante oder dauerhafte Lösung gedacht, aber eine Pythondatei mit Pfad zu importieren geht nicht und selbst wenn es funktionierte, würde das Programm dabei ja noch nicht zwangsweise ausgeführt.

    Gibt es denn etwas anderes, was man als das linuxsche Äquivalent zu Datei→Öffnen in der grafischen Pythonkonsole unter Windows bezeichnen könnte?

  • aber eine Pythondatei mit Pfad zu importieren geht nicht

    Doch.

    selbst wenn es funktionierte, würde das Programm dabei ja noch nicht zwangsweise ausgeführt.

    Der Code im globalen Namensraum wird ausgeführt - und Funktionen importiert man und ruft sie auf.

    Gibt es denn etwas anderes, was man als das linuxsche Äquivalent zu Datei→Öffnen in der grafischen Pythonkonsole unter Windows bezeichnen könnte?

    Den Python-Interpreter ganz normal in einer Shell mit dem auszuführenden Script als Argument aufrufen.

  • Nein. Denn es gibt genug "Anleitungen" im Internet, die noch auf Python2 aufsetzten. Jemand der ein Problem mit abgetippten Code hat, hilft es in erster Linie gar nicht, wenn man ihm sagt er solle Python3 verwenden. Ich halte es für wesentlich zielführender dem Fragesteller bei seinem akuten Problem zu helfen, mit dem Hinweis auf die Python3 Version. Oder gar einen lauffähigen Code anzubieten, der auf Python3 basiert.

    Und ja, ich verstehe dein Bestreben möglichst nur noch Python3 einzusetzen. Aber verstehe du auch Jemand, der neu mit Rechnern ist und nach Hilfe sucht. Ein Beispiel: Der Kaminkehrer deines Vertrauens kommt und sagt, dass deine Heizung nicht mehr sauber arbeitet. Also gehst du zum Heizungsbauer und fragst nach Rat, natürlich nicht nur einer sondern mehrere (Kostenvergleich/Termine/Verfügbarkeit). Alle sagen du brauchst einen neuen Kessel, nur einer sagt, stimmt der Brenner ist alt, das akute Problem liegt an einer Zerstäuberscheibe für das Heizöl die erneuert werden müsste, ausserdem erwähnt er noch, dass ein neuer Brenner/Kessel besser isoliert ist. Was denkst du über die anderen Heizungsbauer?

    so ist es und ich möchte nur solche Programme öffnen um meinen Enkel an Paspberry heran zu führen.:conf:

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!