2016-06-08 129 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作为参数,当他们不是在一个类的方法,所以这并没有太大的意义。

相关问题