if嵌套for循环列表条件时与预期不符的原因?
try:grate =
if :
raise OverflowError
except ValueError:
print('请重新输入!')
except OverflowError:
print('请输入0~100之间的数字!')
>>>input60 60 60
>>>请输入0~100之间的数字!
Process finished with exit code 0
if 遍历了grate里的数字,然后用not返回布尔值,按预期不应该抛出OverflowErrow的异常的,但是为什么抛出了。 傻眼貓咪 发表于 2022-6-9 11:59
用 all()
x =
看前面代码的逻辑,应该是存在True的情况下,返回出抛出异常,这里用all判断逻辑是不对的,应该用filter会好点
try:
grate =
if list(filter(lambda x: not (0 <= x <= 100), grate)):
raise OverflowError
except ValueError:
print("请重新输入!")
except OverflowError:
print("请输入0~100之间的数字!") grate =
tmp =
print(tmp)
你打一下这个列表就明白了,不管是不是false,列表都不是空的,非空列表在if判断时被视作True fish_游鱼 发表于 2022-6-9 11:45
你打一下这个列表就明白了,不管是不是false,列表都不是空的,非空列表在if判断时被视作True
那是不是只能用for循环一个个判断。。。 bymyside_ 发表于 2022-6-9 11:54
那是不是只能用for循环一个个判断。。。
用 all()
x =
y = all(x) # y = False fish_游鱼 发表于 2022-6-9 12:11
看前面代码的逻辑,应该是存在True的情况下,返回出抛出异常,这里用all判断逻辑是不对的,应该用filter ...
我只是提出思路/概念,当然代码可以随着自己需求自行调整,用 all、any、filter、map等都可以
页:
[1]