2012-12-01 47 views
0

我用函數編寫了一個簡單的計算器程序,我不知道這段代碼究竟有什麼錯,它的顯示錯誤。我做了可能的步驟來調試,但我不能。python計算器程序

#!/usr/bin/python 

def add():   
     print "Enter the two numbers to Add" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("ENter B:")) 
     c = A + B 

def sub():    
     print "Enter the two numbers to Subtract" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("Enter B:")) 
     c = A - B 

def Mul(): 
     print "Enter the two numbers to Multiply" 
     A=int(raw_input("Enter A:")) 
     B=int(raw_input("Enter B:")) 
     c = A * B 

def Div(): 
     print "Enter the two number to Divide" 
     A=float(raw_input("Enter A:")) 
     B=float(raw_input("Enter B:")) 
     c = A/B 

print "1: ADDITION" 
print "2: SUBTRACTION" 
print "3: MULTIPLICATION" 
print "4: DIVITION" 
print "0: QUIT" 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     add(c): 

    elif CHOICE == "2": 
     print 'SUBTRACTING TWO NUMBERS:' 
     sub(c): 

    elif CHOICE == "3": 
     print 'MULTIPLYING TWO NUMBERS:' 
     Mul(c): 

    elif CHOICE == "4": 
     print "DIVIDEING TWO NUMBERS" 
     Div(c): 

    elif CHOICE == "0": 
     return 0: 

    else 
     Print "The value Enter value from 1-4" 

錯誤:

File "cal_fun.py", line 44 
    if CHOICE == "1": 
       ^
SyntaxError: invalid syntax 

回答

1

你錯過了上一行結束括號(神祕的語法錯誤的常見原因),更改:

CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

這是不是在程序 - 唯一的語法錯誤,你最終多行與:時,你不應該,如:

add(c): 
    sub(c): 
    Mul(c): 
    Div(c): 

  1. 沒有:else聲明(必須)
  2. 利用Print當它應該是print
  3. 有一個return語句在任何函數之外

也有不屬於語法錯誤錯誤:

  1. 拼錯True作爲true
  2. 比較CHOICE,一個int,像"1""2"
  3. 傳遞一個不存在的變量的字符串c轉換爲不帶參數的功能
+0

我得到的同樣的錯誤if語句甚至做所有的修改「」第47行文件中的錯誤後。 「cal_fun.py」,第47行如果選擇== 1:「」 ^ –

+0

@PrabhuAre:確保你改變了'CHOICE = int(raw_input(('''行到'CHOICE = int(raw_input(「'(我提出的第一個改變),這就是唯一的解釋。您可以編輯您的問題以包含您的新代碼。 (另外,你確定你正在編輯正確的文件,並且你保存了嗎?) –

4

我試圖用你的代碼覆蓋所有的問題,其中有很多。

開始與syntax錯誤:

# true needed a captial T 
while True: 

    # Brackets were mismatched 
    CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     # Calling a function shouldn't have trailing : 
     add(c) 

    elif CHOICE == "2": 
     print 'SUBTRACTING TWO NUMBERS' 
     # Calling a function shouldn't have trailing : 
     sub(c) 

    elif CHOICE == "3": 
     print 'MULTIPLYING TWO NUMBERS' 
     # Calling a function shouldn't have trailing : 
     Mul(c) 

    elif CHOICE == "4": 
     print "DIVIDEING TWO NUMBERS" 
     # Calling a function shouldn't have trailing : 
     Div(c) 

    elif CHOICE == "0": 
     # can only return from a function use exit here instead 
     exit() 

    # else needs a trailing : 
    else: 
     # No capital P for print 
     print "The value Enter value from 1-4" 

代碼現在已經沒有syntax錯誤,但仍然存在許多問題。

  1. 您傳遞c給你的函數,c從未初始化,什麼是c
  2. 你的函數不帶參數def add():(即使通過神祕的c值)
  3. 您的功能不是printreturn它只是計算的結果。
  4. 您存儲CHOICEint是做字符串比較,所以就總是執行else情況下,有沒有辦法退出循環(無限循環)

