Python 名称错误:名称'';未使用多个定义函数定义

Python 名称错误:名称'';未使用多个定义函数定义,python,Python,我只是想说我知道这个代码是错误的,我只是在测试 这是一个计算器,你可以从代码中看到,我正在努力使他们以数字结尾,例如。 10+10=20,他们将保留数字20,并且可以继续使用20,我想继续重复这个选项 代码: def添加(num1,num2): 返回num1+num2 def mul(num1,num2): 返回num1*num2 def接头(num1、num2): 返回num1-num2 def分区(num1、num2): 返回num1/num2 def main(): 操作=输入(“是否希望

我只是想说我知道这个代码是错误的,我只是在测试

这是一个计算器,你可以从代码中看到,我正在努力使他们以数字结尾,例如。 10+10=20,他们将保留数字20,并且可以继续使用20,我想继续重复这个选项

代码:

def添加(num1,num2):
返回num1+num2
def mul(num1,num2):
返回num1*num2
def接头(num1、num2):
返回num1-num2
def分区(num1、num2):
返回num1/num2
def main():
操作=输入(“是否希望(+、-、*、/):”)
如果(操作!=“+”和操作!=“-”和操作!=“*”和操作!=“/”):
打印(“这是一个无效的操作”)
其他:
num1=浮点(输入(“选择一个数字:”)
num2=浮点(输入(“选择另一个数字:”)
如果(操作==“+”):
答案=(加上(num1,num2))
打印(答案)
elif(操作==“-”):
答案=(sub(num1,num2))
打印(答案)
elif(操作==“*”):
答案=(mul(num1,num2))
打印(答案)
elif(操作==“/”):
答案=(div(num1,num2))
打印(答案)
其他:
打印(“语法错误!”)
def多重(多重):
multiple=输入(“您想携带数字(Y或N):”)
如果(多个==“Y”或多个==“Y”):
进位=输入(“(+,-,*,/):”)
num3=int(输入(“选择一个数字:”)
如果(进位=“+”):
打印(答案+num3)
elif(进位=“-”):
打印(答案-num3)
elif(进位=“*”):
打印(答案*num3)
elif(进位=“/”):
打印(答案/单位m3)
其他:
打印(“语法错误!”)
多重=真
当multiple==True时:
多重()
选择=输入(“您想要进行多次计算吗?(Y或N):”)
而(选项==“y”或选项==“y”):
main()
多重()
多重()
main()
错误消息:
第56行,输入
多重()
名称错误:未定义名称“多个”

p、 s当它粘贴到奇怪的时,可能会出现一些缩进错误。您试图调用的函数
multiple
超出了
main
函数的范围,而该函数仅在其中定义。假设缩进如此处所示,则需要将
multiple
的定义移到
main
之外,以便调用它


此外,您正在定义一个名为
multiple
的变量,这可能会产生一些问题。您应该将其更改为其他内容。

我对您的代码进行了一些优化,并对其进行了修复。它工作得很好,所以看看它

def add(num1, num2):
    return num1 + num2

def mul(num1, num2):
    return num1 * num2

def sub(num1, num2):
    return num1 - num2

def div(num1, num2):
    return num1 / num2

def main(carry):
    operation = input("Do you want to (+,-,*,/): ")
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"):
        print("That is an invalid operation")
    else:
        num1 = float(input("choose a number: "))
        if carry == None:
            num2 = float(input("Choose another number: "))
        else:
            num2 = carry
        if(operation == "+"):
            answer = add(num1, num2)
        elif(operation == "-"):
            answer = sub(num1, num2)
        elif(operation == "*"):
            answer = mul(num1, num2)
        elif(operation == "/"):
            answer = div(num1, num2)
        print(answer)
        return answer

if input("would you like multiple calculations? (Y or N): ") in ("y", "Y"):
    domultiple = True
else:
    domultiple = False

carry = None
while 1:
    carry = main(carry)
    if domultiple:
        if input("would you like to carry the number (Y or N): ") in ("n", "N"):
            break
    else:
        break

顺便说一句,代码中没有包含错误消息。请花点时间修复代码缩进,定义的范围非常不明确。如果没有缩进更正,缩进仍然无效。很难判断什么是什么,但似乎
multiple()
是在
main()
中定义的,使其成为
main()
的局部函数。处理除以零是一种很好的编码行为:)我知道它在另一个定义中,但如果它在外部,它将无法识别像answer这样的变量,因此我不确定是否也应该将answer传递给
multiple
函数。但这是另一个问题。你发布的代码中有许多问题需要修正/调整:)我可以这样做,但是答案是num1和num2被加、除、乘或减。这是我空闲程序中的确切代码。再次,对不起,但这是一个完全不同的问题,不是唯一需要处理的问题。你应该用另一个问题来回答这个问题。你实际上是在问如何在这里编写代码。谢谢你,我对Python还是个新手,我15岁在学校开始学习Python,准备参加GCSE考试,但我在家学到了更多,你帮了我很多。非常感谢。这几天我一直在想办法。
def add(num1, num2):
    return num1 + num2

def mul(num1, num2):
    return num1 * num2

def sub(num1, num2):
    return num1 - num2

def div(num1, num2):
    return num1 / num2

def main(carry):
    operation = input("Do you want to (+,-,*,/): ")
    if(operation != "+" and operation != "-" and operation != "*" and operation != "/"):
        print("That is an invalid operation")
    else:
        num1 = float(input("choose a number: "))
        if carry == None:
            num2 = float(input("Choose another number: "))
        else:
            num2 = carry
        if(operation == "+"):
            answer = add(num1, num2)
        elif(operation == "-"):
            answer = sub(num1, num2)
        elif(operation == "*"):
            answer = mul(num1, num2)
        elif(operation == "/"):
            answer = div(num1, num2)
        print(answer)
        return answer

if input("would you like multiple calculations? (Y or N): ") in ("y", "Y"):
    domultiple = True
else:
    domultiple = False

carry = None
while 1:
    carry = main(carry)
    if domultiple:
        if input("would you like to carry the number (Y or N): ") in ("n", "N"):
            break
    else:
        break