Python - for 循环没有为布尔参数输入正确的参数
Python - for-loop does not enter correct argument for boolean parameter
我正在尝试在 Python 中生成一个 for 循环,它将任何数字分类为 prime/not 素数。建议的命令是:
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
分类为“True”或“False”。原因是我不喜欢用标准参数生成变量的想法;相反,我更喜欢先生成填充有缺失值的变量,然后才用适当的参数填充它们。我试过这个命令,但它只会输出“It is a prime number”。:
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.")
不知道有没有人知道为什么上面的命令只会输出“It is a prime number”。
我不确定您为什么不喜欢这个想法,它在 python(以及一般的编程)中非常标准并且经常使用。不管怎样,你能写的最接近的东西是:
is_prime = None
这等同于 python 中声明变量而不赋值。
因为你的第二个函数
else:
is_prime = True
在 for-loop 内。
因此,如果它发现 n
的一个值不是质数,则下一次迭代 (n+1
) 可能会使 is_prime
等于 True
.
例如,如果您要测试数字 4:
- 可以被2整除,所以设置
is_prime
为False
- 不能被3整除,所以设置
is_prime
为True
你发现它不是质数后需要添加一个break
,这样它就不会尝试继续检查其他数字。
并执行 is_prime = bool()
将其设置为 False
,无论如何。
最后,只是一个add-on,有更快的方法来检查素数:
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
我的最终命令是:
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")
感谢所有在此 post 发表评论的人!当然欢迎任何其他评论。
我正在尝试在 Python 中生成一个 for 循环,它将任何数字分类为 prime/not 素数。建议的命令是:
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
分类为“True”或“False”。原因是我不喜欢用标准参数生成变量的想法;相反,我更喜欢先生成填充有缺失值的变量,然后才用适当的参数填充它们。我试过这个命令,但它只会输出“It is a prime number”。:
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.")
不知道有没有人知道为什么上面的命令只会输出“It is a prime number”。
我不确定您为什么不喜欢这个想法,它在 python(以及一般的编程)中非常标准并且经常使用。不管怎样,你能写的最接近的东西是:
is_prime = None
这等同于 python 中声明变量而不赋值。
因为你的第二个函数
else:
is_prime = True
在 for-loop 内。
因此,如果它发现 n
的一个值不是质数,则下一次迭代 (n+1
) 可能会使 is_prime
等于 True
.
例如,如果您要测试数字 4:
- 可以被2整除,所以设置
is_prime
为False
- 不能被3整除,所以设置
is_prime
为True
你发现它不是质数后需要添加一个break
,这样它就不会尝试继续检查其他数字。
并执行 is_prime = bool()
将其设置为 False
,无论如何。
最后,只是一个add-on,有更快的方法来检查素数:
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
我的最终命令是:
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")
感谢所有在此 post 发表评论的人!当然欢迎任何其他评论。