为什么 Code/Logic 对于不同的范围有不同的作用?
Why the Code/Logic is working differently for different ranges?
我写了欧拉计划第4题的代码--
它适用于范围 (10,100)--
案例1--
for i in range(10,100):
for j in range(10,100):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
c = b
p1 = i
p2 = j
print(f"{c} is palindrome ")
但对于范围 (100,1000)
案例2---
for i in range(100,1000):
for j in range(100,1000):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
c = b
p1 = i
p2 = j
print(f"{c} is palindrome ")
输出错误
为什么??
为什么代码的工作方式不同?
对于 case1,它给出了正确的输出。但是随着范围的变化,它提供了错误的输出。
按照您的逻辑,如果发现任何回文,它会自动分配给 c
,而不检查它是否大于 c
。
例如,当 i=993
和 j =913
时,则 c= 906609
,但当 i =995
和 j = 583
时,此值将替换为 580085。所以你得不到预期的输出。
首先,试试,我在下面提供了示例代码。没看懂才看
c=0
for i in range(100,1000):
for j in range(100,1000):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
if a>c:
c=a
p1 = i
p2 = j
print(f"{c} is palindrome ")
我写了欧拉计划第4题的代码-- 它适用于范围 (10,100)-- 案例1--
for i in range(10,100):
for j in range(10,100):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
c = b
p1 = i
p2 = j
print(f"{c} is palindrome ")
但对于范围 (100,1000) 案例2---
for i in range(100,1000):
for j in range(100,1000):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
c = b
p1 = i
p2 = j
print(f"{c} is palindrome ")
输出错误 为什么?? 为什么代码的工作方式不同? 对于 case1,它给出了正确的输出。但是随着范围的变化,它提供了错误的输出。
按照您的逻辑,如果发现任何回文,它会自动分配给 c
,而不检查它是否大于 c
。
例如,当 i=993
和 j =913
时,则 c= 906609
,但当 i =995
和 j = 583
时,此值将替换为 580085。所以你得不到预期的输出。
首先,试试,我在下面提供了示例代码。没看懂才看
c=0
for i in range(100,1000):
for j in range(100,1000):
a = i*j
b = str(a)
d = str(a)[::-1]
if b == d:
if a>c:
c=a
p1 = i
p2 = j
print(f"{c} is palindrome ")