翌翼 发表于 2020-9-1 23:36:57

第029讲 | 第3题

本帖最后由 翌翼 于 2020-9-1 23:39 编辑

F_name = input('请输入需要打开的文件(带路径):')
F_line = input('请输入需要显示的行数(格式如XX:XX或:XX或XX:):')
F = open(F_name)

(begin,end) = F_line.split(':')

if begin == '':
    begin = 1
if end == '':
    end = -1

if begin == 1 and end == -1:
    prompt = '的全文'
elif begin == 1:
    prompt = '从开始到第%s行的' % end
elif end == -1:
    prompt = '从第%s行到末尾的' % begin
else:
    prompt = '从第%s行到%s行的' % (begin,end)

begin = int(begin) - 1
end = int(end)
lines = end - begin

for i in range(begin):
    F.readline()

print('该文件%s内容如下:' % prompt)

if lines < 0: # 为什么此处输入行数“3:”还是能够正确打印呢?我的理解应该是打印全文才对(lines=-1-2=-3<0)
    print(F.read())
else:
    for j in range(lines):
      print(F.readline)

F.close()


对lines < 0处的代码不是很能理解,请各路大神不吝赐教。

昨非 发表于 2020-9-2 08:16:50

在执行到第25,26行的时候,文件指针已经移到了begin的位置,只不过没有print出来

昨非 发表于 2020-9-2 08:18:54

也即:无论end在哪儿,打印永远从being开始

Twilight6 发表于 2020-9-2 08:27:33


看下这里,全部注释了哈

Python FAQ 052 第 029 讲相关问题
https://fishc.com.cn/thread-177353-1-1.html
(出处: 鱼C论坛)

昨非 发表于 2020-9-2 08:38:38

Twilight6 发表于 2020-9-2 08:27
看下这里,全部注释了哈

Python FAQ 052 第 029 讲相关问题


大哥,给新人一条活路吧{:10_266:}

Twilight6 发表于 2020-9-2 08:44:48

昨非 发表于 2020-9-2 08:38
大哥,给新人一条活路吧

呃,我最近都没怎么答了

昨非 发表于 2020-9-2 08:47:28

Twilight6 发表于 2020-9-2 08:44
呃,我最近都没怎么答了

{:10_266:}{:10_266:}我问一下哈,像这种前人整理的帖子链接,你是直接收藏了,还是记住的啊

Twilight6 发表于 2020-9-2 09:03:17

昨非 发表于 2020-9-2 08:47
我问一下哈,像这种前人整理的帖子链接,你是直接收藏了,还是记住的啊

这个帖子里面就是我回答的{:10_257:},最后有个 FROM

昨非 发表于 2020-9-2 09:05:15

我看到了,但是那位版主好像有一系列的课后题解析,(应该是个淘专辑)这个感觉可以直接收藏拿来用

翌翼 发表于 2020-9-2 12:45:06

昨非 发表于 2020-9-2 08:16
在执行到第25,26行的时候,文件指针已经移到了begin的位置,只不过没有print出来

感谢大佬

翌翼 发表于 2020-9-2 12:45:57

Twilight6 发表于 2020-9-2 09:03
这个帖子里面就是我回答的,最后有个 FROM

感谢大佬,帖子很详细{:5_109:}
页: [1]
查看完整版本: 第029讲 | 第3题