NameError,函数未定义。 Python 初学者
NameError, function not defined. Python Beginner
尝试用 python3 解决 leetcode 问题。这个问题只是要求一些简单的统计计算,但我什至无法获得 运行 的代码,因为我不明白问题是什么。名称拼写相同,函数在调用之前定义,是否带有参数?
class Solution:
def minFinder(nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max
def meanFinder(nums):
sum = 0
for num in nums:
sum += num
mean = sum/(len(nums))
return mean
def medFinder(nums):
if (len(nums) % 2 == 0):
med = nums[((len(nums)/2 - 1) + (len(nums)/2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: List[int]) -> List[float]:
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(minFinder(fltr_cnt) * 1.0)
stats.append(maxFinder(fltr_cnt))
stats.append(meanFinder(fltr_cnt))
stats.append(medFinder(fltr_cnt))
stats.append(modeFinder(fltr_cnt))
return stats
name 'minFinder' is not defined
让我的代码不那么复杂的建议也很受欢迎,比如有没有更快的方法来执行 .append() 5 次?
由于您使用的是 classes,因此您在定义和访问 class 的方法和属性时必须使用 self,请尝试以下代码:
class Solution:
def minFinder(self, nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(self, nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max
def meanFinder(self, nums):
sum = 0
for num in nums:
sum += num
mean = sum/(len(nums))
return mean
def medFinder(self, nums):
if (len(nums) % 2 == 0):
med = nums[((len(nums)/2 - 1) + (len(nums)/2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(self, nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: List[int]) -> List[float]:
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(self.minFinder(fltr_cnt) * 1.0)
stats.append(self.maxFinder(fltr_cnt))
stats.append(self.meanFinder(fltr_cnt))
stats.append(self.medFinder(fltr_cnt))
stats.append(self.modeFinder(fltr_cnt))
return stats
self
表示class的实例。通过使用self
关键字我们可以访问python中class的属性和方法。它使用给定的参数绑定属性。因此,您的成员函数无法访问它们。
了解更多 self
read this article
class Solution:
def minFinder(self, nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(self, nums):
max = nums[0]
for num in nums:
if num > max:
max = num
return max
def meanFinder(self, nums):
sum = 0
for num in nums:
sum += num
mean = sum / (len(nums))
return mean
def medFinder(self, nums):
if len(nums) % 2 == 0:
med = nums[((len(nums) / 2 - 1) + (len(nums) / 2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(self, nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: list):
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(self.minFinder(fltr_cnt) * 1.0)
stats.append(self.maxFinder(fltr_cnt))
stats.append(self.meanFinder(fltr_cnt))
stats.append(self.medFinder(fltr_cnt))
stats.append(self.modeFinder(fltr_cnt))
return stats
另外,maxFinder
函数有错误。您已使用 min
而不是 max
。
def maxFinder(nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max
尝试用 python3 解决 leetcode 问题。这个问题只是要求一些简单的统计计算,但我什至无法获得 运行 的代码,因为我不明白问题是什么。名称拼写相同,函数在调用之前定义,是否带有参数?
class Solution:
def minFinder(nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max
def meanFinder(nums):
sum = 0
for num in nums:
sum += num
mean = sum/(len(nums))
return mean
def medFinder(nums):
if (len(nums) % 2 == 0):
med = nums[((len(nums)/2 - 1) + (len(nums)/2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: List[int]) -> List[float]:
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(minFinder(fltr_cnt) * 1.0)
stats.append(maxFinder(fltr_cnt))
stats.append(meanFinder(fltr_cnt))
stats.append(medFinder(fltr_cnt))
stats.append(modeFinder(fltr_cnt))
return stats
name 'minFinder' is not defined
让我的代码不那么复杂的建议也很受欢迎,比如有没有更快的方法来执行 .append() 5 次?
由于您使用的是 classes,因此您在定义和访问 class 的方法和属性时必须使用 self,请尝试以下代码:
class Solution:
def minFinder(self, nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(self, nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max
def meanFinder(self, nums):
sum = 0
for num in nums:
sum += num
mean = sum/(len(nums))
return mean
def medFinder(self, nums):
if (len(nums) % 2 == 0):
med = nums[((len(nums)/2 - 1) + (len(nums)/2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(self, nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: List[int]) -> List[float]:
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(self.minFinder(fltr_cnt) * 1.0)
stats.append(self.maxFinder(fltr_cnt))
stats.append(self.meanFinder(fltr_cnt))
stats.append(self.medFinder(fltr_cnt))
stats.append(self.modeFinder(fltr_cnt))
return stats
self
表示class的实例。通过使用self
关键字我们可以访问python中class的属性和方法。它使用给定的参数绑定属性。因此,您的成员函数无法访问它们。
了解更多 self
read this article
class Solution:
def minFinder(self, nums):
min = nums[0]
for num in nums:
if (num < min):
min = num
return min
def maxFinder(self, nums):
max = nums[0]
for num in nums:
if num > max:
max = num
return max
def meanFinder(self, nums):
sum = 0
for num in nums:
sum += num
mean = sum / (len(nums))
return mean
def medFinder(self, nums):
if len(nums) % 2 == 0:
med = nums[((len(nums) / 2 - 1) + (len(nums) / 2)) / 2]
else:
med = nums[len(nums) // 2]
return med
def modeFinder(self, nums):
index = 0
freq = 0
for num in nums:
if nums.count(num) > freq:
freq = nums.count(num)
index = nums.index(num)
mode = nums[index]
return mode
def sampleStats(self, count: list):
fltr_cnt = []
for num in count:
if (num != 0):
fltr_cnt.append(num)
stats = []
stats.append(self.minFinder(fltr_cnt) * 1.0)
stats.append(self.maxFinder(fltr_cnt))
stats.append(self.meanFinder(fltr_cnt))
stats.append(self.medFinder(fltr_cnt))
stats.append(self.modeFinder(fltr_cnt))
return stats
另外,maxFinder
函数有错误。您已使用 min
而不是 max
。
def maxFinder(nums):
max = nums[0]
for num in nums:
if (num > min):
max = num
return max