chr(122 – (ord(char) – 97))的用法如何?

huangapple go评论89阅读模式
英文:

How is the usage of chr(122 - (ord(char) - 97))

问题

我不理解这行代码 chr(122 - (ord(char) - 97)) 的工作原理。

def encrypt_message(message):
    encrypted_message = ""
    for char in message:
        if char.isalpha():
            encrypted_char = chr(122 - (ord(char) - 97))         
            encrypted_message += encrypted_char

这段代码是一个加密函数,用于将消息进行加密。具体来说,它使用了 ASCII 编码来实现加密。在 ASCII 编码中,小写字母 'a' 对应的值是 97,'z' 对应的值是 122。

chr(122 - (ord(char) - 97)) 这行代码的作用是将输入的字符进行加密。它首先通过 ord(char) 将字符转换为 ASCII 值,然后减去 97,得到一个偏移量。最后,通过 chr() 函数将偏移量转换回字符。

举个例子,如果输入的字符是 'a',那么 ord(char) 的值是 97,减去 97 后得到 0,再减去 0,最终得到 122。然后,通过 chr(122) 将其转换为字符 'z'。这样就完成了字符的加密过程。

希望这样解释能帮助你理解这行代码的工作原理。

英文:

I'm not understanding how this line chr(122 - (ord(char) - 97)) will work.

def encrypt_message(message):
    encrypted_message = ""
    for char in message:
        if char.isalpha():
            encrypted_char = chr(122 - (ord(char) - 97))         
            encrypted_message += encrypted_char

答案1

得分: 1

这将用字母表另一端的“对称”字母替换一个字母,例如 a = z, b = y, c = x,依此类推...

那么这是如何工作的呢?

  1. 我们需要测量原始字母到 a 的“距离”。我们可以通过查看 ord ord('a') 的值来实现,它恰好是 97。
  2. 然后,我们从 z 移动该距离。ord('z') 的值恰好是 122。这将得到替换字母的 ord 值。
  3. 一旦我们有了 ord 值,我们使用 chr 函数获取实际字母。

基本上,为了可读性,代码可以表示为 chr(ord(z) - (ord(char) - ord('a'))),但是用实际值替换 ord('z')ord('a') 可以节省一些计算。最优化的方式是简化数学计算为 chr(219 - ord(char))

英文:

This will replace a letter with it's "symmetric" letter from the other end of the alphabet i.e. a = z, b = y, c = x, etc...

So how does this work?

  1. We need to measure the "distance" from our original letter to a. We do this by looking at the ord ord('a') happens to be 97.
  2. We then move that distance away from z. ord('z') happens to 122. This will get the ord of our replacement letter
  3. Once we have the ord, we take the chr to get the actual letter.

Basically, for readability, the code could be expressed as chr(ord(z) - (ord(char) - ord('a'))), but replacing the ord('z') and ord('a') with their actual values save some calculation. The most optimal would be to simplify the math as chr(219- ord(char)).

答案2

得分: 0

基本上,这行代码给出了字母表的镜像字母...

您可以使用以下代码检查这行代码:

characters = 'abcdefghijklmopqrstuvwxyz'

enc_string = ''
for char in characters:
    encrypted_char = chr(122 - (ord(char) - 97))
    enc_string += encrypted_char

print(enc_string)

它返回以下结果:

zyxwvutsrqponlkjihgfedcba

正如约翰在评论中指出的那样。字符已经被更改为字母表中的镜像字母。

  • a 变成 z
  • b 变成 y
    . . .

依此类推...

英文:

Basically this line of code gives the mirror letter of the alphabet...

You can inspect this line of code with the following:

characters = 'abcdefghijklmopqrstuvwxyz'

enc_string = ''
for char in characters:
    encrypted_char = chr(122 - (ord(char) - 97))
    enc_string += encrypted_char

print(enc_string)

Which returns this:

zyxwvutsrqponlkjihgfedcba

Which is exactly as John pointed out in the comment. The characters have been changed to the mirror letters in the alphabet.

  • a becomes z
  • b becomes y
    . . .

and so on...

huangapple
  • 本文由 发表于 2023年8月9日 02:30:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/76862295.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定