Python 显示函数的输出时出现问题

Python 显示函数的输出时出现问题,python,Python,我已经写出了我的函数,它从用户那里得到一个输入,并决定它是否为素数。如果它是prime,它应该只返回用户输入的值。如果不是,只返回0。当我将for循环从函数中取出时,它可以正常工作,但当我将它放入函数中时,它可以工作,但不显示相同的内容 def is_prime(): p = int(input("enter a number: ")) for i in range(2, int(p / 2)): if p % i == 0: print(0) brea

我已经写出了我的函数,它从用户那里得到一个输入,并决定它是否为素数。如果它是prime,它应该只返回用户输入的值。如果不是,只返回0。当我将for循环从函数中取出时,它可以正常工作,但当我将它放入函数中时,它可以工作,但不显示相同的内容

def is_prime(): 
p = int(input("enter a number: "))
for i in range(2, int(p / 2)):
    if p % i == 0:
        print(0)
        break
else:
    print(p)
是素数吗

enter a number: 5
5
but it also does the same thing when i enter a non-prime number
enter a number: 4
4
When its supposed to return 0.

您必须考虑到范围的结束值已被排除,因此向其添加1:

def is_prime(): 
    p = int(input("enter a number: "))
    for i in range(2, int(p / 2) + 1):
        if p % i == 0:
            print(0)
            break
    else:
        print(p)


is_prime()
测试:

enter a number: 4
0

enter a number: 5
5

enter a number: 15
0

你能再检查一下缩进吗?可能是因为中断在if之外。请重新格式化问题中的代码,Python需要适当的缩进。我怀疑它是否在功能之外起作用。例如,p==4,intp/2==2,因此range2,2是空的,循环没有执行。我执行了,但它仍然做相同的事情,很多!我不知道