Ich lerne gerade Python und versuche, eine Reihe von Minispielen zu erstellen, um mein Grundwissen zu festigen, aber es gibt ein paar Dinge, die ich mit meinem tun möchte Spiel, dass andere hier nicht haben (zumindest was ich gesehen habe), und das ist Whitespace zwischen Wörtern aus der Antwort und der "maskierten" Antwort zu entfernen. Ich nehme an, es würde als eine "wenn, sonst" Art von Aussage gemacht werden? Bitte korrigieren Sie mich, falls ich falsch liege.Python Henker, Entfernen von Leerzeichen aus dem Antwort-Pool und verfeinern, was eingegeben werden kann
for x in range(i): ## where i is the word
if x == " ":
continue ## wouldn't it be pointless to append something that you don't want to change?
else:
word.append('_')
Eine andere Frage, die ich hatte, war in Bezug auf eine Schleife Aussage, die ich am Anfang meines Spiels haben, innerhalb dieser Schleife habe ich eine if else/die besagt, dass, wenn es mehr als 1 Buchstabe in der Vermutung sind, wird es gib eine Aussage zurück, die dem Benutzer sagt, dass sie nicht gültig ist. Aber das Spiel hört sofort auf, Nachwort zu arbeiten.
while guesses < 6:
guess = raw_input("Please guess a letter: ")
if len(guess) > 1:
return "One letter at a time!"
else: continue
Ich bin mir nicht ganz sicher, was zu meinem Code hinzufügen, um es für die Eingabe danach fragt, macht weiter.
Hier ist mein voller Code, es funktioniert momentan nicht für mich, nachdem ich nach Eingabe gefragt habe ... Ich nahm den Code von einem anderen Benutzer hier und reparierte es nach meinem Geschmack, da ihr Spiel nicht mehr als ein Wort verwendete und ich habe nicht überprüft, ob mehr als ein Buchstabe eingegeben wurde, wenn ich dazu aufgefordert wurde, und ich dachte mir, es wäre eine gute Übung, vorhandenen Code zu modifizieren, damit er etwas mehr tut, als er ursprünglich tut.
def hangman():
guesses = 0
word = []
guessed = []
words = ["bichon frise", "maltese", "dachshund", "pomeranian", "golden retriever", "shih tzu", "rottweiler", "pit bull", "beagle", "poodle", "akita", "basset hound", "border collie", "boston terrier", "boxer", "bulldog", "chow chow", "chihuahua", "chinese crested", "french bulldog", "great dane", "great pyrenees", "greyhound", "icelandic sheepdog", "irish wolfhound", "komondor", "mastiff", "shnauzer", "pekingese", "welsh corgi", "redhound coonhound", "samoyed", "shiba inu", "weimaraner", "whippet", "italian greyhound", "yorkshire terrier"]
print "Welcome to Hangman. The words chosen are the names of various breeds of dogs, try and guess the word before the man is hung!"
answer = random.choice(words)
i = len(answer)
print "The length of the word is", i, "characters long"
for x in range(i):
if x == " ":
continue
else:
word.append('_')
while guesses < 6:
guess = raw_input("Please guess a letter: ")
if len(guess) > 1:
return "One letter at a time!"
else:
continue
if (guess in i):
print "The letter is in the word."
for index, letter in enumerate(i):
if letter == guess:
word[index] = guess
guessed.append(guess)
else:
print "The letter is not in the word"
guesses = guesses + 1
guessed.append(guess)
print "You have guessed these letters so far: %s)" % (''.join(guessed))
print "Letters matched so far %s): %" (''.join(word))
if ''.join(word) == answer:
break
if guesses == 6:
print "You didn't guess the right answer in time! The answer was %s" % answer
else:
print "You guessed the word!"
Es ist ziemlich klar aus dem Code, dass "i" ist ein int ... – schwobaseggl
@schwobaseggl: Nun in dem ersten Code-Fragment der ersten Zeile heißt: '## wo i ist das Wort 'weiterhin macht es keinen Sinn zu vergleiche 'x' mit' ''auf jeden Fall. –
Ah, vergaß die Rückkehr, hoppla! Und die Wortliste, die Sie vorgeschlagen haben, ist viel kürzer und besser als die Range-Anweisung, die ich aufgestellt hatte! Vielen Dank. Ich bin mir sicher, dass ich das herausfinden werde. – kat