固定碼:

#!/usr/bin/python 

def add(): 
     print "Enter the two numbers to Add" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
     return A + B 

def sub(): 
     print "Enter the two numbers to Subtract" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
     return A - B 

def mul(): 
     print "Enter the two numbers to Multiply" 
     A=int(raw_input("Enter A: ")) 
     B=int(raw_input("Enter B: ")) 
    return A * B 

def div(): 
     print "Enter the two number to Divide" 
     A=float(raw_input("Enter A: ")) 
     B=float(raw_input("Enter B: ")) 
     return A/B 

print "1: ADDITION" 
print "2: SUBTRACTION" 
print "3: MULTIPLICATION" 
print "4: DIVITION" 
print "0: QUIT" 

while True: 

    CHOICE = int(raw_input("ENTER THE CORRESPONDING NUMBER FOR CALCULATION ")) 

    if CHOICE == 1: 
     print 'ADDING TWO NUMBERS:' 
     print add() 

    elif CHOICE == 2: 
     print 'SUBTRACTING TWO NUMBERS' 
     print sub() 

    elif CHOICE == 3: 
     print 'MULTIPLYING TWO NUMBERS' 
     print mul() 

    elif CHOICE == 4: 
     print "DIVIDEING TWO NUMBERS" 
     print div() 

    elif CHOICE == 0: 
     exit() 
    else: 
     print "The value Enter value from 1-4" 

的代碼現在功能。

輸出:

1: ADDITION 
2: SUBTRACTION 
3: MULTIPLICATION 
4: DIVITION 
0: QUIT 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 1 
ADDING TWO NUMBERS: 
Enter the two numbers to Add 
Enter A: 2 
Enter B: 5 
7 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 2 
SUBTRACTING TWO NUMBERS 
Enter the two numbers to Subtract 
Enter A: 2 
Enter B: 5 
-3 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 3 
MULTIPLYING TWO NUMBERS 
Enter the two numbers to Multiply 
Enter A: 2 
Enter B: 5 
10 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 4 
DIVIDEING TWO NUMBERS 
Enter the two number to Divide 
Enter A: 2 
Enter B: 5 
0.4 
ENTER THE CORRESPONDING NUMBER FOR CALCULATION 0 

功能,但還不完善,比如沒有錯誤處理的錯誤輸入。

+0

即使在做完所有修改之後,我在if語句中也遇到同樣的錯誤。錯誤是aslan @ aslan-HP-Pavilion-dv6-Notebook-PC:〜/ Desktop/python $ python cal_fun.py 文件「cal_fun.py」,第47行 if CHOICE == 1: ^ SyntaxError:invalid語法 –

1

您正在向您的函數傳遞變量cadd()sub()等,但它們被定義爲不帶任何參數。

1

你真正想要的已經提到什麼,我覺得語法錯誤的是各個函數值返回主程序循環,然後將它們顯示:

def add(): 
    A=int(raw_input("Enter A:")) 
    B=int(raw_input("ENter B:")) 
    return A + B 
... 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 

    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     answer = add() 
     print answer 
    ... 

或可選擇地使程序更短通過在主迴路輸入A和B,然後通過這些作爲參數計算功能:

def add(): 
    return A + B 
... 

while true: 

    CHOICE = int(raw_input(("ENTER THE CORRESPONDING NUMBER FOR CALCULATION")) 
    A=int(raw_input("Enter A:")) 
    B=int(raw_input("ENter B:")) 
    if CHOICE == "1": 
     print 'ADDING TWO NUMBERS:' 
     answer = add(A, B) 
     print answer 
    ... 
+0

如果使用此方法,是否可以在其他程序中訪問add()函數? –

+0

一般而言,除非它們存儲爲[modules](http://docs.python.org/2/tutorial/modules.html),否則不能從另一個程序訪問另一個程序中的函數。但是,您可以從同一文件中的任何代碼訪問添加功能。在第一個版本中,您只需調用add(),然後在第二個版本中必須告訴它要添加什麼 - add(x,y)。 – Stuart