2016-06-08 122 views
0

我一直在試圖創建一個計算器,並且出於實際原因,我試圖從單獨的python文件導入函數。它在一定程度上起作用,但當它嘗試進行計算時會中斷。問題是添加沒有被定義,但我在導入函數時已經定義了它。下面是代碼:在嘗試從python中的其他函數創建函數時出現錯誤

class Calculator(object): 

import a10 as add 
import d10 as div 
import m10 as mult 
import s10 as sub 

def choice(self): 
    print("A. Addition\l B. Substraction\l C. Division\l D. Multiplication") 
    xn = input("What do you want to do? ") 
    if xn == "a": 
     addition = add.addition 
     x = self.addition() 
     self.x = x 
     return x 
    elif xn == "b": 
     subtraction = sub.subtraction 
     z = self.subtraction() 
     self.z = z 
     return z 
    elif xn == "c": 
     division = div.division 
     y = self.division() 
     self.y = y 
     return y 
    elif xn == 'd': 
     Multiplication = mult.multiplication 
     v = self.Multiplication() 
     self.v = v 
     return v 


objcalc = Calculator() 
print(objcalc.choice()) 

這裏是A10

def addition(self): 
try: 
    n = int(input("enter number: ")) 
    n_for_add = int(input("What do you want to add on " + str(n) + " ? "))  
except ValueError: 
    print("you must enter an integer!") 
n_from_add = n + n_for_add 
print(str(n) + " plus " + str(n_for_add) + " equals to " + str(n_from_add)) 

S10

def subtraction(self): 
    try: 
     nu = int(input("enter number: ")) 
     nu_for_sub = int(input("What do you want to take off " + str(nu) + " ? ")) 
    except ValueError: 
     print("you must enter an integer!") 
    nu_from_sub = nu - nu_for_sub 
    print(str(nu) + " minus " + str(nu_for_sub) + " equals to " + str(nu_from_sub)) 

M10

def Multiplication(self): 
    try: 
     numb = int(input("enter number: ")) 
     numb_for_multi = int(input("What do you want to multiply " + str(numb) + " on? ")) 
    except ValueError: 
     print("you must enter an integer!") 
    numb_from_multi = numb * numb_for_multi 
    print(str(numb) + " multiplied by " + str(numb_for_multi) + " equals to " + str(numb_from_multi)) 

D10

def division(self): 
    try: 
     num = int(input("enter number: ")) 
     num_for_div = int(input("What do you want to divide " + str(num) + " off? ")) 
    except ValueError: 
     print("you must enter an integer!") 
    num_from_div = num/num_for_div 
    print(str(num) + " divided by " + str(num_for_div) + " equals to " + str(num_from_div)) 
+1

'addition'沒有正確縮進。 –

+1

你的班級也沒有正確縮進。 –

回答

0

if語句,就像這樣:

if xn == "a": 
    addition = add.addition 
    x = self.addition() 
    self.x = x 
    return x 

addition被創建爲一個局部變量的函數choice,但你再設置xself.addition(),這是沒有定義的。

如果你的意思是寫x = add.addition()然後被警告你的addition函數不返回任何東西,它只是打印出一個值。對於其他功能也是如此 - 它們都不返回任何內容。所以self.addition沒有定義,並x將是一個NoneType對象

additionsubtraction等功能也採取self作爲參數,當他們不是在一個類的方法,所以這並沒有太大的意義。

相關問題