Benutze-Eingabe in der Shell unsichtbar machen

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
Butzelbirne
User
Beiträge: 1
Registriert: Mittwoch 29. August 2012, 20:20

Hallo liebe Python-Begeisterte! (:

Ich bin noch ein ziemlicher Frischling in Python und versuche momentan alles was ich mir beibringe, in einem Hangman-artigen Spiel unterzubringen. Das hat bisher erstaunlich gut geklappt und hat mich sehr motiviert. (Warum ich Python lernen möchte? Ich brauche irgendwie geistige Herausforderungen neben meinem Studium...) Nun bin ich aber auf ein Problem gestoßen, dass ich bisher leider nicht selbst lösen konnte. Ich möchte gerne, dass das Wort, das zu erraten ist, nicht in der Shell angezeigt wird. Das Spiel ist leider keine große Herausforderung, wenn Spieler 2 ganz einfach in der Shell sieht, welches Wort Spieler 1 eingetippt hat. Ich habe das Gefühl, dass ich das Problem nur über GUI lösen kann.(Leider kann ich das noch nicht) Hier ist der Code:

Code: Alles auswählen

b = 1
a = 0
import string

#Eingabe des Wortes
while b == 1:
    print ("Gib ein Wort ein:")
    wort = input()

    #Nur Buchstaben erlauben
    laengew = len(wort)
    for o in range (laengew):
        stelle = wort[o]
        if stelle in string.ascii_letters:
            a = a + 1
    if a == laengew :
        b = 0
    else:
        print ("Nur Buchstaben sind erlaubt!")
        a = 0

#Liste für die eingegeben Buchstaben
y = []

#umwandeln der Eingabe in eine Liste
wortliste = list(wort)
fehler = 0

#die Schleife läuft so lange, wie das Wort lang ist
for i in range (laengew):
    
    buch = 2
    x = 1

    while x != buch and fehler < 3:
        print (i+1,".", "Buchstabe")
        buch = input()
        x = wort[i]
        laengebuch = len(buch)
        

        if buch == x and laengebuch == 1:
            print ("Das ist richtig!")
            y.append(x)
            print (y)

        elif buch != x and laengebuch != 1:
            print ("Nur 1 Buchstabe!")

        elif buch not in string.ascii_letters:
            print ("Nur Buchstaben sind erlaubt!")
            
        else:
            print ("Das war leider falsch!")
            fehler = fehler+1
            print ("Verbleibende Versuche:", 3 - fehler)
        
            
if wortliste == y:
    print ("Wunderbar, Du hast das Wort", y, "erraten!")
elif fehler == 3:
    print ("Du hast keine Versuche mehr")

print ("Drücke Enter, um das Spiel zu beenden")
input()
Wäre nett, wenn mir jemand einen Denkanstoß geben könnte, der nicht über GUI läuft (:

Liebe Grüße!
BlackJack

@Butzelbirne: Schau Dir mal das `getpass`-Modul aus der Standardbibliothek an.

Ansonsten gäbe es einiges zum Programm zu sagen…

Edit: Zum Beispiel einen Hinweis auf den PEP 8 -- Style Guide for Python Code.

Die Namensgebung ist fast durchweg schlecht. Einbuchstabige Namen und undurchsichtige Abkürzungen sollte man vermeiden. Ein Name sollte dem Leser vermitteln wofür der Wert dahinter im Programmkontext steht.
Antworten