2017-03-10 5 views
-2

を定義し、私はちょうどあなたが得るような私は、これは電卓であることを意味するNameError:名前「」複数で定義されていないが、機能

をテストしています、私はこのコードが間違っている知っていると言ってオフ開始したいですコードから見ることができるようにしてください。 10 + 10 = 20、彼らは私がそのオプションを繰り返し

コード保持したい、数20を維持し、20で続けていくことができます。

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

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

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

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

def main(): 
    operation = input("Do you want to(+,-,*,/): ") 
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"): 
     print("That is an invalid operation") 
    else: 
     num1 = float(input("choose a number: ")) 
     num2 = float(input("Choose another number: ")) 
     if(operation == "+"): 
      answer = (add(num1, num2)) 
      print(answer) 
     elif(operation == "-"): 
      answer = (sub(num1, num2)) 
      print(answer) 
     elif(operation == "*"): 
      answer = (mul(num1, num2)) 
      print(answer) 
     elif(operation == "/"): 
      answer = (div(num1, num2)) 
      print(answer) 
     else: 
      print("Syntax error!") 
     def multiple(multiple): 
      multiple = input("would you like to carry the number(Y or N): ") 
      if(multiple == "Y" or multiple == "y"): 
       carry = input("(+,-,*,/): ") 
       num3 = int(input("choose a number: ")) 
       if(carry == "+"): 
        print(answer + num3) 
       elif(carry == "-"): 
        print(answer - num3) 
       elif(carry == "*"): 
        print(answer * num3) 
       elif(carry == "/"): 
        print(answer/num3) 
       else: 
        print("Syntax Error!") 
    multiple = True 
    while multiple == True: 
     multiple() 

choice = input("would you like multiple calculations? (Y or N): ") 
while(choice == "y" or choice == "Y"): 
    main() 
    multiple() 
multiple() 
main() 

error message: 

line 56, in <module> 
    multiple() 
NameError: name 'multiple' is not defined 

PSとして、この中でいくつかのインデントの誤差があるかもしれませんそれは奇妙な貼り付け

+0

エラーメッセージが –

+0

によってコードに含まれていないコードのインデントを修正する時間がかかるしてください、定義の範囲が非常に不明確である – putonspectacles

+0

インデントは、インデント補正なし – nir0s

答えて

0

main関数のスコープの外に関数multipleを呼び出そうとしていますが、定義されていません。インデントがここに示されていると仮定すると、multipleの定義をmainの外に移動して呼び出すことができるようにする必要があります。

さらに、multipleという名前の変数を定義しているため、いくつかの問題が発生する可能性があります。それを別のものに変更する必要があります。

+0

私はそれが他の定義の中にあることを知っていますが、私はそれを外に持っていれば答えのような変数を認識しないので、本当にわかりません –

+0

'multiple'関数にも答えを渡すべきです。しかしそれは別の問題です。あなたが掲示したコードで修正/調整が必要な多くの問題があります:) – nir0s

+0

答えは** num1 **と** num2 **によって追加、分割、掛け算または減算されましたが、可能です。 –

0

コードを少し最適化して修正しました。それはうまく動作するので、それを見てください。

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

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

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

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

def main(carry): 
    operation = input("Do you want to (+,-,*,/): ") 
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"): 
     print("That is an invalid operation") 
    else: 
     num1 = float(input("choose a number: ")) 
     if carry == None: 
      num2 = float(input("Choose another number: ")) 
     else: 
      num2 = carry 
     if(operation == "+"): 
      answer = add(num1, num2) 
     elif(operation == "-"): 
      answer = sub(num1, num2) 
     elif(operation == "*"): 
      answer = mul(num1, num2) 
     elif(operation == "/"): 
      answer = div(num1, num2) 
     print(answer) 
     return answer 

if input("would you like multiple calculations? (Y or N): ") in ("y", "Y"): 
    domultiple = True 
else: 
    domultiple = False 

carry = None 
while 1: 
    carry = main(carry) 
    if domultiple: 
     if input("would you like to carry the number (Y or N): ") in ("n", "N"): 
      break 
    else: 
     break 
+0

ありがとう、私はまだPythonにはまだ新しいです、私はGCSEのために学校でpythonを始める15歳ですが、私は自宅でもっと学び、あなたは私を助けてくれました。 ありがとうございます!私は数日間このことを理解しようとしています。 –

関連する問題