2017-02-05 9 views
0

最初に、私は完全にコーディングが新しくなっていると言わざるを得ないので、私が抱える問題は最も愚かなミスステイクによって引き起こされるかもしれません。Python:無効な構文グローバル変数を使用

+、 - 、*、/を計算できる電卓を作ろうとしています。 また、受信したメッセージが無効な場合は、エラーメッセージを表示して新しい操作シンボルを要求することになっています。 funtion "main"が無効なfuntionを受信したために実行されているかどうか、または最初に実行されているかどうかをコンピュータに知らせるために、 "check"というグローバル変数を使用しようとしています。最初はcheckが1に設定されているため、コンピュータは操作を求めるときに最初のフレーズを使用します。無効な操作が入力された場合、変数 "check"は1だけインクリメントされ、新しい操作を要求するときに2番目のフレーズ(エラーメッセージ)につながります。

問題は、スクリプトを実行しようとすると、「グローバルチェック= 1」の最初の行に構文エラーが発生することです。何が間違っているのですか?それは不要だどこにglobalを入れている

global check = 1 

#returns num1 + num2 
def add(num1,num2): 
    return num1 + num2 

#returns num1 - num2 
def sub(num1,num2): 
    return num1 - num2 

#returns num1 * num2 
def mul (num1,num2): 
    return num1 * num2 

#returns num1/num2 
def div (num1,num2): 
    return num1/num2 

#Main Function 
def main(): 
    if(global check == 1): #checks if "main" has been read before, if it has, then it is read agian because of invalid operation, and the global "check" should be higher than 1. 
     operation = input("Choose an operation! (+,-,*,/") 
    else: 
     operation = input("You must choose a valid operation! (+,-,*,/") 
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"): 
     global check = global check + 1 
     main() 
    else: 
     var1 = int(input("Enter number 1 :")) 
     var2 = int(input("Enter number 2 :")) 
    if(operation == "+"): 
     print(add(var1,var2)) 
    elif(operation == "-"): 
     print(sub(var1,var2)) 
    elif(operation == "*"): 
     print(mul(var1,var2)) 
    else: 
     print(div(var1,var2)) 


main() 
+0

、私はそのようにそれを入力しdidntのが、それはまだそのように置かれています... –

+1

SOはマークダウンを使用しているからです。今修正されました。私には 'global'を使う理由はないと思われます:ここでは' check'はすでにグローバルです... –

+0

そして、あなたがそれを修正したら、間違って 'global'を置く場所がいくつかあります。それはキーワードなので、式で使うことはできません。 –

答えて

0

以下は私のコードであるあなたがここにglobal必要はありません

global check = 1 

checkはすでにここglobalです。

if(global check == 1)global check = global check + 1globalの有効な使用ではありません。

代わりに、main()の中でglobalとしてcheckを宣言:私はコードは、このような形で示されている理由を理解しない

def main(): 
    global check 
+0

Reaper、助けてくれてありがとう、解決しましたが、今は構文があります(global check == 1): ^ SyntaxError:無効な構文 –

+0

@Isac Skoglund関数内で 'global check'を一度使うだけでよいのですが、 'if(check == 1):'や 'check + = 1'のような' check'を使ってください。 – Reaper