刽子手计划到目前为止

时间:2014-04-13 19:32:58

标签: python python-2.7

所以到目前为止我的计划是这样的:

def update():

    print word
    counter = 0
    blanks = len(word)*'-'
    blank_list = list(blanks)
    letter = raw_input('Please enter a single letter: ')

    for index in range(len(word)):
        if letter in word[index]:
            blank_list[index] = letter
            print ''.join(blank_list)
            letter = raw_input('Please enter a single letter: ')

但是当我以错误的顺序输入正确的字母时,它会将其显示为不正确的猜测,即,我的一个单词是马,如果我输入了o它会显示-o ---,但是如果我输入了h,它会显示为None,因为当猜测不正确时,没有设置要做的参数。这适用于单词[index]中的字母或字母== word [index]的情况。 关于如何解决这个问题的任何建议?

3 个答案:

答案 0 :(得分:1)

在这里,您可以通过查看确切的索引来强制执行订单:

if letter == word[index]

您想问if letter in word。您还可以使用word.index(letter)找到字母的确切索引(小心重复的字母)。

答案 1 :(得分:0)

我认为问题在于你有一个基于索引的for循环所以当你输入一个正确的答案时,下一个正确的字母必须在后面的索引中,因为你已经传递了以前的索引。对于一个刽子手程序,我可能会使用while循环执行某些操作并使用与您相同的计数,如果计数超过您的限制,则打破while循环并让您单词列出字母。然后检查您的猜测信是否在您的字母列表中。

所以,如果您的猜测限制为5,那么请执行

之类的操作

将单词分成列表 将猜测计数设为0

而guess_count< 5:     如果word_list中的字母:         #UPDATE     其他:         guess_count + = 1

答案 2 :(得分:0)

问题是您的猜测是基于索引编制的。一旦你猜出一封信,你就不能猜到一个。

运行代码:

>>> update('mouse')
mouse
Please enter a single letter: m
m----
Please enter a single letter: u
m-u--
Please enter a single letter: o
>>>

退出是因为'u'的放置位于'o'之后。而是将代码更改为:

def update(word):
        found = False
        guesses_left = 3
        blank_list = list(len(word)*'_')
        while guesses_left > 0:
                letter = raw_input('Enter your letter: ')
                for k in range(len(word)):
                        if word[k] == letter and letter not in blank_list:
                                blank_list[k] = letter
                                found = True
                if found == False:
                        guesses_left-=1
                else:
                        found = False
                print ''.join(blank_list)
                if '_' not in blank_list:
                    break
        if guesses_left < 1:
            print 'You lost!'
        else:
            print 'You won!'

运行我的代码:

>>> update('mouse')
Enter your letter: m
m____
Enter your letter: s
m__s_
Enter your letter: u
m_us_
Enter your letter: o
mous_
Enter your letter: e
mouse
You won!
>>>