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

Python列表查询代码异常求助:执行结果输出-1 None问题排查

问题原因拆解

咱们先揪出你代码里导致-1 None输出的两个核心问题:

  1. 判断逻辑完全错误:你写的if n ==v是把目标数值n和整个列表v做相等比较——单个数字(比如13)怎么可能等于一整个列表呢?所以每次都会走else分支打印-1。
  2. 函数无返回值+重复打印:你的search_list函数里直接打印结果,但没有设置return语句,默认会返回None。而你最后又写了print(search_list(v,13)),相当于先执行函数内部的print(-1),再打印函数的返回值None,于是就出现了-1 None的奇怪输出。
修正方案

下面给你两种实用的修正方式,按需选择:

方式一:函数内部直接处理打印

v = [13,26,27,29,59,62]
def search_list(v, n):
    if n in v:  # 用in操作符判断值是否在列表中,这是Python的标准写法
        print(n)
    else:
        print(-1)

search_list(v,13)  # 直接调用函数就行,不用再套一层print

方式二:函数返回结果,外部负责打印(更符合Python函数设计规范)

这种方式让函数只做“查找返回”的单一职责,后续可以灵活处理结果(比如存变量、做计算,不只是打印):

v = [13,26,27,29,59,62]
def search_list(v, n):
    # 用三元表达式简洁返回结果:存在就返回n,不存在返回-1
    return n if n in v else -1

# 先获取结果,再打印
result = search_list(v,13)
print(result)
补充小提示
  • in操作符是Python检查元素是否在序列(列表、元组等)里最简洁的方式,对于小规模列表完全够用;如果是超大规模列表,可以考虑先转成集合set(v),查找效率会提升到O(1)。
  • 尽量让函数保持单一职责:要么负责逻辑判断返回结果,要么负责输出展示,混在一起会让代码难维护、难复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:59:09