简单的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个回答

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

#从本机指定位置的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)

你循环的部分没有问题,你可以用一个列表测试,问题在你前面的代码,那部分我没看明白,一个文件处理为一行又放到数组?那不是只有一个元素?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问