我正试图在Python中生成一个for循环,该循环应将任何数字分类为素数/非素数。建议的命令是:
def prime_checker(number):
is_prime = True
for n in range(2, number):
if number % n == 0:
is_prime = False
if is_prime == True:
print("It is a prime number.")
else:
print("It is not a prime number.")
上面建议的命令运行良好。然而,我想将参数生成为is_prime = bool()
(即没有标准值(,并且只有在这之后,函数才会将is_prime
分类为"0";真"或";错误";。原因是我不喜欢用标准自变量生成变量的想法;相反,我更喜欢先生成填充有缺失值的变量,然后才用正确的参数填充它们。我尝试了这个命令,但它只会输出";它是一个素数":
def prime_checker(number):
is_prime = bool()
for n in range(2, number):
if number % n == 0:
is_prime = False
else:
is_prime = True
if is_prime == True:
print("It is a prime number.")
else:
print("It is not a prime number.")
我想知道是否有人知道为什么上面的命令将只输出"0";它是一个素数">
我不知道你为什么不喜欢这个想法,它在python中(以及在编程中(是非常标准的,并且经常使用。无论如何,你能写的最接近的东西是:
is_prime = None
这在python中等同于声明一个变量而不赋值。
我的最终命令是:
def prime_checker(number):
is_prime = None
if number <2:
is_prime = False
print(f"{number} is not prime")
else:
for n in range(2,number):
if number % n == 0:
is_prime = False
if is_prime == False:
print(f"{number} is not prime")
else:
is_prime = True
print(f"{number} is prime")
感谢所有在这篇文章中发表评论的人!当然欢迎任何其他意见。
这是因为您的第二个函数执行
else:
is_prime = True
在for循环中。因此,如果它发现它不是n
的一个值的素数,那么下一次迭代(n+1
(可能会使is_prime
等于True
。
例如,如果你正在测试数字4:
- 它可以被2整除,所以将
is_prime
设置为False
- 它不能被3整除,所以将
is_prime
设置为True
在发现break
不是素数后,您需要添加它,这样它就不会继续检查其他数字。
无论如何,执行is_prime = bool()
会将其设置为False
。
最后,作为一个附加组件,有更快速的方法来检查原始性:
import math
def is_prime(number):
if number <= 2:
print(number, "is prime!")
return True
for i in range(3, math.floor(math.sqrt(number))+1, 2):
if number%i == 0:
print(number, "is prime!")
return True
print(number, "is not prime!")
return False