>

파이썬을 사용하여 정수를 뒤집고 회문인지 확인하십시오. 여기에 반전과 회문에 대한 나의 정의가 있습니다. 올바른 논리가 있습니까?

def reverse(num):
    s=len(num)
    newnum=[None]*length
    for i in num:
        s=s-1
        newnum[s]=i
        return newnum
def palindrome(num):
    a=str(num)
    l=len(z)/2
    if a[:1]==a[-1:][::-1]:
        b=True
    else:
        b=False

def main 를 작성하는 데 문제가 있습니다 .

  • 답변 # 1

    def palindrome(num):
        return str(num) == str(num)[::-1]
    
    

  • 답변 # 2

    정수에는 len ()이 없습니다.

    숫자가 회문인지 테스트하는 것은 숫자가 반대인지 테스트하는 것만 큼 간단합니다 (최대 효율을 원하더라도 중간에 도달 할 때까지 문자열의 양쪽 끝에서 문자를 비교할 수 있습니다).

    p>

    정수의 역수를 찾으려면 어려운 방법으로 할 수 있습니다 (mod %와 integer division //을 사용하여 각 숫자를 찾아 역수를 구성하십시오).

    def reverse(num):
      rev = 0
      while num > 0:
        rev = (10*rev) + num%10
        num //= 10
      return rev
    
    

    또는 쉬운 방법 (숫자를 문자열로 바꾸고 슬라이스 표기법을 사용하여 문자열을 뒤집고 정수로 다시 변환) :

    def reverse(num):
      return int(str(num)[::-1])
    
    

  • 답변 # 3

    이것은 pedrosorio의 답변에 부분적으로 근거한 읽을 수없는 한 줄 재귀 구현입니다.

    def reverse(i):
        return int(i!=0) and ((i%10)*(10**int(math.log(i,10))) + reverse(i//10))
    def is_palindrome(i):
        return i == reverse(i)
    
    

    정수 i ≥ 0 에서 작동합니다 .

    reverse(123) == reverse(1230) == 321 참고 . 0으로 끝나는 0이 아닌 정수는 회문이 될 수 없기 때문에 문제가되지 않습니다.

    또한 정수의 역전은 회문인지 여부를 결정하는 데 필요하지 않을 수도 있습니다. 숫자가 회문이 아닌 것으로 판명 된 경우, 반전은 조기에 중단되도록 구현 될 수있다.

  • 답변 # 4

    긴하지만 읽을 수있는

    def palindrome(x):
        a=""
        x=str(x)
        for i in range(len(x),0,-1):
            a+=x[i-1]
            print a
        if a==x:
            return True
        else:
            return False
    
    

  • 답변 # 5

    def revers(num): 
      rev = 0    
      while(num > 0):    
          rem = num %10    
          rev = (rev *10) + rem    
          num = num //10    
      return num
    
    

관련 자료

  • 이전 java - JSON 배열 및 JSON 객체 생성
  • 다음 c++ - vector >의 요소에 액세스하는 방법