python - 如何在while循环中的每个循环之后从字符串中删除一个字符
问题描述
我正在尝试打印一个包含字母表中字母的字符串。在用户猜到每个字母之后,该猜到的字母将从字母表中删除,然后在控制台中打印以显示尚未猜到的字母。
到目前为止,我已经尝试过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
实际结果:(注意字母 'a' 在用户输入 'h' 后重新出现。)
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
推荐阅读
- mysql - 节点回调返回 mysql 结果,但我无法通过 google 上的操作向用户打印对话流
- javascript - 如何输入本地视频作为 PoseNet 的输入源?
- reactjs - 当另一个组件变得活跃时,如何暂停一个组件?
- excel - VBA简单Vlookup到关闭的工作簿 - 语法错误
- elasticsearch - 如何为以下 json 创建 Fluent DSL lambda 表达式
- android - 即使重新启动,我的应用程序仍保持登录状态
- r - 我有一个示例数据集,其中缺少值
- java - 通过连接和多个where子句MYSQL获取记录
- mysql - 制作一个 Mysql 表,我不断收到相同的语法错误
- android - 那么如何返回正确的 RecyclerView.ViewHolder