Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How make a "ValueError" exception replace an item in a list

I am trying to write a piece of code that will go through a list of numbers (splitting on vertical bars) that if the user enters a non number, will throw an exception and replace said object with 0. It is intended to display the list in descending order (largest to smallest) with vertical bars in between. This is my code currently, but I cannot get it to work.

    numbers = input("Please enter several integer numbers separated by 
    vertical bars. ").split('|')
    for item in numbers:
        try:
            numbers = [int(item) for item in numbers]
        except ValueError:
            item = item.replace(item,'0')
    numbers = sorted(numbers, reverse = True)
    print(' | '.join(str(num) for num in numbers))
like image 537
Molly McDonough Avatar asked Oct 29 '22 22:10

Molly McDonough


1 Answers

numbers = input("Please enter several integer numbers separated by vertical bars. ")
numbers = numbers.split('|')
temp = []
for item in numbers:
    try:
        temp.append(int(item))
    except ValueError:
        temp.append(0)
numbers = temp

Note that here we don't change numbers while we're iterating over it. Another way to accomplish the same task would be something like

def eval_number(s):
    try:
        return int(s)
    except ValueError:
        return 0

numbers = input("Please enter several integer numbers separated by vertical bars. ")
numbers = numbers.split('|')
numbers = list(map(eval_number, numbers))
like image 117
Patrick Haugh Avatar answered Nov 15 '22 07:11

Patrick Haugh