我有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
然而,我发现这段代码看起来相当狡猾,并且假设必须有更多的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
这里的问题是,它只是产生名称(即rel1)而不是实际值,因为它是一个字符串,我有点不确定如何从这里开始。
答案 0 :(得分:7)
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"
(sum()
以这种方式工作,因为布尔True
的数值为1
;感谢@falsetru建议这样做了)
答案 1 :(得分:1)
r = [rel1, rel2, rel3, rel4]
r.sort()
if r[-1] > 0.5 and r[-2] > 0.1:
print "Yay"