I am trying to find the minimum and maximum from an array. I have first defined a data structure which will store the minimum and maximum.
class pair:
def __init__(self):
self.min = 0
self.max= 0
Here is the UDF function:
def getminmax(arr: list, n: int) -> pair:
minmax = pair()
#if there's only one element return it as the min max
if n == 1:
minmax.min = arr[0]
minmax.max = arr[0]
#if there's more than one element initialize minmax
if arr[0] > arr[1]:
minmax.min = arr[1]
minmax.max = arr[0]
else:
minmax.min = arr[0]
minmax.max = arr[1]
#updating the min & max values through iterations
for i in range(2, n):
if arr[i] > minmax.max:
minmax.max = arr[i]
elif arr[i] < minmax.min:
minmax.min = arr[i]
Upon running the code, the minmax obtained is of none type and there is a AttributeError
arr = [1000, 11, 445, 1, 330, 3000]
arr_size = 6
minmax = getminmax(arr, arr_size)
print('Minimum', minmax.min)
Error:
AttributeError Traceback (most recent call last)
<ipython-input-13-3364680840b5> in <module>()
----> 1 print('Minimum', minmax.min)
AttributeError: 'NoneType' object has no attribute 'min'
The code seems right to me in the the UDF,I believe the problem with the code has to be in the class pair.
Please help me out here as I have just started with Data Structures. GfG
CodePudding user response:
You need to return your variable minmax inside your function:
return minmax
Example:
def getminmax(arr: list, n: int) -> pair:
minmax = pair()
#if there's only one element return it as the min max
if n == 1:
minmax.min = arr[0]
minmax.max = arr[0]
#if there's more than one element initialize minmax
if arr[0] > arr[1]:
minmax.min = arr[1]
minmax.max = arr[0]
else:
minmax.min = arr[0]
minmax.max = arr[1]
#updating the min & max values through iterations
for i in range(2, n):
if arr[i] > minmax.max:
minmax.max = arr[i]
elif arr[i] < minmax.min:
minmax.min = arr[i]
return minmax

