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

我沒有得到這個迴文計劃的正確答案。使用while循環返回迴文結果

+0

什麼版本的Python? 2或3? – roganjosh

+2

爲什麼即使使用該函數,如果你可以做'print(「palindrome」if n == n [:: - 1] else「not 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

所以我在哪裏叫功能迴文() –

+0

它的作品!謝謝你soo .. :-) –

1

的raw_input用途:

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

已經說明它是Python 3.'raw_input'已經不存在了。 – roganjosh

+0

raw_input不會工作 –

+0

該程序以Canopy使用2.7.10的方式工作。 –

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程序而不使用reverse()函數。 –

+0

使用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

)指數

+0

我已更新答案,Athira。 –

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