鱼C论坛

 找回密码
 立即注册
查看: 1330|回复: 3

[已解决][idle问题]实在找不出问题,求解!!!

[复制链接]
发表于 2017-12-15 19:12:54 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 脑子 于 2017-12-15 20:44 编辑

希望从有三行数据的txt文档中提取数据,并保存在rawx,insertdatax和insertdatay中。

  1.         rawx=[];insertdatax=[];insertdatay=[];
  2.     fr=open('00.txt')
  3.     line0=0
  4.     for line in fr.readlines():
  5.         lineArr = line.strip().split('\t')
  6.         m=shape(lineArr)
  7.         if line0==0:
  8.             line0=1
  9.             for k in range(m[0]):
  10.                 rawx.append(float(lineArr[k]))
  11.         if line0==1:
  12.             line0=2
  13.             for k in range(m[0]):
  14.                 insertdatax.append(float(lineArr[k]))
  15.         if line0==2:
  16.             line0=0
  17.             for k in range(m[0]):
  18.                 insertdatay.append(float(lineArr[k]))
复制代码


如果txt文档中数据为:
  1. 1        2        3        4        5        6
  2. 1.1        1.2        1.3        1.4        1.5
  3. 1.1        1.2        1.3        1.4        1.5
复制代码


运行后很奇怪:
1.如果我把line0放在外面:
  1. >>> line0=0#单独先令line0执行为0
  2. >>> for line in fr.readlines():
  3.         lineArr = line.strip().split('\t')
  4.         m=shape(lineArr)
  5.         if line0==0:
  6.             line0=1
  7.             for k in range(m[0]):
  8.                 rawx.append(float(lineArr[k]))
  9.         if line0==1:
  10.             line0=2
  11.             for k in range(m[0]):
  12.                 insertdatax.append(float(lineArr[k]))
  13.         if line0==2:
  14.             line0=0
  15.             for k in range(m[0]):
  16.                 insertdatay.append(float(lineArr[k]))

  17.                
  18. >>> rawx
  19. [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.1, 1.2, 1.3, 1.4, 1.5]
  20. >>> insertdatax
  21. [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.1, 1.2, 1.3, 1.4, 1.5]
  22. >>> insertdatay
  23. [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.1, 1.2, 1.3, 1.4, 1.5]
  24. >>>
复制代码


2.如果我把line0放在里面执行:
  1. >>> fr=open('00.txt')
  2.     line0=0#没有提前一步赋值
  3.     for line in fr.readlines():
  4.         lineArr = line.strip().split('\t')
  5.         m=shape(lineArr)
  6.         if line0==0:
  7.             line0=1
  8.             for k in range(m[0]):
  9.                 rawx.append(float(lineArr[k]))
  10.         if line0==1:
  11.             line0=2
  12.             for k in range(m[0]):
  13.                 insertdatax.append(float(lineArr[k]))
  14.         if line0==2:
  15.             line0=0
  16.             for k in range(m[0]):
  17.                 insertdatay.append(float(lineArr[k]))
  18.                
  19. >>>
  20. >>> line0
  21. 0
  22. >>> rawx
  23. []
  24. >>> insertdatax
  25. []
  26. >>> insertdatay
  27. []
复制代码


请问:
两次结果为什么不一样?
谢谢!
最佳答案
2017-12-16 11:08:25
而且line0不能在if条件满足后修改,而应该在每一次循环中修改
rawx=[];
insertdatax=[];
insertdatay=[];
fr=open('00.txt')
line0=0
for line in fr.readlines():
    lineArr = line.strip().split('\t')
    print(lineArr)
    m=[len(lineArr)]
    if line0==0:
        for k in range(m[0]):
            rawx.append(float(lineArr[k]))
        
    if line0==1:
        for k in range(m[0]):
            insertdatax.append(float(lineArr[k]))
        
    if line0==2:
        for k in range(m[0]):
            insertdatay.append(float(lineArr[k]))
    line0 += 1

00.zip

183 Bytes, 下载次数: 7

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-16 01:34:58 | 显示全部楼层
别在交互环境下写代码吧

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-16 10:30:23 | 显示全部楼层
>>> rawx=[]
>>> insertdatax=[]
>>> insertdatay=[]
>>> fr=open('00.txt')
>>> line0=0
for line in fr.readlines():
        lineArr = line.strip().split('\t')
        m=[len(lineArr)]
        if line0==0:
            line0=1
            for k in range(m[0]):
                rawx.append(float(lineArr[k]))
        if line0==1:
            line0=2
            for k in range(m[0]):
                insertdatax.append(float(lineArr[k]))
        if line0==2:
            line0=0
            for k in range(m[0]):
                insertdatay.append(float(lineArr[k]))
print(rawx)
SyntaxError: invalid syntax

我都没法直接在命令行里运行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-16 11:08:25 | 显示全部楼层    本楼为最佳答案   
而且line0不能在if条件满足后修改,而应该在每一次循环中修改
rawx=[];
insertdatax=[];
insertdatay=[];
fr=open('00.txt')
line0=0
for line in fr.readlines():
    lineArr = line.strip().split('\t')
    print(lineArr)
    m=[len(lineArr)]
    if line0==0:
        for k in range(m[0]):
            rawx.append(float(lineArr[k]))
        
    if line0==1:
        for k in range(m[0]):
            insertdatax.append(float(lineArr[k]))
        
    if line0==2:
        for k in range(m[0]):
            insertdatay.append(float(lineArr[k]))
    line0 += 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-4 19:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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