用Python进行简单的加密

输入个人姓名的全拼,输出一串数字,该串数字是由每个字母的序号连接起来的。字母序号从01起算,即a为01,b为02……
例如:姓名为李四,输入为 lisi,则 l 属于第11个字母,i 属于第09个字母,s 属于第19 ,因此输出为110919

获取字符串后,遍历每个字符,然后打印其对应的序号即可。

不过,根据题目a的序号为1这一条,输出字符'l'的序号应为12,而不是11,不知道是不是哪里出错了。

代码如下:

参考链接:


https://blog.csdn.net/dm1901/article/details/129898839

http://ascii.wjccx.com/

https://blog.csdn.net/oJinGangZuan/article/details/127165067


name=input("请输入姓名的全拼:") # 从输入获取一个姓名全拼的字符串

#  https://www.py.cn/jishu/jichu/30507.html
name = name.lower() # 将输入的字符串都转为小写,以便下面计算序号

for ch in name:  # 遍历姓名字符串中每一个字符

    # https://blog.csdn.net/dm1901/article/details/129898839
    # http://ascii.wjccx.com/
    # 把当前字符的ascii码 减去 字符'a'的asci码,再加1,以求出字符的序号
    code=ord(ch)-ord('a')+1
    
    #print("code=",code)
    #  https://blog.csdn.net/oJinGangZuan/article/details/127165067
    # 每个序号两个占位的宽度,一位数序号打印一个前导0
    print('%02d'%(code),end="")

img

你可以使用 Python 的内置函数 ord() 和字符串拼接来实现这个需求。ord() 函数用于获取一个字符的 ASCII 码值,然后你可以将其转换为两位数的字符串表示形式,并将每个字符的字符串连接起来。以下是一个示例代码:

name = input("请输入您的姓名全拼:")

# 将姓名中每个字符的 ASCII 码值转换为字符串,并拼接在一起
result = "".join([f"{ord(c)-96:02}" for c in name.lower() if c.isalpha()])

print(result)


在这个示例中,我们首先使用 input() 函数获取用户输入的全拼姓名,然后使用列表推导式和 join() 方法将每个字母的 ASCII 码值转换为两位数的字符串表示形式,并将它们连接起来。lower() 方法将输入的姓名转换为小写字母,以便在计算 ASCII 码值时,忽略大写字母和小写字母之间的差异。isalpha() 方法用于过滤掉姓名中的非字母字符。

例如,如果用户输入的姓名是 "LiSi",则输出结果为:"110919"。

该程序首先定义了一个encrypt函数,该函数接收一个字符串参数name,并返回一个数字序列字符串。在函数中,我们遍历输入字符串的每个字符,如果该字符是字母,则计算其对应的序号并将其添加到结果字符串中。使用ord函数可以获取字符的ASCII码值,然后通过减去96来计算出字母的序号。使用zfill函数可以将单个数字填充为两位数。最后,我们从用户输入中获取姓名的全拼,并调用encrypt函数将其加密为数字序列,并将结果输出。

def encrypt(name):
    result = ""
    for letter in name:
        if letter.isalpha():
            index = ord(letter.lower()) - 96
            result += str(index).zfill(2)
    return result
name = input("请输入姓名的全拼:")
print(encrypt(name))