问题描述
我不明白这件事:
list1 = [34,2,1,3,33,100,61,1800]
for n in list1:
try:
n%2 == 0
print(n)
except:
pass
上面代码的输出显示了每个数字,但我只需要偶数。 我的错误是什么?
解决方法
我怀疑您在某处遗漏了一个基本概念。 try / except
用于捕获错误。为了以您尝试的方式使用它,您需要在某些情况下导致错误。一种简单的方法是 assert
数字为偶数。 assert n % 2 == 0
表示如果 n
不是偶数,则引发异常。然后您可以捕获异常并使用 pass
list1 = [34,2,1,3,33,100,61,1800]
for n in list1:
try:
assert n % 2 == 0 # cause an error if `n` is not even
print(n)
except AssertionError:
pass
,
您缺少条件 if
list1 = [34,1800]
for n in list1:
try:
if n%2 == 0:
print(n)
except:
pass
,
两件事。您在执行 n%2
之前忘记了 if 语句
第二件事是,尝试和除外的意义何在。你不需要它。
以下是您的代码示例
列表理解。
list1 = [34,1800]
even = [n for n in list1 if n%2 == 0]
输出
[34,1800]
简化代码
list1 = [34,1800]
even = []
for n in list1:
if n%2 == 0:
even.append(n)
输出
[34,1800]