显示带有列表的字符串中是否存在冗余字符

时间:2014-05-05 22:53:40

标签: python python-2.7

我想知道如果带有列表的字符串中有冗余字符,您将如何显示。让我解释一下。假设您有一个带有表示空格的“_”符号的列表:

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

现在说你有一个字符串:

string = "door"

假设您希望用户通过输入Hangman风格的字符来猜测单词是什么。如果他们的猜测是正确的,你希望该字符在字符串中的同一位置的“word”数组中,所以如果他们猜测“d”,那么“word”列表将如下所示:

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

它会打印出来看起来像“d _ _ _”。到目前为止我没有问题,但是当显示冗余字符时,我遇到了问题。例如,如果用户猜到“o”,我似乎无法在数组的“门”中显示“o”,它总是如下所示:

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

我希望它看起来像这样:

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

现在请注意,这个问题与我的上一个问题非常相似,只是没有解释如何在列表中显示它们。我也不确定以前是否曾经问过这个问题,我没有发现任何类似的问题,但仍有一些问题。我很困惑,我不知道还能做什么!感谢您的时间。如果我通过询问这个问题打破了stackoverflow命令,我道歉。

5 个答案:

答案 0 :(得分:0)

您目前正在修改word的方式是什么?为确保每个字符都会显示,您可以遍历string:如果i中索引string处的字母等于猜测,请设置word[i] = guess。这样可以确保捕获所有字母。

答案 1 :(得分: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

为避免出现问题,请在输入和str.lower上使用c

输出:

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

答案 2 :(得分: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))

答案 3 :(得分:0)

因为我想知道我是否可以将其作为一个班轮:

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

答案 4 :(得分: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','_']