首页 > 解决方案 > 使用while函数遇到python问题

问题描述

我是 python 的学生和初学者,我有一个问题。我从 6 x 6 的矩阵中对其进行了一些操作。我必须为每个部分的每个值做 (11 * matrix_val)%37 但我的计数器无法正常工作......

这是我的代码:

m = [[36, 19, 27, 36, 7, 10], [2, 18, 3, 33, 2, 21], [26, 27, 4, 22, 30, 31], [29, 36, 7, 20, 6, 30], [30, 6, 14, 23, 15, 13], [22, 10, 10, 35, 15, 22]]
i = 0 #matrix jumping
j = 0 #scan the matrix
k = 1
somme = 0

while k < 24:
    while i < 6:
        while j < 6:
            m[i][j] = (11 * m[i][j])%37
            print(i,j,k)
            j = j + 1
        i = i + 1
    k = k + 1
j = 0
i = 0
print(m)

但是当我检查我的计数器时,只有“j”在增加,但“i”和“k”并不像你在这里看到的那样:

isatix@isatix-MS-7A34:~/python/ceinture/20 points$ python3 matrice.py
0 0 1
0 1 1
0 2 1
0 3 1
0 4 1
0 5 1
[[26, 24, 1, 26, 3, 36], [2, 18, 3, 33, 2, 21], [26, 27, 4, 22, 30, 31], [29, 36, 7, 20, 6, 30], [30, 6, 14, 23, 15, 13], [22, 10, 10, 35, 15, 22]]
isatix@isatix-MS-7A34:~/python/ceinture/20 points$

所以也许我做错了什么,但我看不到它^^有人有想法吗?

编辑:问题已解决:

这是工作正常的代码:

m = [[36, 19, 27, 36, 7, 10], [2, 18, 3, 33, 2, 21], [26, 27, 4, 22, 30, 31], [29, 36, 7, 20, 6, 30], [30, 6, 14, 23, 15, 13], [22, 10, 10, 35, 15, 22]]
i = 0 #saute de matrice en matrice
j = 0 #parcour la matrice
k = 1
somme = 0

while k < 24:
    i = 0
    j = 0
    while i < 6:
        while j < 6:
            m[i][j] = (11 * m[i][j])%37
            print(i,j,k)
            j = j + 1
        i = i + 1
        j = 0
    k = k + 1
print(m)

标签: pythonwhile-loop

解决方案


您在错误的位置设置了ij等于 0。在处理 3 个循环之前,您应该熟悉循环 2 个循环。另外,您应该k从 1 开始还是从 0 开始?

m = [[36, 19, 27, 36, 7, 10], 
     [2, 18, 3, 33, 2, 21], 
     [26, 27, 4, 22, 30, 31], 
     [29, 36, 7, 20, 6, 30], 
     [30, 6, 14, 23, 15, 13], 
     [22, 10, 10, 35, 15, 22]]
k = 1
somme = 0

while k < 24:
    i = 0 #matrix jumping
    while i < 6:
        j = 0 #scan the matrix
        while j < 6:
            m[i][j] = (11 * m[i][j])%37
            print(i,j,k)
            j += 1
        i += 1
    k += 1

print(m)

推荐阅读