回文(欧拉计划)
Palindrome (euler project)
我正在尝试用 Python 解决这个问题:
"找出两个 3 位数乘积的最大回文数。" 这是我的代码:
list_number = reversed(range(10000, 998002))
def check_number(x):
for element in reversed(range(100, 1000)):
while True:
if x >= 100:
if element * x == i:
print(i)
break
else:
x -= 1
continue
else:
break
for i in list_number:
if str(i) == str(i)[::-1]:
check_number(999)
else:
continue
该代码适用于 2 位数字,但不适用于 3 位数字。
有人能告诉我哪里不对吗?
你的代码写得非常糟糕,但真正的问题是在语句 x -= 1
中: x
的值在内部循环的每次迭代和 first 内循环,x
为 99。这使得条件 if x >= 100
对于外循环的所有后续迭代都为假。
在 for element in reversed(range(100, 1000))
之后立即添加 x=999
。或者,更好的是,学习一些好的编程并完全重写程序。
我正在尝试用 Python 解决这个问题:
"找出两个 3 位数乘积的最大回文数。" 这是我的代码:
list_number = reversed(range(10000, 998002))
def check_number(x):
for element in reversed(range(100, 1000)):
while True:
if x >= 100:
if element * x == i:
print(i)
break
else:
x -= 1
continue
else:
break
for i in list_number:
if str(i) == str(i)[::-1]:
check_number(999)
else:
continue
该代码适用于 2 位数字,但不适用于 3 位数字。 有人能告诉我哪里不对吗?
你的代码写得非常糟糕,但真正的问题是在语句 x -= 1
中: x
的值在内部循环的每次迭代和 first 内循环,x
为 99。这使得条件 if x >= 100
对于外循环的所有后续迭代都为假。
在 for element in reversed(range(100, 1000))
之后立即添加 x=999
。或者,更好的是,学习一些好的编程并完全重写程序。