我正在尝试打印一个包含字母表中字母的字符串。在用户猜出每个字母后,该猜出的字母将从字母表中删除,然后打印在控制台中以显示哪些字母尚未被猜出。
到目前为止,我已经试过remove()
,translate()
和filter()
。每次我尝试时,都会成功删除该字母,但是当需要删除另一个字母时,第一个字母会重新出现在字符串中,而第二个字母现在已被删除。基本上,这些字母不会被移除,只会在那个循环中消失。
背景信息:我正在用 python3 制作一个刽子手应用程序。因此,我遇到问题的部分代码位于函数中的 while 循环中。我正在用 python3 制作一个刽子手应用程序。因此,我遇到问题的部分代码位于函数中的 while 循环中。
alphabet = "abcdefghijklmnopqrstuvwxyz"
guess = " "
print("These letters haven't been guessed yet: " + alphabet.translate({ord(guess): None}))
预期结果:
(请注意,在第二次输入后不会再次出现前一个。)
guess = input("Enter a letter: ")
Enter letter: a
These letters haven't been guessed yet: bcdefghi
guess = input("Enter a letter: ")
Enter letter: h
These letters haven't been guessed yet: bcdefgi
实际结果:(请注意,在用户输入 'h' 后,字母 'a' 再次出现。)
guess = input("Enter a letter: ")
Enter letter: a
These letters haven't been guessed yet: bcdefghi
guess = input("Enter a letter: ")
Enter letter: h
These letters haven't been guessed yet: abcdefgi
您可以为此使用集合。首先,您创建一个包含字母表中所有字母的集合。此外,您想跟踪哪些是另一组中的猜测词。然后,每次用户猜出某个字母时,您就将其添加到猜测集中。最后,您只需打印alphabet - guessed
. 最后,我只是''.join
为了更好的输出格式。
alphabet = set("abcdefghijklmnopqrstuvwxyz")
guessed = set()
guess = "a"
guessed.add(guess)
print("These letters haven't been guessed yet: " + str(alphabet - guessed))
#Output: These letters haven't been guessed yet: {'c', 'd', 'y', 'r', 'i', 'h', 'g', 'o', 'q', 'x', 'v', 'k', 'j', 'z', 'p', 'n', 'u', 'm', 'l', 'b', 't', 'w', 'e', 'f', 's'}
print("These letters haven't been guessed yet: " + ''.join(alphabet - guessed))
#Output: These letters haven't been guessed yet: cdyrihgoqxvkjzpnumlbtwefs
从@MrFuppes 更新:使用该函数sorted
按字母顺序打印集合中的元素
print("These letters haven't been guessed yet: " + ''.join(sorted(alphabet - guessed)))
#Output: These letters haven't been guessed yet: bcdefghijklmnopqrstuvwxyz
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句