Python 将嵌套的for循环转换为嵌套的while循环
上面的代码获取给定列表的所有元素并将它们除以2,效果很好,但是为了练习,我尝试将其转换为while循环,但是由于某些原因,我没有收到错误,但是代码一直在运行,我不得不强制停止它Python 将嵌套的for循环转换为嵌套的while循环,python,for-loop,while-loop,Python,For Loop,While Loop,上面的代码获取给定列表的所有元素并将它们除以2,效果很好,但是为了练习,我尝试将其转换为while循环,但是由于某些原因,我没有收到错误,但是代码一直在运行,我不得不强制停止它 my_data = [4, 8, 15, 16, 23, 42] index = 0 for item in my_data: k = 0 for i in range(2, item+1): if (i % 2 == 0): k += 1 my_data[
my_data = [4, 8, 15, 16, 23, 42]
index = 0
for item in my_data:
k = 0
for i in range(2, item+1):
if (i % 2 == 0):
k += 1
my_data[index] = k
index += 1
print(my_data)
i=0
当我
这就是我试图实现的方法,就我而言,它似乎不起作用。如果有人能为我澄清,我将不胜感激。提前谢谢。第5行:
i = 0
while i < len(my_data):
j = 2
while j < i+1:
if j % 2 == 0:
j += 1
my_data[i] = j
i += 1
print my_data
当i==3
和j==3
时,if语句被忽略<代码>j不能增加。它将永远循环,因为第5行的停止标准是j:
i = 0
while i < len(my_data):
j = 2
while j < i+1:
if j % 2 == 0:
j += 1
my_data[i] = j
i += 1
print my_data
当i==3
和j==3
时,if语句被忽略<代码>j
不能增加。它将永远循环,因为停止标准是j第二个while循环仅在j是pair时向前移动,如果j不是pair(因为j仅增加1),while循环将永远循环。
用j替换k犯了一个小错误,应该继续使用k
if j % 2 == 0:
i=0
当我
第二个while循环仅在j为pair时向前移动,如果j不是pair(因为j仅增加1),while循环将永远循环。
用j替换k犯了一个小错误,应该继续使用k
if j % 2 == 0:
i=0
当我
如果您只是尝试使用分割列表中的每个项目,同时也尝试使用此方法
i = 0
while i < len(my_data):
j = 2
k = 0
while j < i+1:
if j % 2 == 0:
k+=1
j += 1
my_data[i] = k
i += 1
print my_data
如果您只是想用while来划分列表中的每个项目,那么您也可以这样做
i = 0
while i < len(my_data):
j = 2
k = 0
while j < i+1:
if j % 2 == 0:
k+=1
j += 1
my_data[i] = k
i += 1
print my_data
.my_data=[i//2 for i in my_data]
为什么要使用这么复杂的逻辑?@AlbinPaul因为我不允许使用除法,否则就很容易了哈哈:S@Unix右移运算符呢?@AlbinPaul问题是,我必须将这段代码转换成MIPS 32,它更难用于MIPS中的循环,这就是为什么我想使用while循环,我也不知道如何将leftshift运算符转换为MIPS,欢迎提供任何提示。my_data=[I//2 for I in my_data]
为什么要使用所有这些复杂的逻辑?@AlbinPaul因为我不允许使用除法,否则就很容易了哈哈:S@Unix右移运算符如何?@AlbinPaul问题是,我必须将这段代码转换为MIPS 32,这对于MIPS中的循环很难使用,所以这就是为什么我想使用while循环,而且我不知道如何将左移运算符转换为MIPS,任何提示都很有用,非常感谢,但是你建议我在其他地方补充什么,我现在就给你正确的答案@在其他情况下,添加j+=1 ithink@Unix我不明白你的代码。我想知道为什么你需要2个嵌套的来将列表除以2?你所需要的只是一个的,或者一个更具python风格的方式,使用列表理解:[x/2 for x in my_data]
@enamoria查看我对AlbinPaul的上述评论,你就会明白我为什么这么做了,非常感谢,但你建议我在其他地方补充什么,我现在就给你正确的答案@在其他情况下,添加j+=1 ithink@Unix我不明白你的代码。我想知道为什么你需要2个嵌套的来将列表除以2?你所需要的只是一个的,或者一个更具python风格的方式,使用列表理解:[x/2 for x in my_data]
@enamoria查看我对AlbinPaul的上述评论,你就会明白我为什么这样做了。我感谢你的努力,但是我不允许使用除法,因此我无法实现这一点!我很感激你的努力,但是我不允许使用除法,因此我不能执行此操作!