Pythonの文字列からブール式を評価するプログラム?
演算子「and」と「or」を含むブール式を含む文字列sがあるとします。それを評価して、結果を返します。ここでは、式に括弧が含まれている場合があります。これを最初に評価する必要があります。
したがって、入力がs ="T and(F or T)"のような場合、出力はTrueになります
これを解決するには、次の手順に従います。
-
スタック:=新しいリスト
-
t=空白で分割されたsの要素のリスト
-
tのvごとに、実行します
-
v[0]が"("と同じ場合、
-
v ["("のインデックスから終了]が "T"と同じ場合、スタックにtrueをプッシュします
-
-
それ以外の場合、「)」が見つかった場合は
-
ct:=v
の閉じ括弧")"の数 -
v[インデックス0からv-ctのサイズまで]がスタックへの「T」と同じである場合にtrueをプッシュします
-
0からct-1の範囲の値ごとに、実行
-
右:=スタックからポップ
-
-
-
-
:=スタックからポップ
-
左:=スタックからポップ
-
操作(左または右)を実行し、スタックにプッシュします
-
それ以外の場合、vが「T」または「F」の場合
-
vが「T」と同じ場合にtrueをスタックにプッシュします
-
-
それ以外の場合
-
op[v]をスタックにプッシュ
-
-
-
スタック内の要素数が1より大きい場合、
-
0からスタックのサイズまでの範囲のiの場合-1、2ずつ増やします
-
stack [i + 2]:=stack [i + 1](stack [i]、stack [i + 2])
-
-
スタックの最上位要素を返す
-
-
スタックの一番下の要素を返す
理解を深めるために、次の実装を見てみましょう。
例
class Solution: def solve(self, s): stack = [] op = { "or": lambda x, y: x or y, "and": lambda x, y: x and y, } for v in s.split(): if v[0] == "(": stack.append(v[v.count("(") :] == "T") elif v.count(")") > 0: ct = v.count(")") stack.append(v[:-ct] == "T") for _ in range(ct): right = stack.pop() o = stack.pop() left = stack.pop() stack.append(o(left, right)) elif v in ["T", "F"]: stack.append(v == "T") else: stack.append(op[v]) if len(stack) > 1: for i in range(0, len(stack) - 1, 2): stack[i + 2] = stack[i + 1](stack[i], stack[i + 2]) return stack[-1] return stack[0] ob = Solution() s = "T and (F or T)" print(ob.solve(s))
入力
"T and (F or T)"
出力
True
-
文字列からn番目の文字を削除するためのPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 −文字列が与えられたので、与えられた文字列からi番目のインデックス付き文字を削除して表示する必要があります。 Pythonのどの文字列でも、インデックス付けは常に0から始まります。文字列「tutorialspoint」があるとすると、そのインデックス付けは次のように行われます- T u t o r i a l s p o i n t 0 1 2 3 4 5 6 7 8 9 10 11 12 13 次に、ステートメントを解決するためのPythonスクリプトを見てみましょう- 例 def remove
-
文字列からn番目の文字を削除するためのPythonプログラム?
文字列は文字の配列を意味するため、開始アドレスは0です。そうすれば、すべての文字のインデックスを簡単に取得できます。そのインデックス番号を入力する必要があります。次に、その要素を削除します。したがって、文字列を2つのサブ文字列に分割します。また、2つの部分は、n番目のインデックス付き文字の前と、インデックス付き文字の後の2つの部分で、この2つの文字列をマージする必要があります。 例 Input: python n-th indexed: 3 Output: pyton 説明 アルゴリズム Step 1: Input a string. Step 2: input the index p