Reverse order of phrase Error - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Reverse order of phrase Error (/thread-20767.html) |
Reverse order of phrase Error - ilondire05 - Aug-29-2019 phrase = input("Enter a phrase") rev_phrase = reversed(phrase) i = len(phrase) while i >= 0: if phrase[i] != rev_phrase[i] print(phrase + " is not a palindrome") exit() i -= 1 print(phrase + "is a palindrome")Trying to reverse the order of a phrase, then check if it spells out the same thing before reversing. However, I am getting an error in line 5 where I am reversing the phrase. My Error Message: C:\Users\Mikhail\PycharmProjects\FirstUse\venv\Scripts\python.exe "C:/Users/Mikhail/PycharmProjects/FirstUse/venv/Exersise Six.py" File "C:/Users/Mikhail/PycharmProjects/FirstUse/venv/Exersise Six.py", line 5 if phrase[i] != rev_phrase[i] ^ SyntaxError: invalid syntax Process finished with exit code 1 RE: Reverse order of phrase Error - perfringo - Aug-29-2019 You need to have : at the end of line #5. EDIT: You should keep in mind that 'Anna' is considered palindrome as well as 'Step on no pets', 'Was it a car or a cat I saw?' RE: Reverse order of phrase Error - ilondire05 - Aug-29-2019 phrase = input("Enter a phrase") rev_phrase = reversed(phrase) i = len(phrase) while i >= 0: if phrase[i] != rev_phrase[i]: print(phrase + " is not a palindrome") exit() i -= 1 print(phrase + "is a palindrome")Now I am getting this error in #line 5: C:\Users\Mikhail\PycharmProjects\FirstUse\venv\Scripts\python.exe "C:/Users/Mikhail/PycharmProjects/FirstUse/venv/Exersise Six.py" Enter a phrasepop Traceback (most recent call last): File "C:/Users/Mikhail/PycharmProjects/FirstUse/venv/Exersise Six.py", line 5, in <module> if phrase[i] != rev_phrase[i]: IndexError: string index out of range Process finished with exit code 1 RE: Reverse order of phrase Error - perfringo - Aug-29-2019 Python uses zero based indexing therefore: >>> a = 'abc' >>> len(a) 3 >>> a[3] /../ IndexError: string index out of range >>> [a.index(char) for char in a] [0, 1, 2] RE: Reverse order of phrase Error - buran - Aug-29-2019 in python indexes are zero-based, thus max index in len(phrase)-1 now, unless you are required (e.g. homework) to use while loop and indexes, there are better , more pythonic ways to complete the task using slices if phrase == phrase[::-1] print("it's palindrome") else: print("not palindrome")or even as oneliner print("it's palindrome" if phrase == phrase[::-1] else "not palindrome")if you want to compare char by char for c1, c2 in zip(phrase, phrase[::-1]): if c1 != c2: print("not palindrome") break else: print('palindrome') if all(c1 == c2 for c1, c2 in zip(phrase, phrase[::-1])): print("palindrome") else: print('not palindrome') |