Bas*_*sen 0 python if-statement
我有4个变量(包含0.0到1.0的相对值),我想检查这些变量中至少有2个高于0.01,其中1个必须高于0.05.我写了以下块:
if rel1 > 0.05:
if rel2 > 0.01 or rel3 > 0.01 or rel4 > 0.01:
print "Yay" # Filler line
elif rel2 > 0.05:
if rel1 > 0.01 or rel3 > 0.01 or rel4 > 0.01:
print "Yay" # Filler line
elif rel3 > 0.05:
if rel1 > 0.01 or rel2 > 0.01 or rel4 > 0.01:
print "Yay" # Filler line
elif rel4 > 0.05:
if rel1 > 0.01 or rel2 > 0.01 or rel3 > 0.01:
print "Yay" # Filler line
Run Code Online (Sandbox Code Playgroud)
然而,我发现这段代码看起来相当狡猾,并假设必须有更多的pythonic方式来做到这一点?我一直在尝试以下(不起作用,但显示我期望它是可解决的):
for i in range(1,4):
val = "rel" + str(i)
if val > 0.05 # Got stuck on this line
# dynamically generate the other 3 if's :
# Do the logic
Run Code Online (Sandbox Code Playgroud)
这里的问题是,它只是产生名称(即rel1)而不是实际值,因为它是一个字符串,我有点不确定如何从这里开始.
l = [rel1, rel2, rel3, rel4]
if any(item > 0.05 for item in l) and sum(item > 0.01 for item in l) >= 2:
print "Yay"
Run Code Online (Sandbox Code Playgroud)
(这样sum()工作是因为boolean True有数值1;感谢@falsetru建议这个)