2016-11-13 3 views
-4

私はいくつかの助言が必要です。私はPythonでユーザからの文字列Sを左に と右の角括弧(例えば(()))(()()で要求するプログラムを書く必要があります。Pythonでの文字列処理(リストとして)

この後、プログラムは入力文字列の左括弧と右括弧の数を数える必要があります。たとえば、文字列(()))(()には、4つの右括弧と4つの左括弧が含まれています。ヒント:最初に0に初期化された2つのカウンタを導入します。次に、ループ内の文字列のシンボルを探索します。現在のシンボルのインクリメントでは、1 fのシンボルは(であり、それ以外の場合は1rightカウンタが加算されます。

次に、文字列が数学的であるかどうかをテストする必要があります。

角括弧が数式のように現れた場合は、数式のような文字列を呼び出します。 たとえば、文字列(),(())(),(()())は数学的なものですが、文字列 ))(())((および())(()はそうではありません。 入力文字列が数学の場合は"YES"、それ以外の場合は"NO" と表示されるプログラムを書く必要があります。ヒント:特に、ループの繰り返しごとに、leftrightカウンタの値が特定の条件を満たすことを確認する必要があります。

私はちょうど初心者なので、このタスクの実装を書くか、少なくともこれがどのように見えるか想像してください。

私は実際にこの問題を解決する必要があるため、どのようなタイプのヘルプもありがとうと思います。前もって感謝します!

+3

これは、スタックデータ構造の有名な(そして最も主要な)アプリケーションです。 「カッコを使って一致するものを検索する」 –

答えて

0

私にはあなたのためにコースの練習に答える誰かを探しているように聞こえます。そのようなことの要点は、がうまくいっていることです。だから、ここには、 "ここ、あなたの先生にこれを与えるよりも、スターターです。"

トークン解析にはさらに多くの時間が必要です。かっこの注文に注意を払っています。しかし、ここで文字列を実行し、あなたが持っているものを見て:

test1 = '(()))(()(' 
test2 = '(()))(()' 

def ptest(test): 
    lefts = 0 
    rights = 0 
    balance = 0 
    for c in test: 
     if c == '(': 
      balance += 1 
      lefts += 1 
     elif c == ')': 
      balance -= 1 
      rights += 1 
    print 'testing "'+test+'"' 
    print 'lefts='+str(lefts)+' rights='+str(rights) 
    if balance == 0: print 'balanced, possibly math-like' 
    else: print 'unbalanced, definitely not math-like' 

ptest(test1) 
ptest(test2) 
+0

これは私が関与しているプロジェクトの一部です。私は単にプロではプロではないので、本当に助けが必要でした。あなたが私を助けてくれて非常に感謝しています。私は何をすべきか理解するために、本当に感謝しています。 ありがとうございます! :) –

+0

私の喜び。残念なことに、SOは「OK」ということについてかなり気にしています。それは、肛門保持の下垂体がどこから来たかです。申し訳ありません。私ではありませんでした。 :) – fyngyrz