我正在使用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")
我遇到的问题是最后两行代码。
答案 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代码。