Python:在If语句中调用函数但不工作

时间:2017-09-22 22:19:26

标签: python

我正在使用python3,代码运行良好,但是当在if语句中插入函数时不幸发生任何事情,你能不能帮助我:

    def is_prim(n):
       if (n==1):
           return False
       elif (n==2):
           return True and print(n);
       else:
           for x in range(2,n):
               if(n % x==0):
                  return False
           return True and print(n)

   if (is_prim(11))== True):
      print("1")

我遇到的问题是最后两行代码。

1 个答案:

答案 0 :(得分:1)

你的上一个return语句没有返回True,它返回结果值True and None,这是None,因为Python 3中的print函数总是返回None。在True and None的组合中,返回的结果值为None,而不是True。

如果要返回True,并返回n的值,以便稍后可以通过调用函数的代码打印或使用它,则可以生成return语句return True, n。这将返回元组(True, n)。请注意,如果元组不等于True,则if语句仍为False且不执行其语句。

如果你只想打印(n)然后仍然让return语句返回True,那么只需在return语句之前调用你的print语句

print(n)
return True

您还必须修改其他返回True语句。

当然,鉴于调用函数的代码已经可以访问n的值,您的函数可以简单地返回True或False,并在调用函数的代码中保留n的打印或处理。您的功能不需要打印任何东西。 (谢谢@chepner提醒我)

另一方面注意,if语句中的条件语句不需要括号,例如for循环。您可能需要参考PEP 8来正确格式化Python代码。