2015-12-08 98 views
0

所以我最近開始嘗試解決項目問題,並試圖解決問題4.我寫的代碼應該工作,但某個while循環拒絕運行。這裏是代碼:項目歐拉4 while循環問題

def project_euler_problem_4(): 
    x = 998001 
    y = 999 
    while x > 10000: 
     if x == int(str(x)[::-1]): 
      while y > 100: 
       if x % y == 0: 
        print x 
        print y 
        print x/y 
        break 
       y = y -1 
     x = x -1 

當我試圖在if語句後調用while循環時出現問題。我的計算機科學老師也不知道是什麼原因造成了問題。如果你能幫上忙,那會很棒。謝謝!

+1

您不會將外部循環中的y重置爲999。而且,這是解決問題的一種奇怪的方式;更直接的方法是乘以100 * 100,101 * 101,...,999 * 999並查看其中哪些是迴文。 – senshin

+0

將你的'y = 999'移動到你的''while x> 10000的內部:' –

+0

你會經過'while'循環,'while'循環中的'print'foo「'語句會證明它。也許你應該改變老師:) – Julien

回答

1

在最裏面的循環中,y將變爲99.它不會再次重新初始化爲999。所以它只會運行一次。

將其更改爲y設置回999以進行下一個測試。

def project_euler_problem_4(): 
x = 998001 
while x > 10000: 
    if x == int(str(x)[::-1]): 
     y = 999 
     while y > 100: 
      if x % y == 0: 
       print x 
       print y 
       print x/y 
       break 
      y = y -1 
    x = x -1 
+0

我想我回到之前關於不想答案的陳述,但是如何在遍歷每個數字後將其重置爲999。 – Devouringbowl

+0

@Devouringbowl - 我沒有複製和粘貼你的代碼,而是改變了它。看看我是如何將'y = 999'移到代碼中的不同位置的。 –

+0

主啊,我很愚蠢。 – Devouringbowl