我的刽子手计划出了什么问题?

时间:2016-11-11 01:31:45

标签: python-3.x debugging

我正试图让一个函数在一个刽子手程序中对他们的空白进行正确的猜测,但它所做的只是,无论猜测是什么,无论是对还是错,它只是逐渐揭示这个词。我哪里错了?

代码:

while lettersrevealed!=word:
    guess=getGuess(lettersrevealed)
    for i in range(len(word)):
        if guess in word:
            blanks = blanks[:i] + word[i] + blanks[i+1:]
            print(blanks)

例如:  (秘密词是獾)

Guess a letter:  
a  
b*****  
ba****  
bad***  
badg**  
badge*  
badger  
Guess a letter:  
OR:  
Guess a letter:  
h  
b*****  
ba****  
bad***  
badg**  
badge*  
badger  
Guess a letter:  

1 个答案:

答案 0 :(得分:0)

问题在于for循环

for i in range(len(word)): # This will run 6 times for "badger" | 0, 1, .., 5
    if guess in word:
# blanks == ****** then gradually gets the next letter added replacing a * 
        blanks = blanks[:i] + word[i] + blanks[i+1:]
        print(blanks)

你可能想要这样的东西。

def convert_to_blanks(word, letters):
    return ''.join(c if c in letters else '*' for c in word) 

>>> word = 'badger'
>>> letters = set()
>>> convert_to_blanks(word, letters)
'******'
>>> letters.add('g')
>>> letters
{'g'}
>>> convert_to_blanks(word, letters)
'***g**'

所以你有一个while循环提示输入这样的字母。

guessed = set()
word = 'badger'
while True:
    guess = input("Guess a letter")
    guessed.add(guess)
    blanks = convert_to_blanks(word, guessed)
    print(blanks)
    if blanks == word:
        break