Python“for”函数

2024-04-26 03:06:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个代码,返回每一个素数回文三位数。这是我的密码:

def digpalprim():
    for x in range (100,1000):
        if prime(x)=='prime':
            if str(x)==str(x)[::1]:
                return x

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


Tags: 函数代码in密码forreturnif定义
3条回答

函数返回并在找到第一个结果后立即结束。你知道吗

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

当您第一次遇到函数时,您将返回该函数。你知道吗

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语句,它将立即停止函数执行并返回该值,而不考虑您可能要执行的任何其他循环或代码。你知道吗

函数一找到第一个这样的回文就返回;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

或者,您可以通过将return替换为^{} statement,使函数成为生成器

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)

相关问题 更多 >