Home > front end >  Determining the two largest numbers from user input
Determining the two largest numbers from user input

Time:03-26

I've been working on a small program to learn more about Python, but I'm stuck on something.

Basically, the user has to input a sequence of positive integers. When a negative number is entered, the program stops and tells the user the two largest integers the user previously inputted. Here is my code:

number = 1
print("Please enter your desired integers. Input a negative number to end. ")

numbers = []

while (number > 0):
   number = int(input())
   if number < 0:
      break
  
largestInteger = max(numbers)
print(largestInteger)

integers.remove(largestInteger)
largestInteger2 = max(numbers)
print(largestInteger2)

CodePudding user response:

There are two issues with your code:

  1. You need to update the list with the user input for every iteration of the while loop using .append().

  2. integers isn't defined, so you can't call .remove() on it. You should refer to numbers instead.

Here is a code snippet that resolves these issues:

number = 1
print("Please enter your desired integers. Input a negative number to end. ")

numbers = []

while number > 0:
   number = int(input())
   if number > 0:
       numbers.append(number)
  
largestInteger = max(numbers)
print(largestInteger)

numbers.remove(largestInteger)
largestInteger2 = max(numbers)
print(largestInteger2)

CodePudding user response:

I would build a function that would call itself again if the user enters a number larger or equal to 0, but will break itself and return a list once a user inputs a number smaller than 0. Additionally I would then sort in reverse (largest to smallest) and call only the first 2 items in the list

def user_input():
    user_int = int(input('Please enter your desired integers'))
    if user_int >= 0:
        user_lst.append(user_int)
        user_input()
    else:
        return user_lst

#Create an empty list
user_lst = []
user_input()
user_lst.sort(reverse=True)
user_lst[0:2]

CodePudding user response:

You forgot to append the input number to the numbers list


numbers = []

while (True):
    number = int(input())
    if number < 0:
        break
    numbers.append(number)

print("First largest integer: ", end="")
largestInteger = max(numbers)
print(largestInteger)

numbers.remove(largestInteger)
print("Second largest integer: ", end="")
largestInteger2 = max(numbers)
print(largestInteger2)```

The above code will work, according to your **desire**
  • Related