Phyton run funktioniert nur nach debuggen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

sparrow hat geschrieben: Dienstag 25. Juni 2024, 19:35 Jetzt versuchst du einen Editor zu bediene lernen statt Python.
Ruf das Programm in der Kommandozeile auf. Deren Umfang solltest du beherrschen.
Eine IDE durch Konfortfunktionen eines Editors zu ersetzen macht wenig Sinn. Auch das verbirgt vor dir, was wirklich passiert. Und genau das willst du lernen und verstehen.
Du meinst gan znormal im CMD (Eingabeaufforderung) python eingeben?
Benutzeravatar
Dennis89
User
Beiträge: 1503
Registriert: Freitag 11. Dezember 2020, 15:13

Gefolgt vom Pfad zum ausführenden Python-Skript.
Unter Linux wäre das bei mir zum Beispiel:

Code: Alles auswählen

python /home/dennis/Forum/main.py
"When I got the music, I got a place to go" [Rancid, 1993]
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Bild

Gibts da auch eine Möglichkeit um das lIve zu testen.
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Nochmal die Frage wo schreibe ich mein Programm um es als py Datei zu speichen?
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Wenn ich einen Pfad eingebe kommt folgende Nachricht
Bild
Benutzeravatar
Dennis89
User
Beiträge: 1503
Registriert: Freitag 11. Dezember 2020, 15:13

Gibts da auch eine Möglichkeit um das lIve zu testen.
Das hattest du schon, du musst nur darauf achten, wo du was hin schreibst und das eine Zeile, wie deine `input`-Zeile, nach Enter auch ausgeführt wird:

Code: Alles auswählen

[dennis@dennis ~]$ python
Python 3.11.9 (main, Apr 17 2024, 00:00:00) [GCC 13.2.1 20240316 (Red Hat 13.2.1-7)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> name = input("Gib deinen Name ein: ")
Gib deinen Name ein: Dennis
>>> age = input("Gib dein Alter ein: ")
Gib dein Alter ein: 5
>>> if int(age) < 18:
...     print(f"{name} du bist nicht volljährig")
... else:
...     print("Man bist du alt")
... 
Dennis du bist nicht volljährig
Nochmal die Frage wo schreibe ich mein Programm um es als py Datei zu speichen?
In einem normalen Editor.
Wenn ich einen Pfad eingebe kommt folgende Nachricht
Du bist ja schon mal auf dem richtigen Weg, nur gibst du `python` jetzt einen String mit und das sollte ein Pfad sein. Lass mal die " " weg.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
sparrow
User
Beiträge: 4501
Registriert: Freitag 17. April 2009, 10:28

Speicher den Quelltext als UTF-8.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Hans888 hat geschrieben: Dienstag 25. Juni 2024, 20:29 Wenn ich einen Pfad eingebe kommt folgende Nachricht
Bild
Wenn du Python starten willst, dann musst du das aus der Shell machen. Aktuell befindest du dich bereits im interaktiven Python-Interpreter und versuchst darin noch einmal Python aufzurufen. Das geht so nicht.
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Super danke für die Gedult und die Unterstützung.

Ich habe jetzt mal im ganz normalen Editor ein Programm geschrieben.
Bild

Die Datei habe ich mit Quelltext UTF-8 als Test.txt im Ordner C:\Meine Python Programme\Test.txt gespeichert.
Danach wurde die Datei umgewandelt in Test.py

Nun versuche ich das Programm zu starten, nur mit 'python' string funktioniert es irgendwie nicht?
Ich habe die Zeilen mit meinen Eingaben einmal gelb eingefärbt.

Bild
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Auch wenn ich es direkt in der Shell probiere, hoffe das ist die Datei under C:\Benutzer\AppData\Local\Programs\Python\Python312\python.exe
Klappt es leider nicht, meine Einträge habe ich wieder gelb eingefärbt.

Bild
Benutzeravatar
__blackjack__
User
Beiträge: 13919
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hans888: Du hast Python bereits gestartet. Aber ohne zu sagen was ausgeführt werden soll. Deshalb startet Python die interaktive Shell. *Da* kannst Du dann *Python*-Quelltext eingeben, der dann Eingabe für Eingabe direkt ausgeführt wird. Aber python gefolgt von einem Leerzeichen und einem Dateipfad ist kein gültiger Python-Quelltext. Genau dass sagen Dir die ganzen Fehlermeldungen.

Deine *erste* Eingabe im vorletzten Beitrag hätte richtig sein müssen, also python gefolgt von dem Dateipfad. Oder Du musst die interaktive Python-Shell beenden um wieder zur Kommando-Shell von Windows zurück zu kommen. Und dann dort den richtigen Aufruf eingeben.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Ah ich muss das in der EIngabeaufforderung so eingeben.
JUHUU es klappt :)

Bild
file upload direct link
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Einen großen Nachteil hat das Schreiben im Editor. o-O
Man sieht nicht ob man einen Tippfehler oder eine Klammer vergessen hat.

Mit Pycharm oder auch Notepad++ werden die Befehle sofort farblich angezeigt, wenn es richtig ist. :D
Wäre glaube am Anfang besser für mich, das zu erkennen.
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

@Dennis89
Das mit den String hat irgendwie ned geklappt.
Würde mich dennoch intressieren wie das geht?
gerpark
User
Beiträge: 8
Registriert: Montag 19. Januar 2015, 20:58

