checkily 发表于 2018-2-6 09:57:43

第29课第三题,小甲鱼的答案看得有点晕。我自己写的如下,求优化

题目要求是打开一个文件,然后输入要显示的行数,根据不同的输入,显示不同的内容

def view_file(file_name,lines):
    f=open(file_name)
    lenght=len(list(f))#读取文件的行数
    f.seek(0,0)       #文件指针归0
    (front,end)=lines.split(":",1) #提取冒号前、后两个数值

    if front=="" and end!="":
      print("文件%s从开始到%d行的内容如下:" % (file_name,int(end)))
      for each in range(int(end)):
            print(f.readline(),end="")

    elif front!="" and end=="":
      print("文件%s从%d行到末尾的内容如下:" % (file_name,int(front)))
      for each in range(int(front)-1):
            f.readline()    #消耗前fornt-1行的内容
      for each in range(lenght-int(front)+1):
            print(f.readline(),end="")

    elif front=="" and end=="":
      print("文件%s的全文内容如下:" % file_name)
      for each in range(lenght):
            print(f.readline(),end="")

    else:
      print("文件%s从%d行到%d行的内容如下:" % (file_name,int(front),int(end)))
      for each in range(int(front)-1):
            f.readline()#消耗前fornt-1行的内容
      for each in range(int(end)-int(front)+1):
            print(f.readline(),end="")
   
    f.close()

file_name=input("请输入要打开的文件名:")
lines=input("请输入要显示的行数(格式如:3或2:8或3:或:):")
view_file(file_name,lines)

BngThea 发表于 2018-2-6 10:05:16

只要能实现即可,优化工作需要太多时间
训练的关键在于对知识的掌握,优化工作建议自己进行,因为内容并不少

四君子 发表于 2018-2-6 10:37:23

答案不是唯一的,重要的是自己能独立完成,代码优化可以慢慢来。
我的做法也不一样,我是把文章全部内容放在一个列表中,然后根据条件(和你的一样),再截取列表的对应内容打印出来
页: [1]
查看完整版本: 第29课第三题,小甲鱼的答案看得有点晕。我自己写的如下,求优化