Usereingabe wird ignoriert

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
seiby
User
Beiträge: 13
Registriert: Samstag 30. April 2011, 05:50

Hallo,
ich bin jetzt bei "learn python the hard way" bei der Aufgabe, ein Text-Adventure zu programmieren.
Mein Problem ist, dass ich nicht herausfinde, warum der raw_input nicht so funktioniert, wie er soll.
Er arbeitet die def's einfach runter, egal was ich eingebe.
Hier der Code:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sys import exit

def start():
    print "Das Telefon klingelt."
    print "Der Professor will dich in seinem Labor sehen."
    print " Es scheint ihm relativ wichtig zu sein."
    print "Gehst du hin?"

    entscheidung = raw_input("> ")

    if entscheidung == "ja" or "Ja":
        labor()
    elif entscheidung == "nein" or "Nein":
        end(u"Du erfährst nie, was der Professor dir sagen wollte.\nAber du hast ihn nie wieder gesehen...")
    else:
        print u"Ungültige Eingabe."        

def end(warum):
    print warum
    exit(0)

def labor():
    print "Gut, dass du gekommen bist."
    print "Ich habe soeben meine neueste Erfindung fertiggestellt."
    print "Es ist eine Maschine, mit der man in der Zeit reisen kann!"
    print u"Noch ist sie im Teststadium, und deshalb nicht gerade ungefährlich."
    print "Aber ich brauche eine Testperson."
    print u"Würdest du mir helfen?"

    entscheidung = raw_input("> ")

    if entscheidung == "ja" or "Ja":
        zeitmaschine(burg)
    elif entscheidung == "nein" or "Nein":
        end(u"Der Professor ruft seinen anderen Assi an.Der macht es und wir berühmt.")
    else:
        print u"Ungültige Eingabe."        
        
def zeitmaschine(ort):
    print "Du wirst nicht viel davon merken."
    print "Achtung, es geht los!"
    print "Alles um dich dreht sich."
    print "Du fragst dich gerade, ob das normal ist,"
    print "Da wird dir klar, dass es das nicht ist."
    print "Es gibt einen lauten Knall und du landest"
    ort()

def burg():
    print u"im Mittelalter.\nVor dir siehst du eine große Burg."
    print u"Wirst du die Burg erkunden oder zurückreisen ?"

    entscheidung = raw_input("> ")

    if "Burg" or "burg" in entscheidung:
        print u"Auf dem Weg zur Burg wirst du von Räubern überfallen."
        print "Sie sind von deiner Zeitmaschine begeistert, denn"
        print u"sie halten sie für wertvoll."
        print "Du willst hier nicht für immer bleiben, und gibst sie nicht heraus."
        #Entscheidungsmöglichkeit einbauen, zeitmaschine rausgeben
        # ja/nein ,  zeitmaschine zurückerhalten
        print u"Um sie trotzdem zu erhalten, töten dich die Räuber."
        end("Pech gehabt!")
start()
MfG
seiby
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

raw_input funktioniert, nur deine Bedingungen im if nicht.

So versteht es python:

Code: Alles auswählen

    if (entscheidung == "ja") or "Ja":
Sprich, das ist immer "True". Du willst:

Code: Alles auswählen

    if entscheidung == "ja" or entscheidung == "Ja":
Was man auch als

Code: Alles auswählen

    if entscheidung in ("ja", "Ja"):
oder besser als (funktioniert dann auch mit jA oder JA)

Code: Alles auswählen

    if entscheidung.lower() == "ja":
schreiben könnte. Der Ausdruck "A or B in C" im letzten if bewirkt dementsprechend auch nicht, was du denkst.
seiby
User
Beiträge: 13
Registriert: Samstag 30. April 2011, 05:50

ah, thx :)
Da hing ich die halbe nacht dran :D
Antworten