Python循环正在转义一个值
我是Python新手。我使用的是Python2.7.3,我编写了一个小函数来检查给定的数字是否为素数 守则如下:Python循环正在转义一个值,python,python-2.7,Python,Python 2.7,我是Python新手。我使用的是Python2.7.3,我编写了一个小函数来检查给定的数字是否为素数 守则如下: #!/usr/bin/python2.7 def isprime(n): if n == 1: print("1 is neither Prime nor Composite.") return False for x in range(2, n): if n % x == 0: print("
#!/usr/bin/python2.7
def isprime(n):
if n == 1:
print("1 is neither Prime nor Composite.")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print("{} is a prime number".format(n))
return True
for n in range(1, 5):
isprime(n)
而输出是—
1 is neither Prime nor Composite.
3 is a prime number
4 equals 2 x 2
为什么是逃跑2。我也尝试过调试,但它只是绕过了2。
谢谢。如果
n
是2
,那么对于范围(2,n)中的x,在行上:
范围(2,2)将返回一个空列表。如果n
是2
,那么对于范围(2,n)中的x,在行上:
范围(2,2)将返回一个空列表。如果n
是2
,那么在行上为范围内的x(2,n):
范围(2,2)将返回一个空列表。如果n
是2
,那么在行上为范围内的x(2,n):
范围内的x(2,2)将返回一个空列表。考虑一下n==2的情况:
def isprime(n):
if n == 1: # nope
...
for x in range(2, n): # here we go
那么实际发生了什么
>>> range(2, 2)
[]
什么都没有;您正在一个空的范围内迭代
此外,您还有一个逻辑错误-如果范围(2,n)
(即2
)中的第一个值不是n
的整数除数,则返回True
-您声称任何奇数都是素数:
>>> isprime(9)
9 is a prime number
True # what?!
如果按一个级别删除最后三行,则会修复这两个问题:
def isprime(n):
if n == 1:
print("1 is neither Prime nor Composite.")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print("{} is a prime number".format(n))
return True
(或者,省去else
,并将最后两行再删除一级)。这给了我:
>>> isprime(9)
9 equals 3 x 3
False
>>> isprime(2)
2 is a prime number
True
考虑以下情况,n==2
:
def isprime(n):
if n == 1: # nope
...
for x in range(2, n): # here we go
那么实际发生了什么
>>> range(2, 2)
[]
什么都没有;您正在一个空的范围内迭代
此外,您还有一个逻辑错误-如果范围(2,n)
(即2
)中的第一个值不是n
的整数除数,则返回True
-您声称任何奇数都是素数:
>>> isprime(9)
9 is a prime number
True # what?!
如果按一个级别删除最后三行,则会修复这两个问题:
def isprime(n):
if n == 1:
print("1 is neither Prime nor Composite.")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print("{} is a prime number".format(n))
return True
(或者,省去else
,并将最后两行再删除一级)。这给了我:
>>> isprime(9)
9 equals 3 x 3
False
>>> isprime(2)
2 is a prime number
True
考虑以下情况,n==2
:
def isprime(n):
if n == 1: # nope
...
for x in range(2, n): # here we go
那么实际发生了什么
>>> range(2, 2)
[]
什么都没有;您正在一个空的范围内迭代
此外,您还有一个逻辑错误-如果范围(2,n)
(即2
)中的第一个值不是n
的整数除数,则返回True
-您声称任何奇数都是素数:
>>> isprime(9)
9 is a prime number
True # what?!
如果按一个级别删除最后三行,则会修复这两个问题:
def isprime(n):
if n == 1:
print("1 is neither Prime nor Composite.")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print("{} is a prime number".format(n))
return True
(或者,省去else
,并将最后两行再删除一级)。这给了我:
>>> isprime(9)
9 equals 3 x 3
False
>>> isprime(2)
2 is a prime number
True
考虑以下情况,n==2
:
def isprime(n):
if n == 1: # nope
...
for x in range(2, n): # here we go
那么实际发生了什么
>>> range(2, 2)
[]
什么都没有;您正在一个空的范围内迭代
此外,您还有一个逻辑错误-如果范围(2,n)
(即2
)中的第一个值不是n
的整数除数,则返回True
-您声称任何奇数都是素数:
>>> isprime(9)
9 is a prime number
True # what?!
如果按一个级别删除最后三行,则会修复这两个问题:
def isprime(n):
if n == 1:
print("1 is neither Prime nor Composite.")
return False
for x in range(2, n):
if n % x == 0:
print("{} equals {} x {}".format(n, x, n // x))
return False
else:
print("{} is a prime number".format(n))
return True
(或者,省去else
,并将最后两行再删除一级)。这给了我:
>>> isprime(9)
9 equals 3 x 3
False
>>> isprime(2)
2 is a prime number
True
这不是我得到的输出-首先,5
不包括在范围(1,5)
中。请回顾您的问题。这不是我得到的结果-首先,5
不包括在范围(1,5)
中。请回顾您的问题。这不是我得到的结果-首先,5
不包括在范围(1,5)
中。请回顾您的问题。这不是我得到的结果-首先,5
不包括在范围(1,5)
中。请回顾您的问题。@AbhishekPrakash记住空格在Python中很重要!来自javascript背景,我完全忽略了它。iPrime(9)如何在原始逻辑中返回True?@user2963623因为9%2!=0
,这会直接带您进入其他
案例抱歉!我才意识到@AbhishekPrakash记住空格在Python中很重要!来自javascript背景,我完全忽略了它。iPrime(9)如何在原始逻辑中返回True?@user2963623因为9%2!=0
,这会直接带您进入其他
案例抱歉!我才意识到@AbhishekPrakash记住空格在Python中很重要!来自javascript背景,我完全忽略了它。iPrime(9)如何在原始逻辑中返回True?@user2963623因为9%2!=0
,这会直接带您进入其他
案例抱歉!我才意识到@AbhishekPrakash记住空格在Python中很重要!来自javascript背景,我完全忽略了它。iPrime(9)如何在原始逻辑中返回True?@user2963623因为9%2!=0
,这会直接带您进入其他
案例抱歉!我才意识到!