2012-12-07 63 views
1

在我的遊戲中,單詞首先顯示爲下劃線,所以對於單詞house,輸出將是:_ _ _ _
我無法弄清楚如何替換這些用正確的字母強調用戶在猜測單詞中的字母時回答。例如,如果用戶猜到字母「o」,那麼程序將打印出「正確!這是目前爲止的單詞:_0 _ _」 這是代碼片斷,用於生成打印在screen:蟒蛇財富遊戲輪

random_value = random.randrange(len(WORDS)) 
chosen_word = WORDS[random_value] 
blanks = (len(chosen_word) * "_ ") 

現在我需要做的就是弄清楚如何用用戶輸入替換那些下劃線,一次一個字母。

回答

0

我建議做更多的東西一樣:

In [126]: blank = ['_'] * len(chosen_word) 

In [127]: blank 
Out[127]: ['_', '_', '_', '_', '_'] 

In [128]: ' '.join(blank) 
Out[128]: '_ _ _ _ _' 

使blank現在的空白信件的數組。然後,當用戶進行正確的猜測,你可以用正確的字母替換相應的指數blank,並使用上述

0
guessed_letters = 'qxz' 
for letter in chosen_word: 
    if letter in guessed_letters: 
     print letter 
    else: 
     print '_' 

圍棋中.join()方法在祕密單詞的字母打印出來。對於每個字母,如果已經猜到了,就打印出來。如果沒有,請打印_

你可以縮短到

guessed_letters = 'qxz' 
for letter in chosen_word: 
    print letter if letter in guessed_letters else '_' 

甚至

print ' '.join(letter if letter in guessed_letters else '_' for letter in chosen_word) 
1
In [93]: chosen_word = 'house' 

In [94]: state = "_"*len(chosen_word) 

In [95]: guess = 'o' 

In [96]: new_state = [(chosen if chosen == guess else blank) 
         for chosen, blank in zip(chosen_word, state)] 

In [97]: ' '.join(new_state) 
Out[97]: '_ o _ _ _'