函数调用不起作用python

时间:2016-04-16 17:00:03

标签: python

我试图在python中打印文件中的回文单词(每行都是一个单词)。 多数民众赞成我到目前为止: 我必须在Unix中工作,所以我在文件palindrome.py中编写了我的脚本,如下所示:

#!/usr/bin/python

def isPalindrome(a):
    if a == a[::-1]:
        print a

with open ('fileName') as f:
   for line in f:
       isPalindrome(line)

当我运行文件时,它甚至不会打印任何内容 - 尽管我的文件中有回文词。我认为问题与我的函数调用有关,因为如果我isPalindrome(line)而不是isPalindrome('aha'),它将打印aha。我尝试在for循环后打印每一行,但也可以。它会打印文件的所有行。所以line确实得到了不同的值,所以我猜可能会有一些与调用有关的内容,但我没有找到答案。

2 个答案:

答案 0 :(得分:6)

您需要从行尾删除换行符。尝试拨打isPalindrome(line.strip())

答案 1 :(得分:1)

注意:file.readlines() 不会包装结束字符!!

所以,如果在你的文件中,你在一行中有aha,那么该行将是aha\n(使用新行char ...)...

我建议使用replace()字符串方法。

您的代码:

#!/usr/bin/python

def isPalindrome(a):
    if a == a[::-1]:
        print a

with open ('fileName') as f:
   for line in f:
       isPalindrome(line.replace('\n', '').replace("\r", "")) # replace carriage return / line feed chars