[英]Project euler problem 4 don't know why code not working
我想出了这个代码,虽然我试图找出原因,但我无法得到答案
First_num = [x for x in range(1000)]
Second_num = 100
def check_palindrome(result):
result = str(result)
if result[0:3] == result[6:2:-1]:
print result
for num in First_num:
while Second_num < 1000:
Third_num = num * Second_num
check_palindrome(Third_num)
Second_num += 1
没有输出
有几点要评论:
1)不要使用大写变量,按照惯例,这些名称是为命名类而保留的,将此名称视为变量会令人困惑。 请注意,即使是 SO 突出显示也以另一种颜色标记它。 使用一些驼峰式或蛇式命名,例如 randomNumber 或 random_number (这些在 Python 中更常见)。
2) 要检查一个值是否是回文,只需检查该字符串是否与其反向相同。
3)我不知道你想实现什么,但你的代码没有多大意义,因为 x 将从0
开始, 0 * second_number
将始终为0
,这是一个回文,这将导致无限环形。 无论如何,这里有固定版本:
first_num = [x for x in range(1000)]
second_num = 100
def check_palindrome(result):
result = str(result)
if result == result[-1]:
print result
for num in first_num:
while second_num < 1000:
third_num = num * second_num
check_palindrome(third_num)
second_num += 1
通过对代码进行一些调整,我设法得到了我需要的答案
first_num = [x for x in range(1000)]
second_num = 100
palindrome_list = []
def check_palindrome(result):
result = str(result)
if result[0:3] == result[6:2:-1]:
palindrome_list.append(result)
def multiply_list_loop(x, y):
for num in x:
z = num * y
check_palindrome(z)
while second_num < 1000:
multiply_list_loop(first_num, second_num)
second_num += 1
print max(palindrome_list)
意识到我的 for 循环没有意义,但我仍然会感谢任何提示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.