2016-03-24 11 views
0

Bir problemle karşılaştığımda Project Euler'da Problem 4'ü deniyordum. İşte benim kodum.Python'da iki üç basamaklı sayıdan en büyük palindrom nasıl bulunur?

def Problem4(): 
    x = 100 
    y = 909 
    a = [] 
    b = [] 
    x1 = [] 
    y1 = [] 
    while y < 1000: 
     while x < 1000: 
      z = x*y 
      if str(z) == str(z)[::-1]: 
       a.append(z) 
       x1.append(x) 
       y1.append(y) 
      else: 
       b.append(z) 
      x = x + 1 
     y = y + 1  
    print(a) 
    print(x1) 
    print(y1) 
Problem4() 

Bu kod tamam çalışır, ancak y değeri bile y = y + 1 sonra sabit kalır. Neden bunu yapıyor? Bunu yapmanın daha iyi bir yolu var mı. Çözeltiyi aldım

+3

Eğer while döngüsünün çıkmayacağını sabit kalmıştır edin. – Selcuk

+0

(1) Sence sabit kalmasını sağlayan şey nedir? (2) Neyi yapmanın daha iyi bir yolu? – ekhumoro

+0

@ekhuomo. Biliyorsun, şey. –

cevap

1

hareket ilk arasındaki pozisyona x = 100 çizgi ise döngü ve döngü sorununuzu çözecek iken ikinci. "Daha iyi", kullanmak isteyebilirsiniz xrange() gelince

def Problem4(): 
    y = 909 
    a = [] 
    b = [] 
    x1 = [] 
    y1 = [] 
    while y < 1000: 
     x = 100 
     while x < 1000: 
      z = x*y 
      if str(z) == str(z)[::-1]: 
       a.append(z) 
       x1.append(x) 
       y1.append(y) 
      else: 
       b.append(z) 
      x = x + 1 
     y = y + 1  
    print(a) 
    print(x1) 
    print(y1) 
Problem4() 
1

. y'un artmamasının nedeni, x değerinin 1000'dan sıfırlanamamasıdır. Sadece bu kod yığınını otomatik olarak atladı çünkü x değeri zaten 1000 idi. Bu, sırayla diziyi sıralayan geliştirilmiş kodum.

def Problem4(): 

    y = 100 
    a = [] 
    x1 = [] 
    y1 = [] 
    while y < 1000: 
     y = y + 1 
     x = 100 
     while x < 1000: 
      z = x*y 
      if str(z) == str(z)[::-1]: 
       a.append(z) 
      x = x + 1 

    a.sort() 
    print(a) 
Problem4() 
1

:

a = [] 
for y in xrange(909, 1000): 
    for x in xrange(100, 1000): 
    x = x * y 
    if str(z) = str(z)[::-1]: 
     a.append(z) 
a.sort() 
print a 
İlgili konular