1

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 ()
  • 2
    FYI: "Subroutines" are commonly called _functions_ in Python. But actually, I don't see any functions in your code. – Christian Dean Sep 07 '17 at 18:19
  • I meant 3 different purposes as in Lowest variable /Highest variable / Range – Smile DE Souza Sep 07 '17 at 18:22
  • https://stackoverflow.com/questions/20449427/how-can-i-read-inputs-as-integers https://stackoverflow.com/questions/4915361/whats-the-difference-between-raw-input-and-input-in-python3-x – Josh Lee Sep 07 '17 at 18:22
  • Note that the fact that there is no single number bigger or smaller than the other two does by no means imply that all number are equal. It just implies that the two biggest or the two smallest numbers are equal. – Sven Marnach Sep 07 '17 at 18:28
  • @SvenMarnach I dont understand.If the two smallest numbers or largest number are equal the code will ignore it and output the smallest / bigger number – Smile DE Souza Sep 07 '17 at 18:47
  • @SmileDESouza Just try it: Enter 3, 3, 2 and ask the script for the highest number. It will tell you that all numbers are equal, which obviously isn't true. – Sven Marnach Sep 07 '17 at 19:39

2 Answers2

1

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:"))
ingvar
  • 4,169
  • 4
  • 16
  • 29
0

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

Find Largest/lowest and mid

This link will help you to understand the flow of your code. Click on forward button to understand the steps.

napster
  • 384
  • 3
  • 13