2016-06-10 8 views
-4

나는 초심자 일뿐 아니라 여러 가지 일을 잘못했을 수도 있습니다. 하지만 누군가 나를 도울까요? 목표는 두 자리 3 자리 숫자의 곱으로 만들어진 최대 회중 전선을 인쇄하는 것입니다. 감사.프로젝트 오일러 : 가장 큰 회문 (파이썬). 나는 무엇을 잘못 했는가?

palindromes = [] 
for i in range(100, 1000): 
    for x in range(100, 1000): 
     a = x*i 
     str(a) 
     b = a[::-1] 
     if a == b : 
      palindromes.append(a) 

print (palindromes[len(palindromes) - 1]) 
+1

범위 (100, 1000) '및'X 후 결장 누락이 정의되지 않는다. 어떤 프로젝트 오일러입니까? (숫자) 정확히 무엇입니까? – Keatinge

+0

@Keatinge 나는 실제 코드에서 그런 것들을했다. 방금 그들을 여기에서 잊었다. 이것은 아카이브의 네 번째 문제점입니다. – dsi411

+0

StackOverflow에 오신 것을 환영합니다. 도움말 설명서의 게시 지침을 읽고 따르십시오. [최소한의 완전하고 검증 가능한 예제] (http://stackoverflow.com/help/mcve)가 여기에 적용됩니다. 코드를 게시하고 정확하게 문제를 설명하기 전까지는 효과적으로 귀하를 도울 수 없습니다. 이 코드는 여전히 실행되지 않습니다. 오류 메시지를 제공하지 못했습니다. – Prune

답변

0

기본 점 : 당신은 문자열로 숫자를 변환 할 때

  • , 당신은 결과를 저장해야합니다.
  • 완료하면 목록을 정렬하십시오.
  • 를 사용하여 오른쪽 끝 색인을 사용하면 회문를 발견하면, 마지막 요소
  • 를 얻을 정수 형태를 유지, 그래서 정렬이 제대로 작동합니다. 그렇지 않으면 '99999'가 가장 큰 회상암으로 간주됩니다.

는 코드 :

palindromes = [] 
for i in range(100, 1000): 
    for x in range(100, 1000): 
     a = str(x*i) 
     b = a[::-1] 
     if a == b : 
      palindromes.append(int(a)) 

print (sorted(palindromes)[-1]) 
+0

대단히 감사합니다! 이것은 효과가있다! – dsi411

+0

좋아요! 유용한 답변을 높이 평가하고 즐겨 찾기를 수락하는 것을 잊지 마십시오. 이렇게하면 SO가 질문을 적절히 보관할 수 있습니다. – Prune

2

정의하기 전에 코드에 x을 사용하면 해당 코드에 오류가 발생합니다. 다른 오류도 있습니다 : 추적을 사용하여 쉽게 찾을 수 있어야합니다. 하나의 논리 오류는 a 문자열을 찾을 수 있지만 어디에도 저장하지 않으므로 손실됩니다. 또한 a으로 정수로 시작한 다음 문자열로 만드십시오. 유형을 변경해야하는 중요한 이유가 없다면 유형을 별도로 유지하십시오. 더 나은 변수 이름을 사용해야합니다 : a,b,i,x은 형편없는 이름입니다. 그들이 의미하는 것을 적어 라! 더 많은 문자를 입력하는 것은 저렴하며 오류를 방지합니다.

각 회문은 세 자리 숫자의 곱해야합니다, 그래서 당신은 range(100, 1000)을 통해 중첩 루프가 필요합니다. x을 다른 루프 변수로 사용하면 코드를 많이 변경할 필요가 없습니다.

+0

오오 그렇습니다. 저는 x를 위해 또 하나의 for 루프를 가지고 있었지만 그것을 놓는 것을 잊었습니다. 나는 그것을 추가 할 것이다. 고맙습니다. 나는 그것을 뒤집을 수 있도록 문자열을 a로 변경했습니다. – dsi411

0

인쇄하기 전에 줄을 추가

palindrome.sort() 
관련 문제