Hangman只得到单词的第一个字母

2024-04-26 23:02:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python 3.5.2 hangman代码:

def hangman(): wrongnums =[] print("what is the word to be guessed?") global guessnum guessnum=input('>') print("how many chances?") global chances chances=int(input('>')) print("game in beginning") global blanks blanks = '_ ' * len(guessnum) print() print(blanks) guessing() def guessing(): global chances print("guess a letter") guess=input('>') for letters in guessnum: if guess == letters: letterIndex = guessnum.index(guess) global newBlanks newBlanks = blanks[:letterIndex*2] + guess + blanks[letterIndex*2+1:] print ("Guess is correct!") check() elif guess != letters: chances -=1 print ("Guess is wrong! ", chances, " more failed attempts allowed.") guessing() def check(): print() print("Word: ",newBlanks) guessing()

当我去猜单词时,例如“car”,“c”很好,它说的是正确的。但对于“a”和“r”,它表示不正确。为什么会这样?结果如下: Outcome


Tags: ininputisdefglobalprintguessletters
1条回答
网友
1楼 · 发布于 2024-04-26 23:02:06

你不是在检查猜测的字母和单词,而是在检查单词中的每一个字母,因为for循环,所以它检查第一个字母,认为它不是wight,并且在它可以检查其他字母之前回答。试试这个:

def hangman():
    wrongnums =[]
    print("what is the word to be guessed?")
    global guessnum
    guessnum=input('>')
    print("how many chances?")
    global chances
    chances=int(input('>'))
    print("game in beginning")
    global blanks
    blanks = '_ ' * len(guessnum)
    print()
    print(blanks)
    guessing()

def guessing():
    global chances
    print("guess a letter")
    guess=input('>')
    if guess in guessnum:
        letterIndex = guessnum.index(guess)
        global newBlanks
        newBlanks = blanks[:letterIndex*2] + guess + blanks[letterIndex*2+1:]
        print ("Guess is correct!")
        check()

    else:
        chances -=1
        print ("Guess is wrong! ", chances, " more failed attempts allowed.")
        guessing()

def check():    
    print() 
    print("Word: ",newBlanks)
    guessing()

相关问题 更多 >