Administrator
发布于 2026-06-21 / 4 阅读
0
0

Python 简易文字聊天机器人完整实现

一、前言

本篇综合运用前面全部 Python 基础知识点:循环、条件判断、列表字典、函数、输入输出,打造一款控制台文字对话机器人。无需第三方库,纯原生代码,运行即可和机器人聊天,适合新手综合练手。

二、整体设计思路

  1. 使用字典存储问答匹配库,key 为用户输入关键词,value 为机器人回复

  2. 循环对话,输入退出即可结束程序

  3. 支持模糊关键词匹配、多随机回复、兜底未知话术

  4. 封装对话函数,结构清晰易扩展

三、完整可运行代码

python

运行

import random

# 机器人问答知识库
chat_dict = {
    "你好": ["你好呀!很高兴和你聊天~", "哈喽,有什么我能帮你的吗?", "你好,今天学习Python了吗?"],
    "早上好": ["早安!新的一天也要好好写代码", "早上好,今天也要加油学习"],
    "晚上好": ["晚上好,记得早点休息,别熬夜敲代码", "晚上好,今天学到什么新知识了?"],
    "你是谁": ["我是Python简易聊天机器人,由代码编写而成", "我是你的编程学习助手"],
    "Python": ["Python简单易学,适合自动化、爬虫、数据分析", "Python用途超多,办公自动化、做GUI、爬虫都能用"],
    "代码": ["多敲代码才能熟练,练习小项目提升最快", "写代码遇到报错别慌,学会看异常提示"],
    "再见": ["拜拜,下次再来聊天!", "再见,祝你学习顺利!"],
    "几岁": ["我没有年龄,只要代码运行我就存在", "我是程序,不存在年龄哦"],
    "吃饭": ["你快去好好吃饭吧,吃饱才有力气学编程", "今天吃什么好吃的啦?"],
    "累了": ["那就休息一会,学习不用急于一时", "放松下再继续敲代码,效率更高"]
}

# 兜底随机回复(匹配不到关键词时使用)
default_reply = [
    "这个问题我还不会,换个话题聊聊吧",
    "我暂时听不懂,我们聊聊Python怎么样?",
    "能换个说法问我吗?我理解能力有限~"
]

def get_bot_reply(user_text):
    """根据用户输入匹配机器人回复"""
    user_text = user_text.strip()
    # 遍历知识库,模糊匹配关键词
    for keyword, reply_list in chat_dict.items():
        if keyword in user_text:
            # 随机挑选一条回复
            return random.choice(reply_list)
    # 无匹配则返回兜底语句
    return random.choice(default_reply)

# 程序主循环
if __name__ == "__main__":
    print("===== Python文字聊天机器人 =====")
    print("提示:输入【退出】即可结束对话\n")
    while True:
        user_input = input("你:")
        # 判断是否退出程序
        if user_input == "退出":
            print("机器人:再见!期待下次和你聊天")
            break
        # 获取机器人回复并打印
        bot_msg = get_bot_reply(user_input)
        print(f"机器人:{bot_msg}")

四、功能讲解

1. 问答知识库 chat_dict

字典结构:关键词: [多条随机回复],同一问题可以设置多种回答,避免对话单调。

你可以自由新增对话,示例:

python

运行

chat_dict["天气"] = ["今天天气怎么样?出门记得看天气预报", "不清楚当地天气,可以去查一下哦"]

2. random 随机回复

导入random内置库,random.choice(列表)每次随机抽取一条回复,对话更自然。

3. 模糊关键词匹配

判断用户输入包含关键词就触发回复,不用完全一模一样,例如输入你好呀你好机器人都能匹配你好

4. 无限对话循环 while True

程序持续接收输入,只有输入退出才执行break跳出循环,结束聊天。

5. 兜底回复机制

当输入内容不存在知识库关键词时,自动返回预设的默认话术,不会程序报错。

五、扩展升级 1:增加情绪判断

在原有代码基础上新增负面情绪识别,自动安慰用户

python

运行

# 在chat_dict上方新增负面关键词库
sad_words = ["难过", "伤心", "难受", "烦", "崩溃", "不会", "太难了"]
sad_reply = ["别难过,慢慢来,编程学习本来就有难度", "遇到困难很正常,多练几次就懂啦", "放平心态,一点点积累就会进步"]

# 修改get_bot_reply函数,增加情绪判断
def get_bot_reply(user_text):
    user_text = user_text.strip()
    # 先判断负面情绪
    for word in sad_words:
        if word in user_text:
            return random.choice(sad_reply)
    # 再匹配普通问答
    for keyword, reply_list in chat_dict.items():
        if keyword in user_text:
            return random.choice(reply_list)
    return random.choice(default_reply)

六、扩展升级 2:自动保存聊天记录到 txt

结合文件操作,把每一轮对话自动写入本地聊天记录.txt,永久留存对话:

在主循环内print(f"机器人:{bot_msg}")下方添加代码:

python

运行

# 保存对话记录
with open("聊天记录.txt", "a", encoding="utf-8") as f:
    f.write(f"你:{user_input}\n机器人:{bot_msg}\n")

七、运行演示示例

plaintext

===== Python文字聊天机器人 =====
提示:输入【退出】即可结束对话

你:你好,我想学Python
机器人:哈喽,有什么我能帮你的吗?
你:Python代码好难,我有点烦
机器人:遇到困难很正常,多练几次就懂啦
你:再见
机器人:拜拜,下次再来聊天!
你:退出
机器人:再见!期待下次和你聊天

八、新手修改拓展教程

  1. 新增对话:直接在chat_dict里添加一行 关键词: [回复1,回复2]

  2. 增加情绪安慰:复制情绪判断代码到函数内

  3. 保存聊天记录:添加文件写入代码

  4. 更改退出关键词:把判断条件 if user_input == "退出" 改成别的文字,如if user_input == "拜拜"

九、常见问题

  1. 匹配失效:输入前后有空格,代码使用.strip()清除空格解决

  2. 回复永远同一套:忘记导入 random 库或未使用 choice 随机函数

  3. 聊天记录乱码:打开文件时必须添加encoding="utf-8"

  4. 无法退出:输入文字必须和判断关键词完全一致

十、下期预告

Python 系列入门篇到此全部完结,下一部分开启进阶拓展内容:NumPy 数组基础使用,进入数据分析板块。


评论