while 循环的函数输出结果给出了错误的值

The function output result from the while loop is giving the wrong value

我正在尝试读取文件。收集数据后,一次一行,我想在进一步操作之前显示结果。我使用的功能如下:

def reading(repository):
file = open("pmacollection.txt", 'r')
while (True):
    line = file.readline()
    if (len(line) == 0):
        break
   # print(line, end = "")
    elif (line.isdigit()):
        print("Line '" + line + "' is a number")
    elif (line == line[::-1]):
        print("Line '" + line + "' is a palindrome.")
    elif (line != line[::-1]):
        print("Line '" + line + "' is not")
file.close()
return None

我试了很多东西,但我想不通,为什么无论我输入什么,我总是得到“不是回文”。我测试了 if-elif-else 结构,由于某种原因它不能工作,但它应该工作。我错过了什么吗?此外,+line+ 之后的部分打印在下一行,我认为放置 end="" 会修复它,但它没有。如果有任何建议,我将不胜感激。

编辑:正如许多人建议的那样,我使用 split 删除了 readfile() 生成的 \n。正如virxen,Matiiss 和Johnny Mopp 建议的那样。它还解决了主要问题。我什至没有意识到它们已经连接,但显然程序正在一遍又一遍地读取同一行(line != line[::-1]),正是因为 readfile() 中的 space。

我最好的猜测是介于数组索引或中断缺失之间。如果你总是得到相同的结果,它很可能指向一个无效的数组索引器,或者只是数组索引(行号)没有改变。

不太熟悉 python,但从 C++ 的角度来看,您的代码确实看起来总是在读取同一行。

您可以使用 for 循环并使用 .readlines() 其中 returns 所有行的列表。此外,它使用 "\n" 来声明从那里开始的新行。所以,你只需要使用 .strip("\n")

剥离它

z.txt

999888999
122342342
97823
9009
10233201

更多 pythonic 方式是使用 with 语句。

with open("z.txt","r") as f:
    f1=f.readlines()
    for line in f1:
        if line.strip("\n")[::-1]==line.strip("\n"):
            print(line.strip("\n")," is a palindrome.")
        else:
            print(line.strip("\n")," is not a palindrome.")