2014-05-05 147 views
0

我在想如果字符串中有多餘的字符和列表,你會怎麼顯示。讓我更好地解釋一下。假設你有一個清單「_」表示一個空格符號:顯示一個字符串中是否有多餘字符

word = ["_","_","_","_"] 

現在,假設你有一個字符串:

string = "door" 

比方說,你希望用戶猜詞是通過輸入什麼字符Hang子手式。如果他們的猜測是正確的,那麼您希望該字符在字符串中的同一位置處的「字」數組中,所以如果他們猜測「d」,則「字」列表將如下所示:

word = ["d","_""_""_"] 

它會打印出來看起來像「d _ _ _」。到目前爲止,我沒有任何問題,但是當顯示冗餘字符時,我遇到了問題。例如,如果用戶猜測「O」,我似乎無法在「門」與陣列同時顯示「O」 S,它總是看起來是這樣的:

word = ["_", "o", "_", "_"] 

我希望它看起來像這樣的:

word = ["_", "o", "o", "_"] 

現在,請注意,這個問題是非常相似,我的最後一個,但一個沒有解釋如何在列表中顯示出來。我也不確定這是否曾被問過,我還沒有發現任何類似的問題,但仍然可能會有一些。我只是很困惑,我不知道還有什麼要做!感謝您的時間。如果我通過提出這個問題來破壞一個stackoverflow命令,我很抱歉。

+0

告訴我們代碼是''「_」,「o」,「_」,「_」]' – mhlester

回答

0

你需要循環的話,每次:

ans = 'door' 
word = ['_' for _ in ans] 

while '_' in word: 
    guess = raw_input('Guess a char') 
    for i, c in enumerate(ans): 
     if guess.lower() == c.lower(): 
      word[i] = c 
    print word 

爲了避免問題的情況下,在輸入和c使用str.lower

輸出:

Guess a char 
d 
['d', '_', '_', '_'] 
Guess a char 
o 
['d', 'o', 'o', '_'] 
Guess a char 
r 
['d', 'o', 'o', 'r'] 

Process finished with exit code 0 
0

您目前修改word的方式是什麼?爲了確保每個字符都會出現,您可以遍歷string:如果i處的索引string中的字母等於猜測值,請設置word[i] = guess。這可確保所有信件都會被捕獲。

0

這將是很高興看到你有什麼代碼,到目前爲止,能夠爲您指出正確的方向,但看看這個:

def check_guess(word, guessed_character, guess_list): 
    if guessed_character in word: 
     for index, character in enumerate(word): 
      if guessed_character == character: 
       guess_list[index] = character 

    return guess_list 

WORD = 'door' 
guess_list = ['_'] * len(WORD) 

while '_' in guess_list: 
    guessed_character = raw_input() 
    print '{}'.format(check_guess(WORD, guessed_character, guess_list)) 
0

因爲我想看看我能得到這是一個內襯:

string = 'door' 
guesses = ['o'] # fill this in as you get guesses 
word = [i in guesses and i or '_' for i in string] 
+0

對不起,我的錯誤。顯然今天有點觸發快樂。 –

+0

@SteinarLima嚇了我一秒鐘:P –

0
word = 'door' 
blanks = ['_' for x in word] # easy way to generate blanks from word 
guess = 'o' 
[guess if x == guess else '_' for x in word] #=> ['_','o','o','_'] 
相關問題