2015-10-15 132 views
-3

我在做一个hang子手游戏,我需要更新显示正确字母的表格。到目前为止,该计划打印此在Python中合并字符串

Enter a word: hello 
[-----] You have 6 guesses left, enter a letter: h 
Correct! 
[H----] You have 6 guesses left, enter a letter: e 
Correct! 
[-E---] You have 6 guesses left, enter a letter: l 
Correct! 
[--LL-] You have 6 guesses left, enter a letter: o 
Correct! 
[----O] You have 6 guesses left, enter a letter: 

我需要的程序做的是结合串例如[H ----] - > [HE ---]等。我将如何做到这一点?除了在没有更多破折号时结束游戏。

什么,我想要的程序看起来像一个例子是

[H----] 
[HE---] 

,程序还可以在例如随机顺序工作...

[----O] 
[-E--O] 
[HE--O] 
[HELLO] 

这是我的代码远

My code so far

+2

你可以显示你的代码,这样可以帮助你。 – AChampion

+0

你很好地解释了你的程序应该如何工作。但是,你能否在这里展示你的代码尝试?请明确说明代码的哪些部分会给您带来问题。 – idjaw

+6

发布实际代码,这很容易。不是图像。 – Leb

回答

1

通过串T刚刚循环o猜测并显示该信件,如果该信件已经被猜出,或者显示“_”,如果该信件没有。

In [127]: s = "Apple" 

In [128]: already_guessed = ['p', 'e'] 

In [129]: '[' + ''.join([letter if letter in already_guessed else '_' for letter in s]) + ']' 
Out[129]: '[_pp_e]' 
0

而不是使用“ - ”重新计算display_string,使用display_string的前一个值。注意:由于括号的存在,您需要偏移display_string的索引。

display_string = "[" + "".join([x if x == letter else display_string[i + 1] for i, x in enumerate(word)]) + "]" 
-1

这里是我的上述问题的回答,写这个了,你把你的代码之前,所以它可能不是你要找的东西,但它的工作原理。

def hangman(): 
    answer = raw_input('Enter a word: ') # getting the word 
    guesses = 6 # number of starting guesses 
    word = '[' + '-'*len(answer) + ']' # this is the string of interest to be printed 
    while True: 
     print word, 'You have %d guesses left' % guesses, 
     if guesses == 0 or '-' not in word: break 
      # game finishes if word is guessed, or guesses run out 
     letter = raw_input(', enter a letter: ') # guess a letter 
     guesses -= 1 # decrease number of guesses by 1 each time 
     for index, char in enumerate(answer): # iterate through all letters in answer 
      if letter == char: # check if guessed letter is in the answer 
       wordlist = list(word) # representing the word as a list to allow mutation 
       wordlist[index+1] = letter # mutate the correctly guessed letter 
       word = ''.join(wordlist) # recombining the list into a string