使用文件i / o的python中的Palindrome程序

时间:2013-07-21 20:20:18

标签: python python-3.x

我是python的新手,正在开发一些程序来掌握它。 我正在制作一个回文程序,它从文件中获取输入并打印出回文词。这是我到目前为止的代码

def isPalindrome(word):
    if len(word) < 1:
        return True
    else:
        if word[0] == word[-1]:
            return isPalindrome(word[1:-1])
        else:
            return False

def fileInput(filename):
    file = open(filename,'r')
    fileContent = file.readlines()
    if(isPalindrome(fileContent)):
        print(fileContent)
    else:
        print("No palindromes found")
    file.close()

这是文件

moom
mam
madam
dog
cat
bat

我得到没有找到回文的输出。

3 个答案:

答案 0 :(得分:3)

该文件的内容将作为列表读入,因此fileContent将最终为:

fileContent = file.readlines()
fileContent => ["moon\n", "mam\n", "madam\n", "dog\n", "cat\n", "bat\n"]

您可以通过以下方式解决此问题:

def fileInput(filename):
    palindromes = False
    for line in open(filename):
        if isPalindrome(line.strip()):
             palindromes = True
             print(line.strip(), " is a palindrome.")

    return "palindromes found in {}".format(filename) if palindromes else "no palindromes found."

注意:为了返回最终的“palindromes [not] found”语句,添加了palindromes标志

答案 1 :(得分:0)

文件中的单词应该有一个循环。此外,readline也会读取行尾字符。在调用isPalindrome之前,您应该strip

答案 2 :(得分:0)

使用

fileContent = file.readline().strip()

因为readlines()返回带有'\n'字符的字符串列表。

同样readlines()会返回一个列表,其中readline()返回当前行。

也不要使用file作为变量名。

所以您修改了fileInput()

def fileInput(filename):
    f = open(filename,'r')
    line = f.readline().strip()
    while line != '':
        if(isPalindrome(line)):
            print(line)
        else:
            print("No palindromes found")
        line = f.readline().strip()
    file.close()