python 简单函数错误?

0 投票
4 回答
1432 浏览
提问于 2025-04-15 23:37

我有一个简单的函数,用来做一些简单的数学运算。如果我从另一个脚本中用导入的方式调用这个函数,结果却没有任何输出。如果我把def function这一行去掉,所有的东西就都正常工作了。那我定义这个函数到底有什么问题呢?我刚开始学Python。

def calci(a, op, b): 
    if op == '+':
        c = a + b
    elif op == '-':
        c = a-b
    elif op == '*':
        c= a*b
    elif op =='/':
        if(b == 0):
            print('can\'t divide') 
            c = a/b
            print('value is',c)
            return c 
result  = calci(12,'+', 12)
print(result)

4 个回答

1

你的函数只有在 op=='/' 的时候才会返回结果。

把那两行代码前面的几个制表符去掉,它就能正常工作了。

也就是说:

def calci(a, op, b): 

    ...

    print('value is',c)
    return c
3

你在函数结尾的缩进似乎有问题;只有当 op == '/' 时,printreturn c 才会执行,而你只有在 b == 0 时才给 c 赋值。结尾应该是:

elif op =='/':
    if(b == 0):
        print('can\'t divide') # You should probably return here instead of falling through to the assignment

    c = a/b


print('value is',c)
return c
3
print('value is',c)
return c

你想把结果返回给调用的函数,还是直接打印出来呢?在你的程序中,只有通过“除法”这条路能得到一个 return,而一旦执行了这个,后面的 print 语句就永远不会被执行了。

如果你想同时做到这两点,你需要把相关的代码缩进到 ifelif 语句的同一级别。别忘了把你的测试代码(比如 result = calci(...) 等)删掉。

原因是,一旦你的代码执行到 return 语句,函数就结束了,后面的代码都不会再执行了(不过有个例外,就是有一种叫 finally 的机制,可以在函数结束后执行,但这里不需要考虑这个)。

补充说明: 既然你只是想打印结果,那就把 return 语句删掉,把 print 语句的缩进调整一下。

撰写回答