使用Numpy数组时打印输出类型而非值的问题求助
Numpy数组打印显示<class 'int'>问题修复
我尝试获取用户输入的数值,判断是否为质数后添加至Numpy数组,再通过for循环遍历打印数组。但打印时返回的是<class 'int'>而非数组实际值,仅在使用Numpy时出现该问题。相关代码如下:
from numpy import * t = array([int]*10) #Une fonction qui permet de saisir un entier compri entre 4 et 19 def saisir(): b = True while b == True: n = int(input("Give the array length: ")) if(3<=n<=10): b = False return(n) #Une fonction qui permet de retourner vrai si un nombre est premier def Prime(n): v = True while v == True: for i in range(2,n): if(n % i ==0): v = False else: return True #Une procedure qui permet de remplir le tableau t par de entiers premiers def remplir(t,n): for i in range(n): k =int(input("Give a number: ")) if Prime(k): append(t,k) #Une procedure qui permet d'afficher le tableau t def Printing(t,n): for i in range(n): print(t[i]) #Une procédure qui permer de trier le tableau t a l'ordre croissant en utilisant le tri a bulle # n = saisir() remplir(t,n) Printing(t,n)
问题根源分析
- 数组初始化错误:
t = array([int]*10)创建的是包含10个int类对象的数组,不是整数数值数组,这是打印出<class 'int'>的直接原因。 - 质数判断逻辑混乱:
Prime函数的循环和返回逻辑有问题,比如n=4会被误判为质数,n=2会陷入死循环,根本无法正确识别质数。 - Numpy append用法错误:Numpy的
append不会修改原数组,而是返回新数组,原代码没接收返回值,导致数组从头到尾都是初始的类对象。 - 填充逻辑无效:就算append用对了,原代码也没按索引填充数组,而是盲目追加,完全达不到预期的填充效果。
修正后的代码
import numpy as np # 输入数组长度(限定3到10之间) def saisir(): while True: n = int(input("输入数组长度: ")) if 3 <= n <= 10: return n # 判断是否为质数 def is_prime(n): if n <= 1: return False if n == 2: return True # 循环到平方根即可,优化性能 for i in range(2, int(np.sqrt(n)) + 1): if n % i == 0: return False return True # 填充数组为质数 def remplir(n): # 初始化指定长度的整数数组,初始值设为0 t = np.zeros(n, dtype=int) for i in range(n): while True: k = int(input("输入一个数字: ")) if is_prime(k): t[i] = k break print("这不是质数,请重新输入!") return t # 打印数组 def print_array(t): for num in t: print(num) # 主执行逻辑 n = saisir() t = remplir(n) print_array(t)
修正说明
- 正确初始化数组:用
np.zeros(n, dtype=int)创建指定长度的整数数组,从根源避免初始值为类对象的问题。 - 修复质数判断:补充边界条件,优化循环范围,确保能准确识别所有质数。
- 调整填充逻辑:直接按索引位置赋值,确保数组被正确修改;添加循环直到输入有效质数为止,提升用户体验。
- 规范Numpy导入:改用
import numpy as np,避免全局导入引发的命名冲突问题。
内容的提问来源于stack exchange,提问作者Mahdi
相关产品推荐
相关产品推荐

