Simple I/O problem can't get solved
Peter Otten
__peter__ at web.de
Fri Jun 21 05:15:59 EDT 2013
nickgan.sps at windowslive.com wrote:
> I have recently started to solve my first Python problems but I came
> across to this:
> Write a version of a palindrome recogniser that accepts a file name from
> the user, reads each line, and prints the line to the screen if it is a
> palindrome.(by http://www.ling.gu.se/~lager/python_exercises.html)
>
> I think I coded it correctly but still I get no output. I do not have any
> errors I just do not get any output.
>
> This is the code:
> import is_palindrome
>
> filename = raw_input('Enter a file: ') # A text file
> f = open(filename)
> while True:
> line = f.readline()
The line includes the trailing newline character which breaks the symmetry:
>>> "abba" == "abba"[::-1]
True
>>> "abba\n" == "abba\n"[::-1]
False
Use
word = line.strip()
to remove all leading and trailing whitespace.
> if len(line) == 0:
> break
> elif is_palindrome.is_palindrome(line):
> print line,
> f.close()
Note that python allows you to iterate over the lines of a file with
for line in f:
...
Combining these modifications:
for line in f:
word = line.strip()
if is_palindrome.is_palindrome(word):
print word
More information about the Python-list
mailing list