如何将第一个方法的结果传递给第二个?解决NameError报错
问题分析与解决方案
首先,咱们先搞清楚你遇到的NameError是怎么回事:这跟列表返回None没关系,核心问题是Display_Details2方法里的value变量根本没被定义——它没法直接访问Display_Details1里的局部变量value,这两个方法的局部变量是相互独立的。
另外看你的代码,还有几个小问题:
print(self.generate)和print(self.sort)这两行明显是写错了,应该是调用你定义的方法(比如self.Display_Details1()),而且这两行的缩进也不对,应该放在方法外面或者合适的调用位置。Display_Details2没有接收要排序的数组参数,直接调用value.sort()自然会找不到变量。
修正后的代码示例
import random from random import seed class YourClassName: # 你应该有一个类,因为方法用了self参数 def Display_Details1(self): value = [] num1 = int(input("Select array size: ")) seed(0) for i in range(num1): value.append(random.randint(1, 99)) print("生成的随机数组:", value) return value def Display_Details2(self, arr): # 添加参数接收要排序的数组 sorted_arr = arr.copy() # 可选:如果不想修改原数组,就复制一份再排序 sorted_arr.sort() return sorted_arr # 实例化类并调用方法 if __name__ == "__main__": obj = YourClassName() generated_array = obj.Display_Details1() # 接收Display_Details1返回的数组 sorted_array = obj.Display_Details2(generated_array) # 把数组传给排序方法 print("排序后的数组:", sorted_array)
关键改动说明
- 给
Display_Details2添加了arr参数,让它可以接收外部传入的数组,这样就不用依赖未定义的变量了。 - 调用方法时,先把
Display_Details1的返回值存在generated_array里,再把这个变量传给Display_Details2。 - 可选的
arr.copy()是为了避免排序修改原数组,如果不需要保留原数组,直接arr.sort()然后返回arr也可以。 - 修正了方法调用的写法,把错误的
print(self.generate)改成了正确的方法调用流程。
这样修改后,就不会再出现NameError了,而且能正确完成“生成数组→排序数组”的流程。
内容的提问来源于stack exchange,提问作者Filipxg
相关产品推荐
相关产品推荐

