如何使“ ValueError”异常替换列表中的项目

Mol*_*ugh 5 python exception-handling exception python-3.x

我正在尝试编写一段通过数字列表(在垂直条上分割)的代码,如果用户输入一个非数字,则会引发异常,并用0替换该对象。它旨在显示该列表以降序排列(从大到小),中间有竖线。目前这是我的代码,但无法正常工作。

    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))
Run Code Online (Sandbox Code Playgroud)

Pat*_*ugh 3

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
Run Code Online (Sandbox Code Playgroud)

numbers请注意,这里我们在迭代时不会更改。完成相同任务的另一种方法是这样的

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))
Run Code Online (Sandbox Code Playgroud)