Py学习  »  Python

函数内部的python readline()跳过文件中的第二行

xqljmnz • 5 年前 • 1515 次点击  

我是编程领域的初学者。我正在做一本书上的练习,有些东西我不明白。 我在函数中使用readline()命令,然后在m a in()中启动for循环以查找文件中最大的数字。文件的每一行都有一个数字列表:最大的数字在第二行,但由于某种原因,程序跳过了第二行(其中包含最大的数字)。这是代码:

def reader(filename):
    nums = filename.readline()
    return(nums)

def main():
    filename = open("numbers.txt", 'r')
    largest = reader(filename)
    for line in filename:
        number = reader(filename)
        if number > largest:
            largest = number

    print("The largest number is:", largest)

main()

但当我将readline()放在main()函数中并更改循环中的参数时,一切正常:

def helper(filename):

    nums = filename
    return(nums)

def main():

    filename = open("numbers.txt", 'r')
    largest = helper(filename.readline())
    for line in filename:
        number = helper(line)
        if number > largest:
            largest = number

    print("The largest number is:", largest)

main()

显然有些东西我遗漏了,但我不知道到底是什么。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/40888
 
1515 次点击  
文章 [ 3 ]  |  最新文章 5 年前
Cumar Yusuf
Reply   •   1 楼
Cumar Yusuf    6 年前
def main():
    filename = open("numbers.txt", 'r')
    largest = -1
    for line in filename:
        if int(line) > int(largest):
            largest = line


    print("The largest number is:", largest)

main()
kabanus
Reply   •   2 楼
kabanus    6 年前

你跳过了所有的平均线。首先你读一行:

largest = reader(filename)

然后你又读了一本

for line in filename:

笔记 line 现在包含第二行。最后,3D时间:

nums = filename.readline()

你完全无视第二次阅读,因为你没有利用 线 . 这当然会在下一个循环中继续——读第四行,忽略它,得到第五行等等。

还请注意,您没有删除换行符(读取换行符会留下 \n )或转换为 int ,所以你在比较字符串。

John Gordon
Reply   •   3 楼
John Gordon    6 年前

for line in filename: 读取文件中的每一行。

打电话 readline() 而在这样的循环中,正如您在第一个代码示例中所做的,将导致 for 循环以错过该行,因为它被 RealLoad() 不再可以被 对于 循环。

第二个代码示例没有这个问题,因为您不再调用 小精灵 里面 for line in file: 循环。