python 简单函数错误?
我有一个简单的函数,用来做一些简单的数学运算。如果我从另一个脚本中用导入的方式调用这个函数,结果却没有任何输出。如果我把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 == '/'
时,print
和 return 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
语句就永远不会被执行了。
如果你想同时做到这两点,你需要把相关的代码缩进到 if
和 elif
语句的同一级别。别忘了把你的测试代码(比如 result = calci(...)
等)删掉。
原因是,一旦你的代码执行到 return
语句,函数就结束了,后面的代码都不会再执行了(不过有个例外,就是有一种叫 finally
的机制,可以在函数结束后执行,但这里不需要考虑这个)。
补充说明: 既然你只是想打印结果,那就把 return
语句删掉,把 print
语句的缩进调整一下。