FAQ: Code Challenge: Loops - Max Num


This community-built FAQ covers the “Max Num” exercise from the lesson “Code Challenge: Loops”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Computer Science

FAQs on the exercise Max Num

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!


Hi, why isn’t this a valid solution?

#Write your function here
def max_num(nums):
maximum = nums[0]
maximum = [num for num in nums if num > maximum]
maximum = maximum[0]
return maximum

#Uncomment the line below when your function is done
print(max_num([50, -10, 0, 75, 20]))


maximum = [num for num in nums if num > maximum]

I assume this might be the reason, if your num is smaller than the value previously assign to maximum, then your maximum value won’t keep updating.
you can validate by insert a number < 50 in the first place of the list(before 50), or change 0 in the list to 60, and you’ll get a result 60 instead of 75 it should be.

[1, 50, -10, 0, 75, 20] ==> result 50
[49, 50, -10, 0, 75, 20] ==> result 50
[50, -10, 60, 75, 20] ==> result 60


Ah ok I see where you’re coming from. Well in that case I passed the exercise by simply returning maximum[0], and shouldn’t have :sweat_smile:.


I don’t get why they put this in the loops section because I passed it without doing a loop and my code is way simpler than what a loop would be:

#define max_num
def max_num(nums):
#sort nums list
#return final variable/ largest number in nums list
return nums[-1]

Maybe I just cheated, but I felt like this answer would make more sense if this was an actual objective in the real world.


At the very least, we should be able to take an unsorted list and parse out the minimum and maximum value using a simple algorithm, rather than built-in functions.

>>> from random import randint, shuffle
>>> u, v = randint(1, 1000), randint(1, 1000)
>>> if u > v:
	u, v = v, u

>>> y = list(range(u, v))
>>> shuffle(y)

Let’s pretend we don’t know the range that the list is created from and that this block of data was dropped in our lap.

>>> minimum, maximum = y[0], y[-1]
>>> for n in y:
	if n < minimum:
		minimum = n
	elif n > maximum:
		maximum = n

>>> minimum, maximum
(421, 921)


It’s a good observation that you can find min/max at the ends of a sorted list, however, the work carried out is more than is required.


Hi Kell215,

I used almost the same solution as you did it, but using sorted… not sure if these answers are the correct but I believe is better than use a loop…

def max_num(nums):
#Sorting list
l1 = sorted(nums)
return l1[-1]


Would sorting add to the workload, or take away from it?

>>> from random import randrange
>>> def maximize(a, b):
    return a > b and a or b

>>> sample = [randrange(1000000) for _ in range(1000000)]
>>> u = sample[0]
>>> for v in sample:
	u = maximize(u, v)

>>> u

As we would expect, the highest number may never be generated. In a subsequnet test we got,

>>> sample = [randrange(1000000) for _ in range(1000000)]
>>> u = sample[0]
>>> for v in sample:
	u = maximize(u, v)

>>> u