My code length keeps expanding. Is there a way to simplify it?

58 views Asked by At

This is some code I wrote for school. The problem is that it gets extremely long in two areas if I keep adding more "input" functions, the lines used and the number of "and" functions I use. It's so big, that it's making my school assignment page lag. If you wanted to do it with 7 numbers or more, then it would make my page lag even more. How do I simplify the code below?

Assignment: Write a program to input 6 numbers. After each number is inputted, print the biggest of the numbers entered so far.

num1 = int(input("Enter a number:"))
print ("Largest: " + str(num1) + "\n")

num2 = int(input("Enter a number:"))
if (num1 > num2):
    print ("Largest: " + str(num1) + "\n")
else:
    print ("Largest: " + str(num2) + "\n")

num3 = int(input("Enter a number:"))
if (num1 > num2 and num1 > num3):
    print ("Largest: " + str(num1) + "\n")
elif (num2 > num3):
    print ("Largest: " + str(num2) + "\n")
else:
    print ("Largest: " + str(num3) + "\n")

num4 = int(input("Enter a number:"))
if (num1 > num2 and num1 > num3 and num1 > num4):
    print ("Largest: " + str(num1) + "\n")
elif (num2 > num3 and num2 > num4):
    print ("Largest: " + str(num2) + "\n")
elif (num3 > num4):
    print ("Largest: " + str(num3) + "\n")
else:
    print ("Largest: " + str(num4) + "\n")

num5 = int(input("Enter a number:"))
if (num1 > num2 and num1 > num3 and num1 > num4 and num1 > num5):
    print ("Largest: " + str(num1) + "\n")
elif (num2 > num3 and num2 > num4 and num2 > num5):
    print ("Largest: " + str(num2) + "\n")
elif (num3 > num4 and num3 > num5):
    print ("Largest: " + str(num3) + "\n")
elif (num4 > num5):
    print ("Largest: " + str(num4) + "\n")
else:
    print ("Largest: " + str(num5) + "\n")

num6 = int(input("Enter a number:"))
if (num1 > num2 and num1 > num3 and num1 > num4 and num1 > num5 and num1 > num6):
    print ("Largest: " + str(num1) + "\n")
elif (num2 > num3 and num2 > num4 and num2 > num5 and num2 > num6):
    print ("Largest: " + str(num2) + "\n")
elif (num3 > num4 and num3 > num5 and num3 > num6):
    print ("Largest: " + str(num3) + "\n")
elif (num4 > num5 and num4 > num6):
    print ("Largest: " + str(num4) + "\n")
elif (num5 > num6):
    print ("Largest: " + str(num5) + "\n")
else:
    print ("Largest: " + str(num6) + "\n")
2

There are 2 answers

11
Charles Landau On BEST ANSWER

You can just store the number in a variable and overwrite it when your user enters a larger one.

awesome_number = 0
while True: # Always loop unless we break the loop.
    userInput = int(input("Enter a number:")) # Your input phrase

    # Compare values, evaluates to True if the user input is greater
    if userInput > awesome_number: 
        awesome_number = userInput # Overwrite if compare evaluates to True
    # Print using the .format method to dynamically insert the greatest
    # number
    print("So far, the biggest number you've entered is {}".format(awesome_number))

If you want to stop after n number of inputs, you could add a simple counter to count iterations.

awesome_number = 0
counter = 0
while True: # Always loop unless we break the loop.
    userInput = int(input("Enter a number:")) # Your input phrase

    # Compare values, evaluates to True if the user input is greater
    if userInput > awesome_number: 
        awesome_number = userInput # Overwrite if compare evaluates to True
    # Print using the .format method to dynamically insert the greatest
    # number
    print("So far, the biggest number you've entered is {}".format(awesome_number))
    # Increment the counter
    counter = counter + 1
    if counter == 500: # Arbitrary number to end on
        break
0
Daniel Pryden On

This can be done without any lists or special syntax as long as you use a simple loop to run the body six times:

largest = None
for _ in range(6):
    number = int(input('Enter a number: '))
    if largest is None or number > largest:
        largest = number
    print('Largest: {}\n'.format(largest))

If for some reason you're not allowed to use a loop, you can get the same result by manually unrolling the loop:

largest = int(input('Enter a number: '))
print('Largest: {}\n'.format(largest))
number = int(input('Enter a number: '))
if number > largest:
    largest = number
print('Largest: {}\n'.format(largest))
number = int(input('Enter a number: '))
if number > largest:
    largest = number
print('Largest: {}\n'.format(largest))
number = int(input('Enter a number: '))
if number > largest:
    largest = number
print('Largest: {}\n'.format(largest))
number = int(input('Enter a number: '))
if number > largest:
    largest = number
print('Largest: {}\n'.format(largest))
number = int(input('Enter a number: '))
if number > largest:
    largest = number
print('Largest: {}\n'.format(largest))