如何用Python实现基于提问猜动物的动物数组程序?
Python 猜动物游戏实现指南
核心思路
用字典构建决策树实现问答逻辑:每个节点包含一个问题,以及"是"/"否"对应的分支——分支要么是最终的动物名称,要么是下一个问题节点。程序通过循环向用户提问,根据回答遍历树,直到猜出目标动物。
修正并汉化后的完整代码
# 定义动物决策树 animal_tree = { "question": "它有四条腿吗?", "no": "鱼", "yes": { "question": "它有皮毛吗?", "yes": "猫", "no": "牛" } } def guess_animal(tree): print("请想一种动物") print("请用'是'或'否'回答问题。") current_node = tree while isinstance(current_node, dict): # 提问并获取用户回答 answer = input(current_node["question"] + " ").strip().lower() # 根据回答切换节点,无效输入时重复当前问题 current_node = current_node.get(answer, current_node) # 到达叶子节点,给出猜测结果 print(f"我猜你想的是:{current_node}!") # 启动游戏 guess_animal(animal_tree)
代码解释
- 决策树结构:
animal_tree是嵌套字典,question键存储当前问题,yes/no键对应回答后的分支(可以是子字典或动物名称)。 - 交互逻辑:
guess_animal函数通过循环遍历决策树:- 若当前节点是字典,就提问并获取用户回答;
- 根据回答切换到对应的分支;
- 若当前节点是字符串(动物名称),则输出猜测结果。
- 输入容错:使用
get()方法处理用户输入错误的情况(比如输入非"是"/"否"时,会重复当前问题)。
扩展建议
- 给决策树添加更多分支,比如在"有皮毛"的分支下再问"会汪汪叫吗?",分支对应"狗"和"猫";
- 当猜测错误时,允许用户输入新的动物和区分问题,动态扩展决策树;
- 按"有脊椎/无脊椎""陆生/水生"等大类整理问题,让分类更系统。
内容的提问来源于stack exchange,提问作者Стефани Иванова
相关产品推荐
相关产品推荐

