0

そこで、集合論計算機 (つまり、2 つの集合、交差、補数などの和集合) のような Python アプリを作成しようとしています。実行時に Python 式のように評価され、中かっこが付けられ、すべてがセットに変換されるテキスト フィールドが必要です。新しいセットが計算されると、結果が画面に表示されます。ただし、意図的かどうかにかかわらず、アプリ全体 (またはさらに悪いことにシステム) を台無しにする可能性のある Python コマンドをユーザーが入力しないようにしたいと考えています。彼は次のものしか入力できないはずです。

  • セット演算 (和、差、カーディナリティなど。数学記号用のボタンを用意し、正規表現を使用してフードの下で適切にします)
  • セット (次の要素のみを保持できます。その他のセット、タプル、整数、実数、アルファベット文字、および文字列)。

アイデアを提供するために、これは入力と出力がどのように見えるかです (このアプリは GUI を使用します。便宜上、ターミナル スタイルを使用します)。

>>> {1, 2, a} - {a}
{1, 2}

任意のヒント?それとも、Python コマンドに変換するミニ言語を実装する必要がありますか?

4

2 に答える 2

1

最初に式をコンパイルしてから、結果の ASTを調べて、明示的に許可したい操作のみが含まれていることを確認します。それから 評価してください。

于 2012-09-25T03:48:31.077 に答える
0

Pythonコマンドに変換できるミニ言語を使用します。

セットを {} 表記で表現したい場合は、括弧内に含まれるすべての非数値が文字列のように扱われるようにします (セキュリティ リスクを回避するため)。セットはハッシュ化できず、ネストできないため、ネストされたブラケットは凍結セットとしてインスタンス化されます。

解析されたセット間のオペランドは、おそらく次のように制限する必要があります。

s <= t  test whether every element in s is in t
s >= t  test whether every element in t is in s
s | t   new set with elements from both s and t
s & t   new set with elements common to s and t
s - t   new set with elements in s but not in t
s ^ t   new set with elements in either s or t but not both
于 2012-09-25T05:01:34.967 に答える