鱼C论坛

 找回密码
 立即注册
查看: 3909|回复: 2

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

[复制链接]
发表于 2018-2-6 09:57:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

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

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

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

  28. file_name=input("请输入要打开的文件名:")
  29. lines=input("请输入要显示的行数(格式如:3或2:8或3:或:):")
  30. view_file(file_name,lines)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-2-6 10:05:16 | 显示全部楼层
只要能实现即可,优化工作需要太多时间
训练的关键在于对知识的掌握,优化工作建议自己进行,因为内容并不少
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-6 10:37:23 | 显示全部楼层
答案不是唯一的,重要的是自己能独立完成,代码优化可以慢慢来。
我的做法也不一样,我是把文章全部内容放在一个列表中,然后根据条件(和你的一样),再截取列表的对应内容打印出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-20 10:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表