移位变换函数

函数输入设置为明文与移动位数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# Caesar
def shift_transform(input_m, shift):
# 移位变换函数(输入明文以及移位数)
output_c = ""
# 定义初始的输出字符串为空
for i in range(len(input_m)):
char = input_m[i]
# 区分大小写后进行移位变换
if char.isupper():
# 大写字母的ASCII从65开始
output_c += chr((ord(char) + shift - 65) % 26 + 65)
else:
# 小写字母的ASCII从97开始
output_c += chr((ord(char) + shift - 97) % 26 + 97)
return output_c

在python中,ord( )函数返回一个表示特定字符的Unicode字符的整数。这个函数接受一个字符串参数(长度为1),并返回其Unicode码点。
1
2
3
4
5
# 例如:
print(ord('a')) # 输出: 97
print(ord('A')) # 输出: 65
print(ord('1')) # 输出: 49
print(ord('@')) # 输出: 64

这些数字是字符在Unicode标准中的位置。

实验测试

1
2
3
4
5
Message_test = "zaizhelishurunixiangyaodemingwenxinxi"  # 在这里输入你想要的铭文
shift_num = 10 # 在这里设置移位数
print("原始字符串为: " + Message_test)
print("移位数: " + str(shift_num))
print("移位变换后的字符串为: " + shift_transform(Message_test, shift_num))

测试结果

1
2
3
原始字符串为: zaizhelishurunixiangyaodemingwenxinxi
移位数: 10
移位变换后的字符串为: jksjrovscrebexshskxqikynowsxqgoxhsxhs