繁体   English   中英

项目 euler 问题 4 不知道为什么代码不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM