首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Hangman -循环

Python Hangman -循环
EN

Stack Overflow用户
提问于 2014-11-03 00:47:47
回答 2查看 2K关注 0票数 0

我正在尝试写一个函数,用来扮演刽子手,一切都很完美,除了这个函数不知道什么时候游戏赢了。

编辑

这是我修改过的代码

代码语言:javascript
复制
def hangman():
    word = choose_word(wordlist)
    guessed_word = len(word)*['_']
    guesses = 10
    available_letters = "abcdefghijklmnopqrstuvwxyz"
    guessed_letters = ""
    letters_correct = 0
    print "Welcome to the game, Hangman!"
    print "I am thinking of a word that is", len(word), "letters long."
    print "Available letters:", available_letters
    print "You have", guesses, "guesses."
    while letters_correct != len(word):
        guess = raw_input("enter your guess:")
        if len(guess)==1 and guess.isalpha():
            if guessed_letters.find(guess) != -1:
                print "You already picked", guess
            else:
                guessed_letters = guessed_letters + guess
                index1 = word.find(guess)
                if  index1 == -1:
                    print "The letter",guess,"is not in the word", ' '.join(guessed_word)
                    guesses = guesses - 1
                    print "You have", guesses, "guesses left."
                    if guesses == 0:
                        return "You are out of guesses. You lose. The word was "+ word + "."
                    available_letters = available_letters.replace(guess, '')
                    print "Available letters:", available_letters
                else:
                    letters_correct = letters_correct + word.count(guess)
                    print"The letter", guess, "is in the word."
                    for i in range(len(word)):
                        if guess == word[i]:
                            guessed_word[i] = guess
                            print ' '.join(guessed_word)
                            if letters_correct != len(word):
                                print "You have", guesses, "guesses left."
                                available_letters = available_letters.replace(guess, '')
                                print "Available letters:", available_letters
                            elif guesses <= 0:
                                return "You are out of guesses. You lose. The word was "+ word + "."
        else:
            print "Please guess a single letter in the alphabet."
    if letters_correct == len(word):
        return "Congratualations! You figured out that the word is "+ word
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 01:05:33

挂人游戏循环不终止问题的原因是游戏同时循环检查的letters_correct计数器变量。

代码语言:javascript
复制
while letters_correct != len(word):

假设这个词是香蕉,我猜字母a

代码中处理正确猜测的分支以以下行开始:

代码语言:javascript
复制
letters_correct = letters_correct + 1

在我的单词、香蕉、a中,letters_correct变量应该增加三次。现在,如果我猜n,letters_correct应该增加两次。

在当前的实现猜测中,我按顺序只增加letters_correct两次(2),而应该是5。因此,当增加letters_count增量时,猜测次数出现在word中。

代码语言:javascript
复制
letters_count = letters_count + word.count(guess)

这样,在游戏循环中,检查letters_count变量实际上可以达到单词的长度。

票数 0
EN

Stack Overflow用户

发布于 2014-11-03 01:02:44

你有没有考虑过你的单词有多个字母的情况?

目前,如果用户猜测正确,则只增加一次letters_correct。如果每次增加一次正确字母的数量,它就会工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26706275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档