3 回答

TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
or
如果你使用而不是 ,結(jié)果會(huì)更容易and
。 &
用于位操作,所以這是您的主要問題。
假設(shè)這是您將獲得的唯一兩個(gè)值(浮點(diǎn)數(shù)或字符串“NA”),您可以這樣做:
metric = "PASS" if self.area_ratio == "NA" or self.area_ratio >= 0.8 else "FAIL"
這不是一種超級(jí)可靠的方法,但由于您已經(jīng)在同一變量中混合類型......

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊
這就是您所需要的。self.area_ratio如果不是數(shù)字,您將拋出異常。所以你只需捕獲該異常并設(shè)置metric為PASS當(dāng)你這樣做時(shí)。
try:
metric = "FAIL" if (self.area_ratio >= 0.8) else "PASS"
except TypeError as ex:
metric = "PASS"
如果您想對(duì)其他非數(shù)字值執(zhí)行不同的操作,則可以在子句中添加更多邏輯except來處理非數(shù)字值之間的區(qū)分行為。
如果您確定這NA是您將看到的唯一非數(shù)字值,則可以將其添加到條件語句中,如下所示:
metric = "PASS" if self.area_ratio == 'NA' or (self.area_ratio < 0.8) else "FAIL"
self.area_ratio但是如果有任何其他非數(shù)字值,這將引發(fā)您不處理的異常。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
metric = "PASS" if isinstance(self.area_ratio, str) else ("FAIL" if ((self.area_ratio != "NA") & (self.area_ratio>= 0.8)) else "PASS")
只要每個(gè)字符串都通過,也可以工作,但我不建議在一行中進(jìn)行。
添加回答
舉報(bào)