在列表推导中检查总和

2 投票
2 回答
1620 浏览
提问于 2025-04-17 01:14

可以在同一个列表推导式中检查数字的和,如果这个和超过50的话再做一个例外处理吗?

        k = input("input digits separated by spaces:")
        try:
            [int(i) for i in k.split()]
        except ValueError:
            print("input only digits")

最重要的是,不要用两个例外处理块来写,而是尽量简单,确保这个列表的和不超过50。

2 个回答

3
    k = input("Input integers separated by spaces:")
    try:
        the_list = [int(i) for i in k.split()]
        if sum(the_list) > 50:
            raise ValueError("The user's numbers' summation is too large.")
    except ValueError:
        print("Input only integers separated by spaces with sum not greater than 50.")

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

2

这段代码的意思是:先把字符串 k 按空格分开,然后把每个部分转换成整数,最后求和。接着,代码会检查这个和是否小于等于50。如果不是,就会出现一个错误。

你可以在这段代码后面加上 except AssertionError,这样可以处理这个错误,让程序不会直接崩掉。

k = input("input digits separated by spaces: ")
try:
    assert sum([int(i) for i in k.split()]) <= 50
except ValueError:
    print "input only digits"
except AssertionError:
    print "Sum of digits is grater than 50"

不过我得说,这样的设计我觉得不是很好……

撰写回答