0

我在让它工作时遇到了一些麻烦,试图评估两个值并导致违反规则,但接受 N/A 作为值相等之外的唯一可接受值。

这是我到目前为止所拥有的。

x = value1
y = value2  

if x == "N/A" or x == y: 
    Rule.Violated = False
else:
    Rule.Violated = True

Rule.Violated 是我用来返回错误消息的系统中的内置函数,如果违反规则为假,则不返回错误消息,但我认为 if 语句的结果对于弄清楚逻辑并不重要,但如果您需要更多信息,请告诉我。

4

3 回答 3

1

我可能会做这样的事情:

if x not in ('N/A', y,):
    raise ValueError('my message')

使用异常处理是处理输入验证的推荐的 Pythonic 方式。

(此外,建议使用内置的异常类型,因为如果提供的异常类型覆盖整个stdlib,您将不需要创建新的异常类型)

于 2012-10-08T22:18:18.277 回答
0

那是你要的吗?

Rule.Violated = (x != y and x != "N/A")
于 2012-10-08T22:06:49.730 回答
0

我想通了,感谢帮助过的人。我的问题是数据类型,下次我有问题时一定要提到数据类型,但是对于那些好奇的人,这里是答案。

必须使用开发人员告诉我的函数将字段作为字符串获取并比较字符串。以前试图将日期时间与字符串进行比较,我的愚蠢举动。FormSet 也是我们系统中的内置参考,我试图避免使用除直接 python 之外的任何东西来提问。

x = FormSet.GetFieldString(CurrentForm, “SUM_VALUE_DATE”)
y = FormSet.GetFieldString(CurrentForm, “ORG_APPRAISAL_DATE”)

if x == “N/A” or FormSet.GetDaySpan(x, y) == 0:
            Rule.Violated = False
else:
            Rule.Violated = True
于 2012-10-08T23:16:30.663 回答