JT Tomato� 2019-04-11 10:31 采纳率: 20%
浏览 687
已采纳

简单的while 循环结果展示问题

各位高手大家好,因工作需要近期我在尝试写一个脚本: 想要实现以下功能:

从本机指定位置的TXT中读取信息,并存进一个列表numberL之中

逐个处理列表numberL的元素,并将每次处理的单个元素放到单一元素列表a 之中

将已经处理完的元素统统放到列表done 之中

循环2-3 直至numberL中的元素被全部处理完为止

代码如下:

file_path = "D:/PN_TXT/PN_test.txt." # 设置路径
with open(file_path) as file_PN: # 打开文件
lines = file_PN.readlines() #读取文件
PN = ''
for line in lines:
PN +=line.strip() # 将文件置入一行之中
print(PN)

done = []
number = ()
numberL = list(number)
numberL.append(PN)

while len(numberL) > 0:
a= numberL.pop()
done.append(a)
print(a)
print(done)
预计实现的效果类似这样:

图片说明

而最终实现的效果却是这样:

图片说明

  • 写回答

2条回答 默认 最新

  • 泡视界 2019-04-11 14:22
    关注

    朋友,看你的代码貌似跟你的中文描述不大一样。而且有点繁琐,很多变量根部不需要啊

    #从本机指定位置的TXT中读取信息,并存进一个列表numberL之中
    file_path = "D:/PN_TXT/PN_test.txt." 
    with open(file_path) as file_PN: 
    lines = file_PN.readlines() 
    numberL=[]
    done=[]
    for line in lines:
        PN =line.strip() #原来写的是PN +=line.strip() ,加等干嘛,不是只读一行吗?加等就一行接一行,所有行全写再PN里面了
        numberL.append(PN)
    
    #将每次处理的单个元素放到单一元素列表a 之中
    #while len(numberL) > 0:
        #a= numberL.pop()这写法是指numberL删除末尾元素,然后其余赋值给a,这样你的a就是会出现类似这样的情况,第一次a=。。。。。 第二次a=。。。。第三次a=。。。第四次a=。。(这样说你懂了吧?)
        #实际你只想让a的每一个元素记录一个numberL元素
        #那么a就可以不用了啊,因为你可以用numberL[i]来表示numberL当中的一个元素,为啥还要一个单一元素列表呢?
        #你要print(a)实际上可以写成print(numberL[指定第几个])
    
    #最终可以改成这样的循环
    for i in range(len(numberL)):
        #在这加上你对numberL的元素的处理操作,假设处理完存放在done里面就可以写 done[i].append(对numberL[i]的操作)
        #假设没有什么处理就写
        done.append[numberL[i]]
        print(done[i])#这里可以实现你的print(a)这句话
        print(done)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?