Reputation: 13
I am a fairly new beginner to python. I wrote a code with subroutines to find the largest number and smallest number and the range between the numbers. However the answer to my test data comes up wrong while I am trying to find the largest number, smallest number and even the range.. Test data x=12, y=6, z=2 shows that the largest number is y.
note: variables are output1 for what choice 1 prints and so on
x = input("Enter x:")
y = input("Enter y:")
z = input("Enter z:")
if x>y and x>z :
output1 = 'x is the largest'
large = x
elif (y>x and y>z):
output1 = 'y is the largest'
large = y
elif (z>x and z>y):
output1 = 'z is the largest'
large = z
else :
output1 ='all numbers are equal'
large = 0
if x<y and x<z :
output2 = 'x is the smallest'
small = x
elif (y<x and y<z):
output2 = 'y is the smallest'
small = y
elif (z<x and z<y):
output2 = 'z is the smallest'
small = z
else :
output2 = 'all numbers are equal'
small = 0
output3 = large-small
outputq = "Bye"
print("[1] Find the highest variable.")
print("[2] Find the lowest variable.")
print("[3] Find the range between the highest and the lowest variables.")
print("[q] Quit.")
while outputq == ('Bye'):
choice = input("Enter choice number:")
if choice == '1' :print (output1)
elif choice == '2' :print (output2)
elif choice == '3' :print (output3)
elif choice == 'q' :
print (outputq)
outputq="end"
input ()
Upvotes: 1
Views: 110
Reputation: 394
I have restructured your code and divided into functions
First find largest
def find_largest(data):
x, y, z = data
print('\nx = {}, y = {}, z = {}'.format(x,y,z))
a=''
if x>y and x>z :
a = 'x is the largest'
elif (y>z):
a = 'y is the largest'
else:
a = 'z is the largest'
return a
Find Lowest
def find_lowest(data):
x, y, z = data
print('\nx = {}, y = {}, z = {}'.format(x,y,z))
b = ''
if x<y and x<z :
b = 'x is the smallest'
elif (y<z):
b = 'y is the smallest'
else:
b = 'z is the smallest'
return b
Find Mid range
def find_mid(data):
return (max(data)-min(data))
Final, code snippet
data = [12,6,2] # used list to pass data
print("[1] Find the highest variable.")
print("[2] Find the lowest variable.")
print("[3] Find the range between the highest and the lowest variables.")
print("[q] Quit.")
d = ''
while d != 'Bye':
choice = input("Enter choice number:")
if choice == '1' :
print (find_largest(data))
elif choice == '2' :
print (find_lowest(data))
elif choice == '3' :
print (find_mid(data))
elif choice == 'q' :
d = 'Bye'
print(d)
Check the working code on below link
This link will help you to understand the flow of your code. Click on forward button to understand the steps.
Upvotes: 0
Reputation: 4377
if x>y and x>z :
in your code compares strings, not numbers, because input() returns string. Convert it to int:
x = int(input("Enter x:"))
y = int(input("Enter y:"))
z = int(input("Enter z:"))
Upvotes: 1