Es gibt auch sehr einfache Entwicklungsumgebungen. Ich arbeite mit meinen Schülern v.a. mit Thonny, das kann auch bei einer
Standardinstallation (python.org) leicht nachträglich installiert werden, wenn man Python auf der Kommandozeile aufrufen kann.
Benutzeravatar
__blackjack__
User
Beiträge: 13919
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Hans888: Zum programmieren geeignete Editoren machen Quelltext bunt. Natürlich nicht (automatisch) wenn die Datei mit *.txt endet, denn das ist die Endung für Text ohne vorgegebene Struktur.

Das > vor dem python ist noch zu viel.

In Zukunft könntest Du Texte auch als Texte in den Beitrag kopieren statt Bildschirmfotos davon zu machen. Das sind weniger Daten und es ist hier im Forum leichter lesbar. Insbesondere auch für Leute die mit einem Mobilgerät dabei sind.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

@_blackjack_
oh das mit den Bildern wusste ich nicht, ja ich werde zukünftig den Text kopieren.
Editoren die dafür geeignet sind, sind zum Beispiel Notepad++?
Das > ist ein Stadart ding von Windows in der Eingabeaufforderung.
Ich habe lediglich meinen Benutzernamen geschwärtzt nach Users\Benutzer>, deshalb hab ich das > weis gelassen. :)
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Ein Großes Lob an euch für eure Geduld und Unterstüzung :) jetzt kan ich erstmal starten :)
Hans888
User
Beiträge: 44
Registriert: Montag 10. Juni 2024, 08:58

Ich bin jetzt auf Visual Stude Code umgestiegen.
Man muss nur Python installieren und danach Visual Studio Code.
Nur beim aller ersten Ausführen eines Codes wird direkt nach einer Python-Erweiterung Installation gefragt.
Nachdem man das gemacht hat, läuft es.

Ich hab mich auch direkt mit einen Spiel versucht, da aber das Spiel nur einmal ausgeführt wurde so wie es in Youtube Video programmiert war und dann beendet wurde, hab ich selbst experimentiert.
Und das ist das Ergebnis.

Was ich nicht schaffe, bei der Eingabe am Schluss soll nur bei "N" das Programm wiederholt werden und bei anderen Eingaben soll foglendes erscheinen.

Ihre Eingabe war falsch, bitte wiederholen SIe ihre Eingabe.
Wollen Sie das Programm beenden? (Y/N):

Wie kann ich das realisieren?

Code: Alles auswählen

import random

while True:
    under_bound = 0
    upper_bound = 100

    secret_Number = random.randint(under_bound, upper_bound)


    print(" ")
    print("Glückspiel Zahlen raten")
    print(" ")
    print("Es wurde soeben eine Zufallszahl zwischen " + str(under_bound) + " und " + str(upper_bound) + " generiert.")
    print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
    print("Viel Erfolg!")
    print(" ")

    guess = None
    count = 1

    while guess != secret_Number:

        guess = int(input("Wähle eine Ganzzahl zwischen " + str(under_bound) + " und " + str(upper_bound) + ": "))

        if guess == secret_Number:
            print("Yeahhh, das ist korrekt.")
        elif guess < secret_Number:
            print(" Die gesuchte Zahl ist größer als deine geratene Zahl!")
            count = count +1
        else:
            print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
            count = count +1

    print("Du hast " + str(count) + " Versuche benötigt um die korrekte Zahl zu erraten!")
    print(" ")

    c= input("Wollen Sie das Programm beenden? (Y/N): ")
    if c.upper() == "Y":
        break
Sirius3
User
Beiträge: 18216
Registriert: Sonntag 21. Oktober 2012, 17:20

Es heißt "lower_bound" nicht "under_bound". Strings stückelt man nicht mit + zusammen, sondern benutzt Format-Strings.
Wenn man eine Schleife hat, die nur deshalb anläuft, weil man einer Variable einen Dummy-Wert zuweißt, dann sollte das eine while-True-Schleife sein.

Code: Alles auswählen

import random

LOWER_BOUND = 0
UPPER_BOUND = 100

while True:
    secret_Number = random.randint(LOWER_BOUND, UPPER_BOUND)

    print()
    print("Glückspiel Zahlen raten")
    print()
    print(f"Es wurde soeben eine Zufallszahl zwischen {LOWER_BOUND} und {UPPER_BOUND} generiert.")
    print("Deine Aufgabe ist es, zu erraten welche Zahl es ist.")
    print("Viel Erfolg!")
    print()

    count = 1
    while True:
        guess = int(input(f"Wähle eine Ganzzahl zwischen {LOWER_BOUND} und {UPPER_BOUND}: "))
        if guess == secret_Number:
            print("Yeahhh, das ist korrekt.")
            break
        elif guess < secret_Number:
            print("Die gesuchte Zahl ist größer als deine geratene Zahl!")
        else:
            print("Die gesucht Zahl ist kleiner als deine geratene Zahl!")
        count += 1

    print(f"Du hast {count} Versuche benötigt um die korrekte Zahl zu erraten!")
    print()

    c = input("Wollen Sie das Programm beenden? (Y/N): ")
    if c.upper() == "Y":
        break
Zu Deiner Frage: Du kennst bereits Schleifen. Hast eine Schleife um die korrekte Zahl einzugeben; was fehlt Dir so eine Schleife für die korrekte Eingabe eines Buchstabens zu schreiben?
Antworten