Python中能否在函数内部调用自身?自制AI交互脚本无法重启流程问题
问题原因及修复方案
你代码存在多个核心问题,按优先级排序如下:
- 未主动调用
AImain()函数:Python运行脚本时只会执行全局层级的代码,你只定义了函数没有调用,自然不会触发输入逻辑,脚本运行完函数定义就直接结束了 - 变量名不匹配:你把用户输入存到了
response变量里,但判断逻辑里用的是未定义的answer变量,运行到判断步骤会直接抛出变量未定义的报错 - if判断逻辑语法错误:
if 'Hello' or 'Hi' in answer:的写法不符合Python的判断规则,实际会被解析为if ('Hello') or ('Hi' in answer),非空字符串的布尔值永远为True,不管用户输入什么都会匹配这个条件 - 递归逻辑有风险:用递归调用
AImain()实现循环交互,用户输入次数超过Python默认递归深度(一般是1000次)后会触发栈溢出报错,更适合用无限循环实现 - 缺少必要的依赖声明:代码里用到了
random模块和welcomeMessages列表,但没有导入模块、定义列表,运行会直接报错
修正后可运行代码示例
import random # 提前定义欢迎语列表 welcomeMessages = ["你好呀!", "嗨~ 有什么我能帮你的吗?", "哈喽!"] def AImain(): # 启动先打招呼 print("AI:你好,我是你的交互助手,可以和我聊天哦") # 用while循环实现重复交互,代替递归 while True: response = input("YOU:") # 修正后的判断逻辑 if 'Hello' in response or 'Hi' in response: print(f"AI:{random.choice(welcomeMessages)}") # 可以在这里加更多关键词判断分支 # 比如判断退出关键词 elif '退出' in response: print("AI:再见啦!") break # 全局层级主动调用函数,才会执行里面的逻辑 AImain()
内容的提问来源于stack exchange,提问作者StoneNicolas93
相关产品推荐
相关产品推荐

