我刚开始学python。我试图检查整数x是否是回文的,然后将它除以一个介于范围(从最大的y开始,即999)y=999998,…,100之间的数字。如果x/y=z,z也是一个3位整数,则结束。否则从x中减去1,并执行相同的步骤。你知道吗
def EuQ4():
x=998001
p=999
while 10000 < x:
x=x-1
if str(x)== str(x)[::-1]:
while p>100:
if x%p==0:
Pal=x/p
if Pal < 999:
print (Pal,p)
break
else:
x=x-1
else:
p=p-1
else:
x=x-1
EuQ4()
这是Euler项目的第4个问题,即找出由两个3位数的乘积构成的最大回文。你知道吗
将
p=999
放在while p > 100
之前或使用for p in range(999, 100, -1)
。你知道吗我觉得你打电话
x=x-1
太多次了。你知道吗很抱歉,读你的问题伤了我的头。如果您试图在尝试这些问题的同时学习Python,那么我将提出这个替代答案—它不会回答您的问题,但它确实会带来解决方案,而且我认为它更像Python。这个问题要求找出由两个3位数的乘积构成的最大回文。所以输入应该是3位数。此代码将允许您指定位数max和min(作为整数)。你知道吗
我并不是建议这是Euler问题提出的最佳解决方案,而是让您了解Python的一系列特性的解决方案。你知道吗
这里有一些逻辑错误。有些原因导致循环永远不会结束。例如,当
x % p == 0
但Pal
较大999
时会发生什么?你会得到一个无限循环。你知道吗我做了一些修改,但它仍然需要一些工作。你知道吗
编辑:
我通过在IDE中使用调试器发现了这些错误。通过逐行检查代码几次,您可以轻松地完成相同的操作。你知道吗
相关问题 更多 >
编程相关推荐