FAQ: Code Challenge: Loops - Max Num


#1

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

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

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!


#2

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]))


#3

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


#4

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:.


#5

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
nums.sort()
#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.


#6

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)
>>> 

#7

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.


#9

You can achieve this using built in mx function. ASAT.

def max_num(nums):
return max(nums)