【发布时间】:2019-09-29 08:51:22
【问题描述】:
我知道这很简单,但我在 Python 中使用“while”时遇到了一些问题。我的猜测是“while”不像我认为的那样在这种语言中起作用。当作为我的代码的一部分在另一个while循环中执行while循环时,第二个while循环只完成一次它的工作然后继续,但我的目的是让第二个while循环多次完成它的工作,然后返回第一个while 循环。
我使用的实际代码是这个:
file=open('program.asm','r+')
lista= file.readlines()
i=0
while (i<len(lista)):
cad=lista[i]
if (cad.find('data')!=-1):
while (cad.find('section')!=-1 and i<len(lista)):
print(i)
print(cad)
i=i+1
cad=lista[i]
print(cad)
saveData(cad)
print(cad)
print(i)
print(i)
file.close()
该文件包含以下内容:
section .data
a db 2
b db 3
section .bss
result resw 1
section .text
global CMAIN
CMAIN:
mov r1,a
mov r2,b
add r1,r2
mov word[result],r1
ret
我得到的结果是
1
1
section .data
a db 2
a db 2
2
3
4
这很奇怪,我的打印结果应该是
1
section .data
a db 2
a db 2
2
3
b db 3
b db 3
4
基本上,if 条件在 i=1 时满足。
如果 i=2,while 循环应该打印“a db 2”,如果 i=3,则打印“b db 3”。如果 i=4 退出 while 循环。
相反,代码做了一些非常奇怪的事情。我不知道第二个“1”是从哪里来的,while 循环只执行了 1 次。
【问题讨论】:
-
Inner while 只会运行“section .data”行,我认为是因为
cad.find('section')!=-1。然后你 ++i 并打印两次“a db 2”......其余的我不确定,但是:1.你没有在外循环中增加i2.我感觉还有更多pythonic 方法(例如".data" in cad而不是 find),但您必须多解释一下您尝试实现的目标(好像您提取数据部分)
标签: python