Python 理解代码的问题

Python 理解代码的问题,python,Python,我在edx.com上找到了本课程的代码。有人能告诉我为什么我必须在for循环中使用余数吗?它是如何影响口述的 def buildCoder(shift): """ Returns a dict that can apply a Caesar cipher to a letter. The cipher is defined by the shift value. Ignores non-letter characters like punctuation, num

我在edx.com上找到了本课程的代码。有人能告诉我为什么我必须在for循环中使用余数吗?它是如何影响口述的

def buildCoder(shift):
    """
    Returns a dict that can apply a Caesar cipher to a letter.
    The cipher is defined by the shift value. Ignores non-letter characters
    like punctuation, numbers and spaces.

    shift: 0 <= int < 26
    returns: dict
    """
    dict={}
    upper = string.ascii_uppercase
    lower = string.ascii_lowercase
    for l in range(len(upper)):
        dict[upper[l]] = upper[(l+shift)%len(upper)]
    for l in range(len(lower)):
        dict[lower[l]] = lower[(l+shift)%len(lower)]
    return dict
def构建编码器(班次):
"""
返回可以对字母应用Caesar密码的dict。
密码由移位值定义。忽略非字母字符
比如标点、数字和空格。
shift:0代码实现了a。假设移位值为1(这是“键”)。“a”然后应该变成“B”,“B”应该变成“C”,依此类推。在你到达“Z”之前,一切都是显而易见的。密码的工作方式是该值应该“滚动”-“Z”应该再次变成“a”

这基本上就是余数的作用。假设您使用数字而不是字母:“A”是0,“Z”是25。您想对数字x进行加密。首先添加x:(x+shift)。但现在该值可能超出了法定范围0-25。如果是26,它应该是0,如果是27,它应该是1,依此类推

事实证明,这在数学上相当于除以26后的余数。26%26==0,27%26==1,依此类推。它所表达的是:在26长度的循环中,你经过了多少次并不重要——它只关系到你在当前循环中走了多远。

代码实现了a。比如说移位v值是1(这是“键”)。“A”然后应该变成“B”,“B”应该变成“C”,依此类推。在你到达“Z”之前,一切都是显而易见的。密码的工作方式是,值应该“翻滚”——“Z”应该再次变成“A”

这基本上就是余数的作用。假设您使用数字而不是字母:“A”是0,“Z”是25。您想对数字x进行加密。首先添加x:(x+shift)。但现在该值可能超出了法定范围0-25。如果是26,它应该是0,如果是27,它应该是1,依此类推


事实证明,这在数学上相当于将26.26%26==0、27%26==1等分后的余数取下来。它表达的意思是:在26长度的循环中,你经过了多少次并不重要,只关系到你在当前循环中走了多远。

如文档中所述:As writen在文件中: