我希望用户输入的字母(授予它们在'字母'中)以替换正确顺序位置的空格(我不想'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)
答案 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