NameError,未定义函数.Python初学者



尝试用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

让我的代码不那么复杂的建议也很感激,比如有没有更快的方法可以做5次.append((?

self表示类的实例。通过使用self关键字,我们可以访问python中类的属性和方法。它将属性与给定的参数绑定。因此,您的成员功能无法访问它们。要了解更多关于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 > 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

由于您使用的是类,因此在定义和访问类的方法和属性时必须使用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

最新更新