我正在试着写一段代码,用三位数返回每个质数回文。下面是我的代码:
def digpalprim():
for x in range (100,1000):
if prime(x)=='prime':
if str(x)==str(x)[::1]:
return x我已经定义了素数(X)函数,它工作得很好,这个阶段只决定x是否为素数。总而言之,代码是有效的,只是它只给了我第一个这样的回文。我真的不明白为什么程序不应该考虑100到1000之间的所有数字?请帮帮忙?
发布于 2015-01-01 02:35:49
您的函数在找到第一个这样的回文时立即返回;return退出函数。
将您的发现收集到列表中并返回:
def digpalprim():
palindromes = []
for x in range (100,1000):
if prime(x)=='prime':
if str(x)==str(x)[::1]:
palindromes.append(x)
return palindromes或者,您可以通过用yield statement替换return来使您的函数成为生成器
def digpalprim():
for x in range (100,1000):
if prime(x)=='prime':
if str(x)==str(x)[::1]:
yield x现在你必须遍历这个函数,或者使用list()‘拉出’所有的值:
all_palindromes(digpalprim())或
for palindrome in digpalprim():
print(palindrome)发布于 2015-01-01 02:42:52
您是在第一次遇到函数时返回该函数的。
def digpalprim():
palprimes = []
for x in range (100,1000):
if prime(x)=='prime':
if str(x)==str(x)[::1]:
palprimes.append(x)
return palprimes这将在函数的开头创建一个列表,并将每个有效的回文素数附加到该列表,然后返回整个列表(在完成所有循环之后),而不是只返回遇到的第一个列表。
请记住,如果Python命中return语句,它将立即停止函数执行,并返回该值,而不管您打算执行的任何额外循环或代码。
发布于 2015-01-01 02:35:52
一旦找到第一个结果,函数就会返回并结束。
您可能希望将结果添加到列表中,然后打印出列表。
https://stackoverflow.com/questions/27724987
复制相似问题