Python中numpy数组append操作无效,打印仍为空的问题求助
解决Numpy数组append后始终为空的问题
问题根源
- 语法错误:
passengers:np.append(age)是无效语法,而且numpy的np.append()需要传入原数组和待添加元素两个参数,同时必须接收它的返回值——因为numpy数组是不可变对象,append不会修改原数组,而是返回一个包含新元素的新数组。 - 变量作用域混淆:函数里的
passengers是局部参数,和Buss类的静态属性passengers完全是两个独立变量,修改局部参数不会影响类里的数组。 - 逻辑顺序错误:先添加乘客再判断是否超载,会导致超载后乘客依然被加入,应该先判断容量再执行添加操作。
修正后的代码
import numpy as np import replit class Buss: passengers = np.array([]) number_of_passengers = 0 # menu option 0 def add_passenger(): replit.clear() age = int(input("Ange ålder på passageraren här: ")) print(age) # 先判断是否已满,再添加 if len(Buss.passengers) >= 25: print("Nu är tyvärr bussen full") else: # 正确使用np.append,更新类属性 Buss.passengers = np.append(Buss.passengers, age) Buss.number_of_passengers = len(Buss.passengers) input("Tryck Enter för att gå tillbaka till menyvalen") # menu option 1 def print_bus(): replit.clear() print("Alla passagerare på bussen: ") print(Buss.passengers) input("Tryck Enter för att gå tillbaka till menyvalen")
关键修正说明
- 移除函数的
passengers参数,直接操作Buss类的静态属性,保证修改的是同一个数据源。 - 正确调用
np.append,将返回的新数组重新赋值给类的passengers属性。 - 调整判断逻辑,先检查容量再添加乘客,避免超载。
- 同步更新
number_of_passengers,确保和实际乘客数一致。
内容的提问来源于stack exchange,提问作者empa
相关产品推荐
相关产品推荐

