Reputation: 1266
I'm trying to have user inputted numbers ordered in ascending and descending order but the append method keeps replacing the previous value and hence I only get one number in the ordering.
print("This is a program to order numbers in ascending and descending order.")
while 1 == 1:
until = int(input("\nEnter how many numbers you want ordered: "))
print("")
loop = 0
while loop < until:
numbers = []
number = float(input("Enter number: "))
numbers.append(number)
loop += 1
print("\nHere are the numbers in descending order:")
while len(numbers) > 0:
print(max(numbers))
largest = max(numbers)
numbers.remove(largest)
Upvotes: 0
Views: 4314
Reputation: 2403
in your initial code, you state that you need the numbers in descending order, i havent provided a complete solution, but a general idea of where to head towards with what you currently have. Just need to add some more logic depending on what the user needs, descending or ascending order. I dont know why you had the numbers.remove(largest) so i commented it out
numbers = []
print("This is a program to order numbers in ascending and descending order.")
numbers
while True:
until = int(input("\nEnter how many numbers you want ordered: "))
print("")
loop = 0
while loop < until:
number = float(input("Enter number: "))
numbers.append(number)
loop += 1
print("\nHere are the numbers in descending order:")
numbers.sort()
print(numbers)
largest = max(numbers)
#numbers.remove(largest)
as stated in my original comment "declare your list numbers=[] above one level, have you tried that?"
Upvotes: 0
Reputation: 11
You numbers is local
print("This is a program to order numbers in ascending and descending order.")
while 1 == 1:
numbers = []
until = int(input("\nEnter how many numbers you want ordered: "))
print("")
loop = 0
while loop < until:
#numbers = []
number = float(input("Enter number: "))
print(number, numbers)
numbers.append(number)
loop += 1
print("\nHere are the numbers in descending order:")
while len(numbers) > 0:
print(max(numbers))
largest = max(numbers)
numbers.remove(largest)
Upvotes: 1
Reputation: 394
In your code, you have the following line written inside a loop;
numbers = []
Every time you iterate through the loop, you will create a new variable numbers
, hence it is overwritten on every iteration.
Try this;
print("This is a program to order numbers in ascending and descending order.")
while 1 == 1:
until = int(input("\nEnter how many numbers you want ordered: "))
print("")
loop = 0
numbers = []
while loop < until:
number = float(input("Enter number: "))
numbers.append(number)
loop += 1
print("\nHere are the numbers in descending order:")
while len(numbers) > 0:
print(max(numbers))
largest = max(numbers)
numbers.remove(largest)
Upvotes: 4
Reputation: 15545
The problem is caused by the line numbers = []
being inside your while
loop. This resets numbers
to an empty list on each iteration, before you append the next number.
To fix this, simply move this line outside the while
loop as follows:
loop = 0
numbers = []
while loop < until:
number = float(input("Enter number: "))
numbers.append(number)
loop += 1
Note that you also don't really need the loop
variable in this instance. You can instead test the length of the numbers
list directly, as follows:
numbers = []
while len(numbers) < until:
number = float(input("Enter number: "))
numbers.append(number)
Upvotes: 1