我的 For 循环不会遍历列表
My For loop won't iterate through a list
我必须确定列表中的所有数字是否都是质数,然后根据结果 return 布尔值 "True" 或 "False" 语句。我在 for 循环中做了一些条件语句来查看数字是否为质数。
代码如下:
def all_primes(xs):
is_prime = None
for i in xs:
if i < 2:
is_prime = False
return is_prime
break
elif (i % 2 == 0) and (i % i == 1):
is_prime = False
return is_prime
break
else:
is_prime = True
return is_prime
问题是,我在 Python Visualizer 中看到了这一点,for 循环在检查列表中的第一个值后停止迭代。我不明白为什么,因为语法与我过去使用的循环相同。
我插入了一些示例值,例如:all_primes([5,2,11,37])
或 all_primes([5,2,4,37])
并且 return 值始终为真,因为 5 是列表中的第一个数字,也是唯一的数字正在迭代。
关于为什么的任何想法?
你应该反过来看问题。
如果你找到一个不是质数的数字,你应该 return False,在循环结束后你应该 return True。
你的 if/else
块中有一个 return
和一个 break
,你应该摆脱它们。此外 else
中的 return
应该在外面,否则只要他找到 "prime".
它就会 return
def all_primes(xs):
is_prime = None
for i in xs:
if i < 2:
is_prime = False
return is_prime
elif (i % 2 == 0):
is_prime = False
return is_prime
else:
is_prime = True
return is_prime
在这之后,你应该知道,你并不是真的在检查质数。
这不是最有效的方法,但它很清楚如何:
def all_primes(xs):
def checkPrime(n):
if n < 2:
return False
for i in xrange(2, n):
if n%i == 0:
return False
return True
return all(map(checkPrime, xs))
编辑:
没有 map
函数,您只需要使用 for
循环进行迭代:
def all_primes(xs):
def checkPrime(n):
if n < 2:
return False
for i in xrange(2, n):
if n%i == 0:
return False
return True
for n in xs:
if not checkPrime(n):
return False
return True
我必须确定列表中的所有数字是否都是质数,然后根据结果 return 布尔值 "True" 或 "False" 语句。我在 for 循环中做了一些条件语句来查看数字是否为质数。
代码如下:
def all_primes(xs):
is_prime = None
for i in xs:
if i < 2:
is_prime = False
return is_prime
break
elif (i % 2 == 0) and (i % i == 1):
is_prime = False
return is_prime
break
else:
is_prime = True
return is_prime
问题是,我在 Python Visualizer 中看到了这一点,for 循环在检查列表中的第一个值后停止迭代。我不明白为什么,因为语法与我过去使用的循环相同。
我插入了一些示例值,例如:all_primes([5,2,11,37])
或 all_primes([5,2,4,37])
并且 return 值始终为真,因为 5 是列表中的第一个数字,也是唯一的数字正在迭代。
关于为什么的任何想法?
你应该反过来看问题。
如果你找到一个不是质数的数字,你应该 return False,在循环结束后你应该 return True。
你的 if/else
块中有一个 return
和一个 break
,你应该摆脱它们。此外 else
中的 return
应该在外面,否则只要他找到 "prime".
def all_primes(xs):
is_prime = None
for i in xs:
if i < 2:
is_prime = False
return is_prime
elif (i % 2 == 0):
is_prime = False
return is_prime
else:
is_prime = True
return is_prime
在这之后,你应该知道,你并不是真的在检查质数。 这不是最有效的方法,但它很清楚如何:
def all_primes(xs):
def checkPrime(n):
if n < 2:
return False
for i in xrange(2, n):
if n%i == 0:
return False
return True
return all(map(checkPrime, xs))
编辑:
没有 map
函数,您只需要使用 for
循环进行迭代:
def all_primes(xs):
def checkPrime(n):
if n < 2:
return False
for i in xrange(2, n):
if n%i == 0:
return False
return True
for n in xs:
if not checkPrime(n):
return False
return True