尝试从 python 中的其他函数创建函数时出现错误
bug while trying to create a function from other functions in 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))
在if
语句中,像这样:
if xn == "a":
addition = add.addition
x = self.addition()
self.x = x
return x
addition
被创建为函数 choice
的局部变量,但您随后将 x
设置为 self.addition()
,这未定义。
如果你打算写 x = add.addition()
那么请注意你的 addition
函数不会 return 任何东西,它只是打印出一个值。其他功能也一样 - none 其中 return 任何东西。所以 self.addition
没有定义, x
将是一个 NoneType
对象
你的 addition
、subtraction
和其他函数也将 self
作为参数,当它们不是 class 中的方法时,所以这不会很有道理。
我一直在尝试创建一个计算器,出于实际原因,我尝试从单独的 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))
在if
语句中,像这样:
if xn == "a":
addition = add.addition
x = self.addition()
self.x = x
return x
addition
被创建为函数 choice
的局部变量,但您随后将 x
设置为 self.addition()
,这未定义。
如果你打算写 x = add.addition()
那么请注意你的 addition
函数不会 return 任何东西,它只是打印出一个值。其他功能也一样 - none 其中 return 任何东西。所以 self.addition
没有定义, x
将是一个 NoneType
对象
你的 addition
、subtraction
和其他函数也将 self
作为参数,当它们不是 class 中的方法时,所以这不会很有道理。