3 月 132021
 
"""
凯撒密码
"""
# 导入模块
import pyperclip

# 待加密信息字符串赋值变量
message = 'This is my secret message.'
# message = 'guv6Jv6Jz!J6rp5r7Jzr66ntrM'
# 指定密钥赋值变量
key = 13
# 指定模式为加密或解密并赋值变量
mode = 'encrypt'
# mode = 'decrypt'
# 定义字符并赋值变量
SYMBOLS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890 !?.'
# 定义空字符串赋值变量以存储加解密后的信息
translated = ''

# 定义for循环,遍历待加密消息字符串的每一个字符并赋值变量
for symbol in message:
    # 判断,当待加密消息字符串中字符存在于定义字符集(True)时则执行
    if symbol in SYMBOLS:
        # 使用字符串find()方法在字符串中查找子字符串所在索引值并赋值变量
        # https://docs.python.org/3/library/stdtypes.html#str.find
        symbolIndex = SYMBOLS.find(symbol)

        # 判断当前操作模式为加密或者是解密
        if mode == 'encrypt':
            # 加密模式下,索引值加上密钥值赋值给变量(向后移动)
            translatedIndex = symbolIndex + key
        elif mode == 'decrypt':
            # 解密模式下,索引值减去密钥值赋值给变量(向前移动)
            translatedIndex = symbolIndex - key

        # 判断加解密后字符索引值值大于等于自定义字符集长度值
        if translatedIndex >= len(SYMBOLS):
            # 加解密后字符索引值减去自定义字符集长度并重新赋值给加解密后字符索引值
            translatedIndex = translatedIndex - len(SYMBOLS)
        # 判断加解密后字符索引值小于0时
        elif translatedIndex < 0:
            # 加解密后字符索引值加上自定义字符集长度并重新赋值给加解密后字符索引值
            translatedIndex = translatedIndex + len(SYMBOLS)

        # 使用空字符串值依次拼接使用加解密后字符索引值在自定义字符集中的字符并重新赋值给变量
        translated = translated + SYMBOLS[translatedIndex]

    # 当遍历的待加解密字符不存在于字符集时
    else:
        # 使用空字符串值依次拼接使用遍历的原始字符并重新赋值给变量(即不存在的字符不做加解密)
        translated = translated + symbol

# 打印加解密后的拼接字符串
print(translated)
# 调用模块,将结果复制到剪贴板
3 月 132021
 
"""
反向密码
"""

# 待加密消息字符串赋值变量
message = 'Three can keep a secret, if two of them are dead.'
# 空字符串赋值变量用以存储反转后的加密信息
translated = ''

# 计算待加密消息字符串长度减1并赋值变量i作为字符串最后一个字符的索引值
i = len(message) - 1
# 定义while循环,直到i小于0(False)时终止
while i >= 0:
    # 当前变量值拼接待加密消息字符串索引字符并赋值给变量
    translated = translated + message[i]
    # 打印每一次循环
    print('i is ', i, ', message i is ', message[i], ', translated is ', translated)
    # 执行i减1并将值重新赋值给变量i
    i = i - 1

# 结束循环后打印反转后的加密信息
print(translated)
3 月 022021
 
"""
使用scatter()绘制一系列点
"""
import matplotlib.pyplot as plt

# 向scatter()传递两个分别包含x值和y值的列表
x_values = [1, 2, 3, 4, 5]
y_values = [1, 4, 9, 16, 25]

# 列表传递给scatter()时,依次从每个列表中读取一个值来绘制一个点
plt.scatter(x_values, y_values, s=100)

# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)

plt.tick_params(axis='both', which='major', labelsize=14)

plt.show()
3 月 022021
 
"""
使用scatter()绘制散点图
"""
import matplotlib.pyplot as plt

# 绘制单个点,使用scatter()函数并传递一对x和y坐标
# plt.scatter(2, 4)
# 设置坐标并指定点的尺寸
plt.scatter(2, 4, s=200)

# 设置图表标题并给坐标轴加上标签
plt.title("Square Numbers", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)

# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)

plt.show()
3 月 012021
 
"""
https://matplotlib.org/stable/index.html
Matplotlib: Visualization with Python
Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.
"""
# 导入模块并指定别名
import matplotlib.pyplot as plt

# 提供输入值,解决x坐标从0开始的问题
input_values = [1, 2, 3, 4, 5]
# 定义平方数列表
square = [1, 4, 9, 16, 25]


# 将列表传递给函数
# plt.plot(square)
# 改善图形可读性,线条加粗
# plt.plot(square, linewidth=5)
# 同时提供输入值列表和输出值列表
plt.plot(input_values, square, linewidth=5)


# 函数title()指定图表标题,参数fontsize指定文字大小
plt.title("Square Numbers", fontsize=24)
# 函数xlable()和ylable()为每条轴设置标题并指定文字大小
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)

# 函数tick_parms()设置刻度样式,并将设置刻度文字大小
# axis n. 轴(旋转物体假想的中心线); (尤指图表中的)固定参考轴线,坐标轴; 对称中心线(将物体平分为二);
plt.tick_params(axis='both', labelsize=14)

# 调用matplotlib查看器,显示绘制的图形
plt.show()