|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题:第2题思路还是比较清晰的。本来以为第三题只是小改动,但是有很多看不明白。
1、能否大神给个解题的思路:代码从头开始这一块作用是,下一块作用是,最后是.......
2、关键位置能给个注释
2、编写一个程序,当用户输入文件名和行数N后,将该文件的前N行内容打印到屏幕上:
代码:
def file_view(file_name, line_num):
print('\n文件%s的前%s的内容如下:\n' % (file_name, line_num)) #同时把2个变量输出到屏幕
f = open(file_name)
for i in range(int(line_num)): #判断一共循环几次
print(f.readline(), end='') #读取第一行、第二行、第三行
f.close()
file_name = input(r'请输入要打开的文件(D:\code\record.txt):')
line_num = input('请输入需要显示该文件前几行:')
file_view(file_name, line_num)
3、用户要求在上一题的基础上扩展,用户可以随意输入需要显示的行数。
如输入13:21打印第13行到
21行
输入:21打印前21行
输入21:打第21行开始到文件结尾所有内容
代码:
def file_view(file_name, line_num):
if line_num.strip() == ':':
begin = '1'
end = '-1'
(begin, end) = line_num.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)
print('\n文件%s%s的内容如下:\n' % (file_name, prompt))
begin = int(begin) - 1
end = int(end)
lines = end - begin
f = open(file_name)
for i in range(begin): # 用于消耗掉begin之前的内容
f.readline()
if lines < 0:
print(f.read())
else:
for j in range(lines):
print(f.readline(), end='')
f.close()
file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
file_view(file_name, line_num)
第一部分:
根据输入确定起始和结束位置。
① 如果输入只有:,表示输出全文,所以把begin设为1,end设为-1(-1代表最后一个)
② 如果不是只有:,进行下面的判断。先将输入按:进行分割,line_num.split(':'),冒号左边的放到begin中,右边的放到end中
如果左边为空将begin设为1,右边为空end设为-1
- if line_num.strip() == ':': #去掉输入两边的空白符 ----①
- begin = '1'
- end = '-1'
-
- (begin, end) = line_num.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)
- print('\n文件%s%s的内容如下:\n' % (file_name, prompt))
复制代码
第三部分:输出对应行的内容
详细注释写在代码里了
- begin = int(begin) - 1 #下标是从0开始的,所以先减一
- end = int(end)
- lines = end - begin #总共要输出的行数
- f = open(file_name)
-
- for i in range(begin): # 用于消耗掉begin之前的内容
- f.readline()
- if lines < 0: #小于0是因为end等于-1了,也就是把后面的都输出,所以用f.read()把后面的文本都读进来
- print(f.read())
- else:
- for j in range(lines): # 正常一行一行的输出
- print(f.readline(), end='')
复制代码
|
|