So I have some code in Python that is supposed to take 3 integers and compare them to each other and then determine which of the three integers are the smallest and largest values. When I run the code, I keep getting the error of:
Traceback (most recent call last):
File "/root/sandbox/LargeSmall.py", line 41, in \<module\>
if small_num_three \< small_num_two:
TypeError: '\<' not supported between instances of 'str' and 'NoneType'
Here is the line where the error occurs:
if small_num_three < small_num_two:
small_num_three = smallest
else: small_num_two < small_num_three
small_num_two = smallest
Here is the full code:
#LargeSmall.py - This program calculates the largest and smallest of three integer values.
# Declare and initialize variables here
largest = None
smallest = None
firstNumber = None
secondNumber = None
thirdNumber = None
# Prompt the user to enter 3 integer values
firstNumber = input("Enter first integer: " )
secondNumber = input("Enter second integer: " )
thirdNumber = input("Enter third integer: " )
# Write assignments, and necessary if else statements here as appropriate
if firstNumber > secondNumber:
big_num_one = firstNumber
small_num_one = secondNumber
else: secondNumber > firstNumber
big_num_one = secondNumber
small_num_one = firstNumber
if firstNumber > thirdNumber:
big_num_two = firstNumber
small_num_two = thirdNumber
else: thirdNumber > firstNumber
big_num_two = thirdNumber
small_num_two = firstNumber
if secondNumber > thirdNumber:
big_num_three = secondNumber
small_num_three = thirdNumber
else: thirdNumber > secondNumber
big_num_three = thirdNumber
small_num_three = secondNumber
if small_num_one < small_num_two:
small_num_one = smallest
else: small_num_two < small_num_one
small_num_two = smallest
if small_num_three < small_num_two:
small_num_three = smallest
else: small_num_two < small_num_three
small_num_two = smallest
if small_num_three < small_num_one:
small_num_three = smallest
else: small_num_one < small_num_three
small_num_one = smallest
if big_num_one > big_num_two:
big_num_one = largest
else: big_num_two > big_num_one
big_num_two = largest
if big_num_three > big_num_two:
big_num_three = largest
else: big_num_two > big_num_three
big_num_two = largest
if big_num_three > big_num_one:
big_num_three = largest
else: big_num_one > big_num_three
big_num_one = largest
print("The largest value is " + str(largest))
print("The smallest value is " + str(smallest))
I've seen solutions that say to remove the value of "none" from the initial declared variables, but how would I initialize them and then have the values stored in them afterwards if I don't initialize them in that way?
First you need to convert your input to int not str
Like that :
firstNumber = int(input("Enter first integer: "))
secondNumber = int(input("Enter second integer: "))
thirdNumber = int(input("Enter third integer: "))
Second, you don't need to declare variables with None value cause they will have an input so it's not needed.
This will run your code without errors. But the complexity of the code is too bad cause you have a lot of if, else
statements.
So if you want here is an optimized version of the code:
# Initialize variables
largest = None
smallest = None
# Prompt the user to enter 3 integer values
firstNumber = int(input("Enter first integer: "))
secondNumber = int(input("Enter second integer: "))
thirdNumber = int(input("Enter third integer: "))
# Assign values to largest and smallest variables
if firstNumber >= secondNumber and firstNumber >= thirdNumber:
largest = firstNumber
elif secondNumber >= firstNumber and secondNumber >= thirdNumber:
largest = secondNumber
else:
largest = thirdNumber
if firstNumber <= secondNumber and firstNumber <= thirdNumber:
smallest = firstNumber
elif secondNumber <= firstNumber and secondNumber <= thirdNumber:
smallest = secondNumber
else:
smallest = thirdNumber
# Print the results
print("The largest value is", largest)
print("The smallest value is", smallest)