2016-10-09 7 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') 

私はこのパリindロムプログラムに対して正解を得ていません。whileループを使用しているパリンドロームプログラムの結果を返します

+0

どのバージョンのPythonですか? 2または3? – roganjosh

+2

'print(" n == n [:: - 1] else "palindrome"なら '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

既にPython 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

実際には私は逆の()関数を使用せずにPythonプログラムが必要です。 –

+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です。それが最善の答えならば、それが正しいと確認してください。ありがとう。 –

+0

iamは正解を返さないと本当に申し訳ありません。:-( –

+0

n = str(入力( '文字列を入力')) def palindrome(n): index = 0 check = True whileインデックス<整数(LEN(N)/ 2): N [インデックス] = nであれば[LEN(n)は - 1]:!回文場合 真偽 指数+ = 1 リターン(n)を返す == True: print( 'palindrome') else: print( 'palindrome') –

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

関連する問題