You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修复WAV音频处理程序中实现用户操作引导的递归函数

修复后的WAV音频处理工具递归引导函数

原代码核心问题

  • 用户输入仅在程序启动时执行一次,递归过程中不会重新提示用户选择操作
  • 递归调用位置错误,每个判断分支后无限制调用自身会直接触发栈溢出
  • 缺失s(查看采样率)、q(退出程序)两个选项的处理逻辑
  • 分支判断逻辑混乱,缩进错误导致else仅匹配最后一个if语句
  • 非法输入提示缺少重新选择的逻辑

修复后完整可运行代码

def c_function():
    print("you have successfully called c_function") # 调整播放速度功能占位
    return
def m_function():
    print("you have successfully called m_function") # 混音功能占位
    return
def f_function():
    print("you have successfully called f_function") # 信号滤波功能占位
    return
def s_function():
    print("you have successfully called s_function") # 查看采样率功能占位
    return

def recursive_main_function():
    # 每次进入函数都重新提示用户选择,获取最新输入
    user_choice = input("请选择以下操作之一:\n s 查看文件采样率\n c 调整播放速度\n m 混合两个音频信号\n f 信号滤波\n q 退出程序\n : ")
    # 处理退出逻辑
    if user_choice == 'q':
        print("程序退出")
        return
    # 匹配对应功能
    elif user_choice == 'c':
        c_function()
    elif user_choice == 'm':
        m_function()
    elif user_choice == 'f':
        f_function()
    elif user_choice == 's':
        s_function()
    else:
        print(f"无效输入:{user_choice},请重新选择")
    # 完成当前操作后递归调用自身,进入下一次选择
    recursive_main_function()

# 首次启动调用函数
if __name__ == "__main__":
    recursive_main_function()

功能说明

  • 每次执行完对应操作后会自动回到选择界面,无需手动重启程序
  • 输入q即可正常终止递归退出程序,不会出现栈溢出问题
  • 所有非法输入都会触发提示并重新回到选择界面

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:00:01