在列表推导中检查总和
可以在同一个列表推导式中检查数字的和,如果这个和超过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"
不过我得说,这样的设计我觉得不是很好……