Python'for'功能

L.R*_*.R. 0 python for-loop

我正在尝试编写一个返回每个主要回文三位数的代码.这是我的代码:

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

我已经定义了prime(x)函数,它运行良好,该阶段只是确定x是否为素数.总而言之,所有代码都有效,除了它只给我第一个这样的回文.我真的不明白为什么,程序不应该考虑100到1000之间的所有数字吗?请帮忙?

Mar*_*ers 8

一旦找到第一个这样的回文,你的函数就会返回; 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
Run Code Online (Sandbox Code Playgroud)

或者你可以让你的函数发生器通过更换returnyield的语句:

def digpalprim():
    for x in range (100,1000):
        if prime(x)=='prime':
            if str(x)==str(x)[::1]:
                yield x
Run Code Online (Sandbox Code Playgroud)

现在你必须迭代这个函数或者list()用来"拉"所有的值:

all_palindromes(digpalprim())
Run Code Online (Sandbox Code Playgroud)

要么

for palindrome in digpalprim():
    print(palindrome)
Run Code Online (Sandbox Code Playgroud)