python-3.x 未获取readline代码的预期o/p

omvjsjqw  于 2023-05-02  发布在  Python
关注(0)|答案(1)|浏览(87)

有人能帮我一下为什么下面的代码没有给出预期的结果吗?

f=open('Python_practice/Sample1.txt','r')
while f.readline() != '':
    print(f.readline(),end = '')
f.close()

这里-我得到低于o/p(第一和第三行是不是来):
你好吗?
那你呢?
当我在代码下面运行时,我得到了预期的o/p。

f=open('Python_practice/Sample1.txt','r')
while True:
    data = f.readline()
    if data == '':
        break
    else:
        print(data,end = '')
f.close()

你好啊!
你好吗?
我很好,谢谢。
那你呢?

f=open('Python_practice/Sample1.txt','r')
while f.readline() != '':
    print(f.readline(),end = '')
f.close()

我期待:
你好啊!
你好吗?
我很好,谢谢。
那你呢?
我在O/P以下(第一和第三行没有来):
你好吗?
那你呢?

gdrx4gfi

gdrx4gfi1#

就像@Abion47说的,它跳过每隔一行的原因是因为你在同一次迭代中运行了两次f.readline()。换句话说,你是说检查当前行是否为空,如果为真,则读取下一行并打印它。下面我将跟踪该循环正在做什么。

----iteration 1----

if "Hello!" is empty
print "How are you ?"

----iteration 2----

if "I am fine thanks" is empty
print "What about you ?"

---iteration 3----

if "" is empty
end

另外,像这样阅读文本文件似乎不是最好的方法。考虑使用

with open('filename.txt') as fp:
    for line in fp:
        print(line)

Source

相关问题