Django从2D列表中选择特定的行和列

2024-05-08 11:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Django中显示一个Vigenere正方形,但是我想为特定的行和列指定一种颜色,这样就可以从正方形的其余部分中识别出来。通过这种实现,整个正方形都是彩色的。我想把第一行涂上颜色,第一列也涂上颜色。其余的一定是白色的。你知道吗

模板:

<div class="hidden-xs">
            <table id="show-table">
              <tbody>
                {% for row in vigenereExample %}
                  {% if row.0 %}
                    <tr style="background-color: #98AFC7;">
                      {% for col in row %}
                          <td>
                            {{col}}
                          </td>
                      {% endfor %}
                    </tr>
                  {% else %}
                    <tr>
                      {% for col in row %}
                        <td>
                          {{col}}
                        </td>
                      {% endfor %}
                    </tr>
                  {% endif %}
              {% endfor %}
            </tbody>
          </table>
        </div>

你知道吗视图.py你知道吗

def vigenereHome(request):
object = VigenereCipher()
vigenereSquare = object.getSquaredAlphabet()
vigenereExample = object.geSquareExample()
context = {
            'vigenereSquare' : vigenereSquare,
            'vigenereExample' : vigenereExample
}
return render(request, "VigenereCipher.html", context)

这是建造广场的班级 维格纳密码.py你知道吗

class VigenereCipher:

squareAlphabet = []
squareExample = []

exampleKey = "NETWORK"
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
nonCapLetters = "abcdefghijklmnopqrstuvwxyz"

def __init__(self):
    # Initialize a list of lists. 27x27 array because of the Grid
    self.squaredAlphabet=[ [ '' for x in range(27)] for j in range(27)]
    self.squareExample=[['' for x in range(26)] for j in range(len(self.exampleKey) + 1)]

    # Create Grid on column
    for y in range(len(self.letters)):
        #self.squaredAlphabet[0][y+1] = "x"
        self.squaredAlphabet[0][y+1] = self.nonCapLetters[y]
        self.squareExample[0][y] = self.letters[y]

    # Create Grid on row
    for y in range(len(self.letters)):
        #self.squaredAlphabet[y+1][0] = "y"
        self.squaredAlphabet[y+1][0] = self.nonCapLetters[y]

    for y in range(len(self.exampleKey)):
        self.squareExample[y+1][0] = self.exampleKey[y]

    # Fill Vigenere Square
    for x in range(len(self.letters)):
        j = 0
        for y in range(len(self.letters)):
            j = y + x
            if(j > 25):
                j = j - 26
            self.squaredAlphabet[x+1][y+1] = self.letters[j]

    # For debugging purposes, display the Square.
    # for x in range(len(self.squaredAlphabet)):
    #     for y in range(len(self.squaredAlphabet)):
    #         print("Position: x", x, "y",  y, "=",  self.squaredAlphabet[x][y])

    # Fills the exampleSquare
    for x in range(len(self.exampleKey)):
        j = 0
        for y in range(len(self.letters)):
            j = self.letters.index(self.exampleKey[x]) + y
            if(j > 25):
                j = j - 26
            self.squareExample[x+1][y] = self.letters[j]
    print(self.squareExample)

def getSquaredAlphabet(self):
    return self.squaredAlphabet

def geSquareExample(self):
    return self.squareExample

Tags: inselfforlendefrangecoltr
1条回答
网友
1楼 · 发布于 2024-05-08 11:18:31

也许你需要的是

<div class="hidden-xs">
    <table id="show-table">
        <tbody>
            {% for row in vigenereExample %}
            <tr>
                {% for col in row %}
                    {% if forloop.counter0 == 0 or forloop.parentloop.counter0 == 0 %}
                    <td style="background-color: #98AFC7;">
                    {% else %}
                    <td>
                    {% endif %}
                        {{col}}
                    </td>
                {% endfor %}
            </tr>
            {% endfor %}
        </tbody>
    </table>
</div>

相关问题 更多 >