一个python的for循环问题!
ceshi2.txt内容为:12345ceshi3.txt内容为:567892fl1=open(r'ceshi2.txt',"r")3fl2=open(r'ceshi3....
ceshi2.txt内容为:
1
2
3
4
5
ceshi3.txt内容为:
5
6
7
8
9
2 fl1=open(r'ceshi2.txt',"r")
3 fl2=open(r'ceshi3.txt',"r")
4 for ii in fl2:
5 print ii
6 for i in fl1:
7 print i
8 fl1=[1,2,3,4,5]
9 fl2=[5,6,7,8,9]
10 for ii in fl2:
11 print ii
12 for i in fl1:
13 print i
为什么2-7行运行结果和8-13行的结果不一样阿?
怎样才能让第一个达到第二个的效果? 展开
1
2
3
4
5
ceshi3.txt内容为:
5
6
7
8
9
2 fl1=open(r'ceshi2.txt',"r")
3 fl2=open(r'ceshi3.txt',"r")
4 for ii in fl2:
5 print ii
6 for i in fl1:
7 print i
8 fl1=[1,2,3,4,5]
9 fl2=[5,6,7,8,9]
10 for ii in fl2:
11 print ii
12 for i in fl1:
13 print i
为什么2-7行运行结果和8-13行的结果不一样阿?
怎样才能让第一个达到第二个的效果? 展开
3个回答
展开全部
在你问问题之前
希望提醒你以后提这样的问题的时候把你得到的结果也发上来
这样才能让回答的人有效率的回答
幸亏是一个这样很简单的循环
如果到了比较复杂的工程
你难道让大家自己运行一下试试看么
========================分割线==============================
根据你下面的补充
你必须要知道你用open()赋值给fl1的是什么东西
你如果翻阅文档(在idle里按F1)
或者哪怕用type来观察就能知道你得到的是一个文件object
那么你用forloop来循环读出fl1的时候在ii第一次循环的时候就已经读到文件末端了
而它不会像列表一样能在每个循环里再输出一遍
你就这么理解
open得到的和[ ]是不同的东西
不同的东西的操作不同
具体怎么不同
什么时候用什么
我觉得我也不怎么会讲
讲了有些细节可能会有错误的
当然哪怕说明白了你也不见的懂
因为会牵扯一些其他的知识
你学到一定高度就自然理解了
多翻翻文档和书籍
多操作和比较就可以了
这种问题其实坐等答案
比较耽误你自己时间的
以上
希望提醒你以后提这样的问题的时候把你得到的结果也发上来
这样才能让回答的人有效率的回答
幸亏是一个这样很简单的循环
如果到了比较复杂的工程
你难道让大家自己运行一下试试看么
========================分割线==============================
根据你下面的补充
你必须要知道你用open()赋值给fl1的是什么东西
你如果翻阅文档(在idle里按F1)
或者哪怕用type来观察就能知道你得到的是一个文件object
那么你用forloop来循环读出fl1的时候在ii第一次循环的时候就已经读到文件末端了
而它不会像列表一样能在每个循环里再输出一遍
你就这么理解
open得到的和[ ]是不同的东西
不同的东西的操作不同
具体怎么不同
什么时候用什么
我觉得我也不怎么会讲
讲了有些细节可能会有错误的
当然哪怕说明白了你也不见的懂
因为会牵扯一些其他的知识
你学到一定高度就自然理解了
多翻翻文档和书籍
多操作和比较就可以了
这种问题其实坐等答案
比较耽误你自己时间的
以上
追问
其实后来我猜到可能是这个原因,那请问我应该如何解决这种两个嵌套的文件循环呢?
追答
seek当然也可以
但是多个seek会影响到运行速度
所以在并不是很大数量的情况下
将内容提出来是一个可行的方法
而且你这种题目本身的意义并不大
仅仅是一个练习而已
很多东西要根据具体的情况来判断的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从文件里读出来的是带有换行符号的行,print时会换行
若要第同第二段代码的效果, 需增加剔除行尾换行符号及空格的strip方法:
for ii in fl2:
print ii.strip()
for i in fl1:
print i.strip()
更多追问追答
追问
我不是遇到了你说的问题:
第二段运行结果如下:
5
1
2
3
4
5
6
1
2
3
4
5
7
1
2
3
4
5
8
1
2
3
4
5
9
1
2
3
4
5
第一段运行如下:
5
1
2
3
4
5
6
7
8
9
追答
fl1=[ln.strip() for ln in open(r'ceshi2.txt',"r")]
fl2=[ln.strip() for ln in open(r'ceshi3.txt',"r")]
for ii in fl2:
print ii
for i in fl1:
print i
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2-7行中加 .strip()
print ii.strip()
print i.strip()
追问
我不是遇到了你说的问题:
第二段运行结果如下:
5
1
2
3
4
5
6
1
2
3
4
5
7
1
2
3
4
5
8
1
2
3
4
5
9
1
2
3
4
5
第一段运行如下:
5
1
2
3
4
5
6
7
8
9
追答
因为第一次外循环结束时,内循环已经执行过一次,fl1 已经读到文件末尾,不会自动回到文件开头再读一遍。
可以把文件先读到数组中再循环,或者加个 fl1.seek(0)
for ii in fl2:
print ii.strip()
for i in fl1:
print i.strip()
fl1.seek(0)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询