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

如何在未定义输入类型的Python函数中获取不同类型的多输入

首先你需要明确:当前你要处理的是混合类型输入,包含布尔值、整数两种类型,直接全量转int的写法会直接抛出转换错误,完全不适用你的场景。两种常用的处理方案如下:

按行输入场景(第一行输入False,第二行输入31, 57, 78)

  • 先注意Python版本差异:
    • Python 2 内置的raw_input()会把所有输入当字符串返回,而input()会自动解析输入的字面量类型,输入False会直接返回布尔值False
    • Python 3 已经把两个方法合并为input(),所有输入默认返回字符串,需要手动处理类型转换
  • 通用兼容写法参考:
def func():
    res = []
    # 处理第一行布尔值
    line1 = input().strip()
    if line1 == 'False':
        res.append(False)
    elif line1 == 'True':
        res.append(True)
    # 处理第二行数字,先去掉逗号再拆分转整数
    line2 = input().strip()
    num_list = [int(i) for i in line2.replace(',', '').split()]
    res.extend(num_list)
    return res
  • 不建议一次性读取所有输入,不同行的输入类型规则不同,拆分处理逻辑更清晰,后续维护成本更低

注意:Python 2 的input()会直接执行输入的代码,存在安全风险,不可信输入场景下建议统一手动判断类型转换,不要依赖自动解析特性

同行输入场景(所有内容在同一行输入,例如False, 31, 57, 78)

提前约定用逗号作为分隔符,遍历每个元素逐个判断类型即可:

def func():
    input_str = input().strip()
    items = [i.strip() for i in input_str.split(',')]
    res = []
    for item in items:
        if item in ('False', 'True'):
            res.append(eval(item))
        elif item.isdigit():
            res.append(int(item))
        # 其他类型按需补充转换逻辑
    return res

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:15:03