2016-10-09 2 views
0
n = str(input('Enter the string:')) 
def palindrome(n): 
    index = 0 
    check = True 
    while index<int(len(n)/2): 
     if n[index]==n[-1-index]: 
      index+=1 
      return True 
      break 
     return False 
if palindrome(n)==True: 
    print('palindrome') 
else: 
    print('not palindrome') 

이 palindrome 프로그램에 대한 정답을 얻지 못하고 있습니다.while 루프를 사용하여 palindrome 프로그램의 결과를 반환

+0

어떤 버전의 파이썬입니까? 2 또는 3? – roganjosh

+2

왜'print ("palindrome"이 n == n [:: - 1] else "palindrome"이 아닌)'할 수 있다면 그 함수를 사용하는 것입니까? – ForceBru

+0

@roganjosh : python 3.4 –

답변

0

고전 솔루션 :

def palindrome(n): 
    start = 0 
    end = len(n) - 1 
    while (start < end): 
     if (n[start] != n[end]): 
      return False 
     start = start + 1 
     end = end - 1 
    return True 
+0

버그 수정! 방금 업데이트되었습니다. – selbie

+0

그래서 어디서 fuction palindrome()을 호출합니까 –

+0

그것이 작동합니다 !! 많이 감사합니다. :-) –

1

사용에 raw_input은 :

n = str(raw_input('Enter the string:')) 
+0

이미 파이썬 3이라는 것을 분명히했습니다.'raw_input'은 없어졌습니다. – roganjosh

+0

raw_input 작동하지 않음 –

+0

이 프로그램은 2.7.10을 사용하는 Canopy와 같은 방식으로 작동합니다. –

1
def palindrome(my_string): 
    reverse_string = my_string[::-1] 
    if list(my_string)==list(reverse_string): 
     return True 
    else: 
     return False 
my_string = input("ENTER THE STRING ") 
if(palindrome(my_string)): 
    print("Palindrome") 
else: 
    print("Not Palindrome") 
+0

사실 난 역순() 함수를 사용하지 않고 파이썬 프로그램이 필요합니다. –

+0

use reverse_string = my_string [:: - 1] – DevOpsGuY

0
while index < int(len(n)/2): 
    if n[index] != n[len(n) - index - 1]: 
     return False 
    index+=1 
return True 
+0

안녕하세요, Athira. 최선의 답변이라면 올바른지 확인하십시오. 감사. 데프 회문 (n)을 : 정말 죄송 –

+0

스피가() 문자열을 입력 '(입력) : :-(.. 그 정답을 반환하지 않는 것이 –

+0

N = str을 말을 인덱스 = 0 확인 = 진정한 동안 인덱스

0

귀하의 확인이 끊어집니다. return True 봐 :

def palindrome(n): 
    index = 0 
    check = True 
    while index<int(len(n)/2): 
     if n[index]==n[-1-index]: 
      index+=1 # only increment on match !!! 
      return True # return True on *first* match !!! 
      break # unnecessary, return exits the loop 
     return False # never reached, but would only trigger if there are no matches 

기본적으로, 당신은 당신의 문자열을 통과하고 처음 경기에 당신은 진정한보고한다. 첫 글자와 마지막 글자가 같으면 True이 반환됩니다. 문자 쌍이 일치하는 경우에만 False을 반환합니다. 이는 확인하고 싶은 것과는 정반대입니다. 대신 다음과 같아야합니다 :

def palindrome(n): 
    index = 0 
    check = True 
    while index < len(n)/2: 
     if n[index] != n[-1-index]: 
      return False # one didn't match, cannot be a palindrome 
     index+=1 
    return True # all did match, is a palindrome 
+0

이 코드를 시도하는 동안 동일한 오류가 발생했습니다 –

+0

@athirababu 해결되었습니다. 들여 쓰기가 잘못되었습니다. – MisterMiyagi

관련 문제