Help with Python Control Flow Challenge

All code is at bottom of question

I wrote a function max_num(num1,num2,num3) which I expect to return the greatest value out of the 3 inputs, or return “It’s a tie!” if two or more of the values are equal. Instead of getting the suggested returns, I am getting the following:

10
-10
-5
It’s a Tie!

The only value that is returning incorrectly is -10; the other 3 values are correct. Can anyone please explain why this is happening? Thank you!

def max_num(num1,num2,num3):
  if num1 > (num2 and num3):
    return num1
  elif num2 > (num1 and num3):
    return num2
  elif num3 > (num1 and num2):
    return num3
  else: 
     return "It's a tie!" 
  
  # Uncomment these function calls to test your max_num function:
print(max_num(-10, 0, 10))
# should print 10
print(max_num(-10, 5, -30))
# should print 5
print(max_num(-5, -10, -10))
# should print -5
print(max_num(2, 3, 3))
# should print "It's a tie"
1 Like

I think it’s the way you’re using parenthesis.
should read more like: if num1 > num2 and num1 > num3:
return num1

more specifically, it’s getting stuck in your first if statement, try printing (num2 and num3) to see the difference between num1 > (num2 and num3) and num1 > num2 and num1 > num3

edit: just tested it and print(num2 and num3) print out as -30, so it does get you stuck

3 Likes

Hello @williamweiland762150, welcome to the forums! The issue maybe here (as with all of these conditions):

This is because this code basically checks to see if num1 is greater than True. This is because here:

Basically checks to see if num2 and num3 are truthy values. So you are saying if num1 is greater than thruthy (or indeed falsy), return that number.
I hope that helps!

2 Likes

Thank you kindly for your response!

Thank you as well, much appreciated!

1 Like

I’m gonna try to tackle this challenge this weekend…