0

これを機能させるのに少し問題があり、2つの値を評価しようとするとルール違反になりますが、等しい値以外の唯一の許容値としてN/Aを受け入れます。

これが私がこれまでに持っているものです。

x = value1
y = value2  

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

Rule.Violatedは、エラーメッセージをtrueで返し、ルール違反がfalseの場合は返さないために使用しているシステムに組み込まれている関数ですが、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 に答える