2017-11-22 16 views
0

私は、数式に一致するかっこが含まれているかどうかを判断するプログラムを作成しようとしています。私は彼らが左と右の同じ量を持っているかどうかを確認する必要があり、次にそれが開いているかどうかを判断する必要があります。しかし、私はそれをどうやって行うのか分かりません。私は表現を取得した後、何も出ていない。彼らが閉じているかどうかを調べる良い方法があると知っていますが、わかりません。閉じたか開いている括弧のチェッカー

(5 + 5)/(5 + 2) 5)、またはその

def main(): 
    left = 0 
    right = 0 
    even = (0 or 2 or 4 or 6 or 8 or 10 or 12 or 14) #is there a better way to check if they match rather than doing even or odd? 
    odd = (1 or 3 or 5 or 7 or 9 or 11 or 13 or 15) 
    if expression == "(": 
    left += 1 
    elif expression == ")": 
    right -= 1 
    expression = input("write a mathematical expression with parentheses") #lets user input mathematical expression to evaluate for correct number of parentheses 
    parentheses = (left + right) #this is probably not the most efficient way, I just want to find out if my parentheses match, so suggestions here would help 
    if parentheses == even: 
    print("Your parentheses are closed") 
    if parentheses == odd: 
    print("You are missing a parenthese") 




main() 
+0

あなたの式は何のように見えることができますか?私たちに例を挙げてください。 – roelofs

+0

あなたは式の文字列を反復処理していないことを知っていますか? – roelofs

+0

(1-9)* 4 – savannah

答えて

0

のようなもの、あなたのコード内の問題がいくつかあります:

  1. あなたはそれがカッコだかどうかを確認するために、あなたの入力文字列(expression)内の各文字を反復処理する必要があります何か他のものを数えてから数えてください。
  2. あなたは、それ自体は問題ではありません
  3. 括弧が閉じているかどうかを決定する前に、またはオープンを行う必要がありますが、あなたは何かがかなり偶数と奇数の変数を定義するよりも、も、モジュロ演算子 %であるかどうかをテストすることができます。
  4. 非効率性と不必要な変数のカップルがあなたのコード

であり、以下のコードが何をすべきあなたが後にしているもの:

def main(): 
    left = 0 
    right = 0 
    expression = raw_input("write a mathematical expression with parentheses: ") 
    for character in expression: 
     if character == '(': 
      left = left + 1 
     elif character == ')': 
      right = right + 1 

    total = left + right 
    if (left < right): 
     missing = "left" 
    elif (right < left): 
     missing = "right" 
    if (total % 2) == 0: 
     print("Your parentheses are closed") 
    else: 
     print("You are missing a " + missing + " parentheses") 

main() 
+0

私はどの人が行方不明になったかと言うことができる方法はありますか? – savannah

+0

確かめてください - 「左」か「右」のどちらが小さいかを確認してください。それはあなたの欠けているものです。更新しました。 – roelofs

関連する問題