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

Python生成随机整数数组后判断输入值是否存在报错求助

解决你的numpy数组比较错误问题

嘿,我一眼就看到你代码里的问题啦!咱们先拆解一下报错原因,再给你修正后的方案。

错误根源

你在代码里写了while target != randnums,这里的randnums是numpy数组(包含15个元素),当你拿单个整数target和它比较时,numpy会返回一个布尔数组(比如[False, True, False,...]),而while循环需要的是一个单一的布尔值(真/假),这就导致了那个ValueError: The truth value of an array with more than one element is ambiguous的错误——numpy不知道你要判断整个数组的什么“真值”。

另外,你的for循环和else搭配的逻辑也完全混乱了:这个for循环根本没必要,你本来想判断数字是否存在,却错误地遍历了15次,还在循环里套了while,逻辑完全走偏了。

修正后的代码

咱们重新梳理逻辑:生成随机数组→让用户输入数字→如果不在数组里就重新输入→找到后提示。用下面的代码就能正常运行:

import numpy as ny

# 生成15个1到100之间的随机整数数组
randnums = ny.random.randint(1, 101, 15)
print("生成的随机数组:", randnums)

# 循环获取用户输入,直到输入的数字在数组中
while True:
    try:
        target = int(input("请输入数组中的一个数字:"))
        # 用numpy的isin方法检查数字是否在数组中
        if ny.isin(target, randnums):
            print(f"数字 {target} 在数组中找到了!")
            break
        else:
            print("这个数字不在列表里,请重新输入~")
    except ValueError:
        print("请输入有效的整数哦!")

额外优化说明

  • 我加了try-except块,防止用户输入非整数导致报错,让程序更健壮
  • 用ny.isin(target, randnums)是numpy中判断元素是否存在的标准方法,比转成列表用in更高效
  • 去掉了多余的for循环,用while True实现循环输入直到正确的逻辑,更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:17:28