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

Python调用自定义channel函数时switch分支逻辑不执行问题求助

问题原因

  • 第一,input()获取的用户输入是字符串类型,但你switcher字典的键是整数1、2,传字符串类型的'1'/'2'根本匹配不到对应的键值
  • 第二,channel()函数返回的是lambda匿名函数对象,你调用channel()的时候只拿到了函数,没有加()执行这个函数,所以对应的逻辑当然不会运行

修复后代码

# global vars
channelArr = ['1','2']

# func channel 1
def getChOne():
    print('Do something with channel 1')

# func channel 2
def getChTwo():
    print('Do something with channel 2')

# func channel
def channel(arg):
    switcher = { 
        1: lambda: getChOne(),
        2: lambda: getChTwo(),
    }
    # 拿到lambda函数后直接执行,返回执行结果
    return switcher.get(arg, lambda: "Invalid Channel")()

# func start
def start():
    # get input
    print('\n')
    inputChannel = input('Channel 1 to 2: ').strip()

    # check input 
    if inputChannel in channelArr:
        print('Selected Channel:', inputChannel)
        # 把字符串类型的输入转成整数,匹配switcher的键类型
        channel(int(inputChannel))      
    else:
        exit()

# init app
if (__name__ == '__main__'):
    # call func start
    start()

改动说明

  • 调用channel()之前,将用户输入的字符串转成整数,和switcher的键类型匹配
  • channel()函数中,拿到对应的lambda函数后直接加()执行,保证对应频道的逻辑可以正常运行
  • 额外优化:提前对用户输入做strip处理,避免后续重复调用strip方法

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:04