dedlfix: Python: Eingabe wird verworfen

Beitrag lesen

echo $begrüßung;

habe mich vor einigen Tagen an python rangewagt und nun dank einer Erinnerung eines C++-Tutorials ein kleines Spielchen geschrieben.

Du solltest deine C/C++-Kenntnisse beiseite legen, wenn du Python programmierst. Das sieht nicht besonders gut aus, was du da hingezaubert hast.

Sobald der Benutzer "t" eintippt, sollte ein Tipp kommen, nach dem Tipp  kann er wieder das normale Spiel fortsetzen. Ab diesem Moment ist seine Eingabe einfach "none".

Du setzt nicht das normale Spiel fort, du rufst nach dem "t" die Funktion human rekursiv auf. Wenn darin kein "t" eingegeben wurde, landest du im else-Zweig von if abziehen == 't'. Duort gibst du mit return etwas zurück. Damit kehrst du wieder in den ursprünglichen Aufruf von human() zurüch und da dort keine weitere Anweisung auszuführen ist, beendet sich human(), und gibt dabei nichts zurück ...

Soweit dazu. Gestattest du noch ein paar allgemeine Bemerkungen?

if __name__ == "__main__":
    main()[/code]

Hast du vor, das als eingebundenes Modul laufen lassen zu können? Dann solltest du aber auch auf Dinge wie sys.exit() verzichten. Wenn nicht, kannst du das Hauptprogramm auch direkt und ohne main() laufen lassen (denn das ist typisch C und unter Python nicht nötig).
Es besteht auch keine Notwendigkeit, die Funktionen human() und computer() innerhalb von main() anzusiedeln.

while abziehen in range(1, 4):
                return 100
                break
            else:
                print 'Schiedsrichter [%d]: Du darfst nur eine, zwei oder drei Münzen entfernen' % muenz
                return 100

Hier reicht zum einen ein einfaches if statt einer Schleife. Die Schleife bricht sowieso im ersten Durchlauf ab, indem die Funktion ganz verlassen wird und auch der else veranlasst ein Verlassen der Funktion. Außerdem ist das break überflüssig, da es wegen des vorangehenden return niemals ausgeführt wird.

echo "$verabschiedung $name";