求助帖
第二十九讲的题目,要打印文件的其中几行,然后要求能任意打印所需的某几行,甲鱼哥的答案有点复杂,我自己写了个容易理解的,但是不知道哪里出问题运行不了。请问哪里有问题?file_target=input('请输入要打开的文件:')
line1=input('请输入要显示的行数【上界】:')
line2=input('请输入要显示的行数【下界】:')
print('文件"%s"的第%s行到第%s行的内容如下:'%(file_target,line1,line2)
f1=open(file_target)
list1=list(f1)
f1.close()
if line1==None and line2!=None:
for each in list1[:int(line2)]:
print(each)
if line2==None and line1!=None:
for each in list1:
print(each)
if line1==None and line2==None:
print('输入有误')
if line1!=None and line2!=None:
for each in list1:
print(each) 本帖最后由 Twilight6 于 2020-6-26 20:50 编辑
你的 print 那少了个括号,对了而且你这边转 list 应该判断是否等于空列表 而不是 None
还有这个地方,你写错了把:
for each in list1-1):int(line2)]:
-1移到外面就好了:
for each in list1)-1:int(line2)]
正确代码:
file_target=input('请输入要打开的文件:')
line1=input('请输入要显示的行数【上界】:')
line2=input('请输入要显示的行数【下界】:')
print('文件"%s"的第%s行到第%s行的内容如下:'%(file_target,line1,line2))
f1=open(file_target)
list1=list(f1)
f1.close()
if line1==[] and line2!=[]:
for each in list1[:int(line2)]:
print(each)
if line2==[] and line1!=[]:
for each in list1:
print(each)
if line1==[] and line2==[]:
print('输入有误')
if line1!=[] and line2!=[]:
for each in list1:
print(each,end='') 我的思路就是把要打印范围的上下界分开来,分别输入,并把目标文件列表化,运用if语句来达到我们的目的。
我知道这样不太符合题意,但对我来说容易理解一些 sturgeons 发表于 2020-6-26 20:48
我的思路就是把要打印范围的上下界分开来,分别输入,并把目标文件列表化,运用if语句来达到我们的目的。
...
帮你改完了 你看看上面一楼吧 在f1=open()那句出问题了 sturgeons 发表于 2020-6-26 20:58
在f1=open()那句出问题了
报错是什么 xiaofeiyu 发表于 2020-6-26 21:00
报错是什么
invalid syntax sturgeons 发表于 2020-6-26 21:06
invalid syntax
你看不见我发的代码吗? 2L,你直接复制运行就可以了啊??? sturgeons 发表于 2020-6-26 21:06
invalid syntax
。。。
语法错误
问题就出在上面的print
去看看2楼twilight大佬的代码吧 Twilight6 发表于 2020-6-26 20:45
你的 print 那少了个括号,对了而且你这边转 list 应该判断是否等于空列表 而不是 None
还有这个地 ...
非常感谢,那这样写合适吗,会不会出现什么bug,虽然简单了很多 Twilight6 发表于 2020-6-26 21:07
你看不见我发的代码吗? 2L,你直接复制运行就可以了啊???
嗯嗯,看见了 sturgeons 发表于 2020-6-26 21:08
非常感谢,那这样写合适吗,会不会出现什么bug,虽然简单了很多
会 因为 input 输入的是字符串,而我这里改成了列表了,刚刚没认真看
等等我帮你重写改改 Twilight6 发表于 2020-6-26 20:45
你的 print 那少了个括号,对了而且你这边转 list 应该判断是否等于空列表 而不是 None
还有这个地 ...
话说……为什么要把字符串和列表比较…… Twilight6 发表于 2020-6-26 20:51
帮你改完了 你看看上面一楼吧
还有就是,我这里的line1和line2是上下界,不是列表啊,列表化的是整个文件 本帖最后由 Twilight6 于 2020-6-27 13:45 编辑
sturgeons 发表于 2020-6-26 21:22
还有就是,我这里的line1和line2是上下界,不是列表啊,列表化的是整个文件
改成这样:
file_target = input('请输入要打开的文件:')
line1 = input('请输入要显示的行数【上界】:')
line2 = input('请输入要显示的行数【下界】:')
whilenot (line1.isdigit() and line2.isdigit()) :
print('你输入的行数有误,请重新输入!')
line1 = input('请输入要显示的行数【上界】:')
line2 = input('请输入要显示的行数【下界】:')
print('文件"%s"的第%s行到第%s行的内容如下:' % (file_target, line1, line2))
f1 = open(file_target)
text = f1.readlines()
f1.close()
if int(line1) <= int(line2):
for each in text:
print(each, end='')
else:
print("您的输入有误!")
Twilight6 发表于 2020-6-26 21:29
改成这样:
那如果上界或下界其中一个为空怎么办 sturgeons 发表于 2020-6-26 22:02
那如果上界或下界其中一个为空怎么办
已经更改了代码~你去看看吧
页:
[1]