作者:小5聊基础
简介:一只喜欢全栈方向的程序员,欢迎咨询,尽绵薄之力答疑解惑
编程原则:Write Less Do More
编号 | 语言或插件 | 修饰符 | 说明 |
---|---|---|---|
1 | python | math.pow(x,y) | 次方,math.pow(3,2),3的2次方,就是9 |
2 | python | math.sqrt(x) | 平方根,math.sqrt(9)=3 |
【什么是恺撒密码】
1)在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术
2)它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文
3)加密逻辑:例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推
4)解密逻辑:恺撒密码的解密算法程序首先接收用户输入的加密文本,然后对字母a-z和字 母A-Z按照密码算法进行反向转换
5)位移边界需要注意
例如:正向移位三位,则x变为了a,y变为了b,z变成了c
而反向移位(向后移动),则a变成了x,b变成了y,c变成了z,d变成了a
【凯撒加密算法程序编写】
1)函数名定义为:def Caesar_cipher(n,rawstr)
其中,n表示移位数量,rawstr表示用户输入的原文
2)输入输出逻辑
先判断字符串中的字符是否在列表中,如果在,则移位n,如果不在,则原样输出
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2022.06.20 11:54
import sys
# 先判断字符串中的字符是否在列表中,如果在,则移位n,如果不在,则原样输出
def Caesar_cipher(n,rawstr):
new_str = ''
str_list = 'abcdefghijklmnopqrstuvwxyz'
max_index = len(str_list) - 1
alpha = list(str_list)
for value in rawstr:
if value in alpha:
index = str_list.find(value)
next_index = index + n
if next_index > max_index:
next_index = next_index % max_index - 1
new_str+=alpha[next_index]
else:
new_str+=value
return new_str
while True:
str_1 = input('请输入原文')
n = int(input('请输入你所需要移位的数值'))
cipher = Caesar_cipher(n,str_1)
print(f'移位{n}后,密文为{cipher}\r\n')
【什么是欧几里得度量】
1)欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义
2)三维空间里点a和b的坐标,如果分别为a(x1,y1,z1)、b(x2,y2,z2),则ab的距离的计算机公式是
【欧氏距离实现代码编写】
1)通过上面公式可知,只要确定三位空间的两个坐标点的xyz轴的值,即可通过公式得到两点的距离
2)效果和代码编写如下
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 2022.06.20 12:19
import sys
import math
def O_dis(a,b):
new_str = 0
# 公式:√(x1-x2)^2+(y1-y2)^2+(z1-z2)^2
# math.sqrt(x) > math.sqrt(9) = 3 > 3^2
# math.pow(3,2) > 3的2次方
arr_b = b.split(',')
arr_a = a.split(',')
x1 = int(arr_a[0])
y1 = int(arr_a[1])
z1 = int(arr_a[2])
x2 = int(arr_b[0])
y2 = int(arr_b[1])
z2 = int(arr_b[2])
new_str = math.sqrt(math.pow(x1 - x2,2) + math.pow(y1 - y2,2) + math.pow(z1 - z2,2))
return new_str
while True:
a = input('请输入第一个位置的坐标xyz,用逗号分开')
b = input('请输入第二个位置的坐标xyz,用逗号分开')
value = O_dis(a,b)
print(f'欧氏距离的值是{value}\r\n')