尝试从python中的其他函数创建函数时出错

2024-04-29 11:02:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试创建一个计算器,出于实际原因,我尝试从一个单独的python文件导入函数。它在某种程度上是有效的,但当它试图进行计算时,它就崩溃了。错误是没有定义add,但是我在导入函数时定义了它。代码如下:

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))

Tags: tofromselfdivyouaddforinput
1条回答
网友
1楼 · 发布于 2024-04-29 11:02:35

if语句中,如下所示:

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

addition被创建为函数choice的局部变量,但是您将x设置为self.addition(),这是未定义的

如果你想写x = add.addition(),那么你的addition函数不会返回任何东西,它只是输出一个值。其他函数也一样-它们都不返回任何内容。因此self.addition没有定义,x将是NoneType对象

您的additionsubtraction和其他函数也将self作为参数,因为它们不是类中的方法,所以这没有多大意义

相关问题 更多 >