首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 'for‘函数

Python 'for‘函数
EN

Stack Overflow用户
提问于 2015-01-01 02:33:38
回答 5查看 109关注 0票数 0

我正在试着写一段代码,用三位数返回每个质数回文。下面是我的代码:

代码语言:javascript
复制
def digpalprim():
    for x in range (100,1000):
        if prime(x)=='prime':
            if str(x)==str(x)[::1]:
                return x

我已经定义了素数(X)函数,它工作得很好,这个阶段只决定x是否为素数。总而言之,代码是有效的,只是它只给了我第一个这样的回文。我真的不明白为什么程序不应该考虑100到1000之间的所有数字?请帮帮忙?

EN

回答 5

Stack Overflow用户

发布于 2015-01-01 02:35:49

您的函数在找到第一个这样的回文时立即返回;return退出函数。

将您的发现收集到列表中并返回:

代码语言:javascript
复制
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来使您的函数成为生成器

代码语言:javascript
复制
def digpalprim():
    for x in range (100,1000):
        if prime(x)=='prime':
            if str(x)==str(x)[::1]:
                yield x

现在你必须遍历这个函数,或者使用list()‘拉出’所有的值:

代码语言:javascript
复制
all_palindromes(digpalprim())

代码语言:javascript
复制
for palindrome in digpalprim():
    print(palindrome)
票数 8
EN

Stack Overflow用户

发布于 2015-01-01 02:42:52

您是在第一次遇到函数时返回该函数的。

代码语言:javascript
复制
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语句,它将立即停止函数执行,并返回该值,而不管您打算执行的任何额外循环或代码。

票数 2
EN

Stack Overflow用户

发布于 2015-01-01 02:35:52

一旦找到第一个结果,函数就会返回并结束。

您可能希望将结果添加到列表中,然后打印出列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27724987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档