我正在尝试编写一个返回每个主要回文三位数的代码.这是我的代码:
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之间的所有数字吗?请帮忙?
一旦找到第一个这样的回文,你的函数就会返回; 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)
或者你可以让你的函数发生器通过更换return用yield的语句:
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)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |