Python用字母替换空白

时间:2013-09-03 04:06:52

标签: python replace

我希望用户输入的字母(授予它们在'字母'中)以替换正确顺序位置的空格(我不想'agbdf__'),并在输入所有字母时停止现在代码是,它需要多次输入字母,如果输入字母'g'七次,它就会停止。这是我正在尝试实现的刽子手代码的一部分。如果有人可以发布正确的方式进行编程(不仅仅是提示,因为我很可能无法弄清楚如何实现它),我们将非常感激。

letters='abcdefg' 
blanks='_'*len(letters) 
print('type letters from a to g')
print(blanks)
for i in range(len(letters)):
    if letters[i] in input(): 
        blanks = blanks[:i] + letters[i] + blanks[i+1:]
        print(blanks)

3 个答案:

答案 0 :(得分:1)

将您的循环更改为:

for i in range(len(letters)):
    letter = raw_input()
    index = letters.index(letter)
    blanks = blanks[:index] + letter + blanks[index + 1:]
    print blanks

您没有更换正确的空白/下划线,只是按顺序更换它们。相反,您需要找到要更换的正确空白,然后替换它。也不要指望这个代码无限运行,直到空白完全填满。如果你想要那个,你可以想出来我猜(因为你的问题是特定的替换正确的字母)。此外,您可能希望此程序还应处理“abcdef”以外的输入:)。

答案 1 :(得分:0)

letters = 'abcdefg' 

print('type letters from a to g')

all_letters = list(letters)
blanks = ['_'] * len(letters) 

while True:
    guessed_letter = input("guess > ")

    while guessed_letter in all_letters:
        index = all_letters.index(guessed_letter)
        all_letters[index] = None
        blanks[index] = guessed_letter

    output = ''.join(blanks)
    print(output)

    if letters == output:
        print("gg")
        break

或者如果您更喜欢更具刺激性的版本

letters = 'abcdefg' 

print('type letters from a to g')

all_letters = list(letters)
blanks = '_' * len(letters) 

while True:
    guessed_letter = input("guess > ")

    while guessed_letter in all_letters:
        index = all_letters.index(guessed_letter)
        all_letters[index] = None       
        blanks = blanks[:index] + guessed_letter + blanks[index+1:]

    print(blanks)

    if letters == blanks:
        print("gg")
        break

答案 2 :(得分:0)

您可以使用列表推导。这是一个例子:

letters = 'abcdefg'
typed = raw_input('Type the characters a through g: ')
print ''.join(s if s in typed else '_' for s in letters)

示例输出:

Type the characters a through g: abdef
ab_def_

这是一个更完整/更高级的刽子手示例:https://gist.github.com/dbowring/6419866