Input innerhalb einer Funktion

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.
Antworten
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Wie krieg ich es hin das wenn ich ein Input Befehl innerhalb einer Funktion habe dieser auch ausgeben wird :

Code: Alles auswählen

def eingabe ():
    zk = input("Geben sie eine Zeichenkette ein: ")
    return zk
    for z in zk :
        if ord(z) >=0 and ord(z) <=127:
            print ("True")
        else :
            return False
/code]

zumindest müsste meines Erachtens wenigstens die Shell mich nach einer eingabe fragen oder irre ich mich ?
Benutzeravatar
snafu
User
Beiträge: 6861
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Du musst eingabe() natürlich auch aufrufen. Tust du das?
Benutzeravatar
ThomasL
User
Beiträge: 1378
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

und der Code nach return zk wird nie ausgeführt
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Code: Alles auswählen

def eingabe (zk):
    zeichenkette = eingabe(input("Geben sie eine Zeichenkette ein: "))
    for Buchstabe in zeichenkette :
        if ord(z) >=0 and ord(z) <=127:
            return /code]
            
            
nun lautet mein Problem das obenstehende  funktion entweder true oder false ausgeben soll 
allerdings sind Strings immer true sobald ein Zeichen eingetippt sind und nur false falls zeichenlos, die bedingung ist bei mir das bei der eingabe überprüft werden soll ob die eingabe nur aus Zeichen welche Teil der ASCII Tabelle sind besteht. das Heist z.B. für Ö müsste false rauskommen. 

wie kriege ich es hin das der text ausserhalb vom code steht ?
Sirius3
User
Beiträge: 18264
Registriert: Sonntag 21. Oktober 2012, 17:20

Jetzt hast Du ja als Rückgabewert immer None, egal was Du eingibst. Die simple Lösung wäre, `encode` zu benutzen.
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Code: Alles auswählen

def eingabe (zk):
    zeichenkette = eingabe(input("Geben sie eine Zeichenkette ein: "))
    for Buchstabe in zeichenkette :
        if ord(z) >=0 and ord(z) <=127:
            return True
        else : return False


Bin mir unsicher ob das auch jetzt funktionieren könnte , da eigentlich meines Erachtens nach, nach return die Funktion beendet ist. gibts irgendeine Möglichkeit zu überprüfen ob die Funktion mir return oder false rausgibt ?
Benutzeravatar
snafu
User
Beiträge: 6861
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

So steigt er tatsächlich früh aus, da die Einrückungen falsch sind. Das False muss hinter die Schleife gesetzt werden, nicht innerhalb der Schleife. Ich glaube, da fehlt noch einiges an Grundlagen. Du solltest zuerst einmal ein Tutorial durcharbeiten. Ist Python deine erste Programmiersprache?
Sirius3
User
Beiträge: 18264
Registriert: Sonntag 21. Oktober 2012, 17:20

@d_rose: `zk` wird gar nicht verwendet und Du startest gleich mit einer Endlos-Rekursion, weil Du eingabe immer wieder aufrufst. Später hast Du dann bei `z` einen NameError, weil `z` wiederum nirgends definiert wird. Zum dritten beendest Du die Funktion immer nach dem ersten Zeichen.
Programmieren ist nicht raten. Lies doch mal durch was Du da geschrieben hast und versuche das Schritt für Schritt zu verstehen.
d_rose
User
Beiträge: 57
Registriert: Dienstag 30. Oktober 2018, 11:34

Ich bin neu im programmieren, es macht mir auch sehr Spaß, leider überfordert mich ein bisschen der Umfang der ganzen Sache, was alles möglich ist, hinzu kommen Termine die ich einhalten muss , da ich diese Sachen abgeben muss, ich schaue mir zahlreiche Tutorials an , hab mich bei Code Academy angemeldet und Arbeite konsequent daran besser zu werden und ich weis es ist keine Sache von heute auf morgen, ich erwarte auch nicht das hier mir Hausaufgaben oder sonstiges einfach gemacht werden sodass ich die Sachen nur kopieren muss, aber irgendwo muss ich ja an diesen Sachen arbeiten und die beste Methode meines Erachtens nach ist Trial und error und möglichst genau nach den errors zu fragen
Antworten