PTA_python3_jmu-python-凯撒密码加密算法

编写一个凯撒密码加密程序,接收用户输入的文本和密钥k,对明文中的字母a-z和字母A-Z替换为其后第k个字母。

输入格式:

接收两行输入,第一行为待加密的明文,第二行为密钥k。

输出格式:

输出加密后的密文。

输入样例:

在这里给出一组输入。例如:

Hello World!
3

输出样例:

在这里给出相应的输出。例如:

Khoor Zruog!

代码:

# jmu-python-凯撒密码加密算法
# Author = YeHuai

# ord() 字母转换数字; chr() 数字转换字母
# a-z: 97-122; A-Z: 65-90

plai = input()  # 明文
key = int(input())  # 密钥
ciph = ''  # 密文

for i in plai:
    if i.isalpha():  # isalpha() 判断是否为字母
        temp = ord(i) + key  # 凯撒加密
        if chr(temp).isalpha():
            ciph += chr(temp)
        else:
            ciph += chr(temp - 26)
    else:
        ciph += i  # 复制明文非字母符号

print(ciph)

运行:

PTA验证:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,以下是一个凯撒密码加密程序的示例代码: ```python def caesar_cipher(text, k): result = "" for char in text: # 如果是小写字母,对其进行替换 if char.islower(): result += chr((ord(char) - ord('a') + k) % 26 + ord('a')) # 如果是大写字母,对其进行替换 elif char.isupper(): result += chr((ord(char) - ord('A') + k) % 26 + ord('A')) # 如果不是字母,直接加入结果 else: result += char return result # 测试程序 text = input("请输入明文:") k = int(input("请输入密钥k:")) cipher_text = caesar_cipher(text, k) print("加密后的密文为:", cipher_text) ``` 这个程序接收用户输入明文密钥k,对明文的小写字母和大写字母进行凯撒密码加密,其小写字母的替换范围是a-z,大写字母的替换范围是A-Z。加密后的密文将输出到屏幕上。 ### 回答2: 凯撒密码是一种简单的加密方法,它利用字母每个字母后面的k个字母进行替换来进行加密。在这种加密方法字母表可能会被循环使用,因此z后面的下一个字母不是a而是b。 要编写一个凯撒密码加密程序,需要接收两个输入:待加密文本密钥k。在这个程序,我们需要对输入文本的每个字母进行替换,并将替换后的结果输出为加密后的文本。 首先,我们需要定义一个字母表,包含所有a到z的字母。然后,我们需要定义一个加密函数,根据密钥k来实现字母的替换。 加密函数的具体实现方法是,对于输入的每个字母,我们需要将其转换为ASCII码,然后将其加上密钥k。如果加上k后的ASCII码超出了字母字母的范围,我们需要将其归位到字母,并将其转换为相应的字母。替换后的字母将构成加密文本。 下面是一个凯撒密码加密程序的简单实现: ```python import string # 定义字母表 alphabet = string.ascii_lowercase # 定义加密函数 def caesar_encrypt(text, key): # 初始化加密文本 encrypted_text = "" # 对文本的每个字符进行加密 for char in text: # 如果是小写字母,则进行加密 if char.isalpha() and char.islower(): # 计算加密后的字符 encrypted_char = chr(((ord(char) - 97 + key) % 26) + 97) # 将加密后的字符添加到加密文本 encrypted_text += encrypted_char else: # 如果不是小写字母,则直接添加到加密文本 encrypted_text += char return encrypted_text # 测试加密函数 text = input("请输入加密文本:") key = int(input("请输入加密密钥:")) encrypted_text = caesar_encrypt(text, key) print("加密后的文本:", encrypted_text) ``` 在这个程序,我们首先定义了字母表,然后定义了加密函数`caesar_encrypt`。这个函数接收两个输入:待加密文本加密密钥。在函数,我们对文本的每个字符进行判断,如果是小写字母,则进行加密;如果不是小写字母,则直接添加到加密文本加密过程,我们首先将每个字符转换为其ASCII码,然后将其加上密钥k,最后将其还原为相应的字母并添加到加密文本。如果加密后的字符超出了字母表的范围,则需要将其归位到字母,这个过程使用了取模运算。 在这个程序,我们使用了Python的字符串函数`isalpha`和`islower`来判断字符是否是小写字母。函数`chr`将ASCII码转换为字符,函数`ord`将字符转换为ASCII码。 测试程序时,我们需要输入加密文本加密密钥程序将输出加密后的文本。如果输入文本包含非小写字母的字符,这些字符将原样输出。 ### 回答3: 凯撒密码是一种古老的加密方法,它使用一个固定的数字k来将明文字母移动k个位置,生成密文。为了编写一个凯撒密码加密程序,我们可以按照以下步骤进行: 1. 创建一个接受用户输入的函数,包括明文密钥k 我们需要一个函数来接受用户输入,并在接收输入后开始执行加密程序。在这里,我们需要使用Python来接受用户输入,我们通过使用input()函数和变量来记录输入文本密钥k。 2. 创建一个函数来加密明文 我们需要一个加密函数来将输入明文加密。在这个函数,我们需要使用ASCII码表将字母转换为数字,并使用密钥k将它们移动到正确的位置上。为此,我们需要使用Python内置的ord()和chr()函数。 3. 将加密后的结果返回给用户 我们需要将加密后的结果输出给用户。这可以通过使用Python的print()函数完成。 下面是一个实现凯撒密码加密Python程序: def caesar_cipher(text, k): result = "" # 遍历输入文本的所有字符 for i in range(len(text)): char = text[i] # 如果字符是小写字母,使用ASCII码表将它转换为数字 if char.islower(): num = ord(char) - 97 # 将数字进行移位 num = (num + k) % 26 # 将数字转换回字母,并将加密的结果添加到结果字符串 result += chr(num + 97) # 如果字符是大写字母,执行类似的操作 elif char.isupper(): num = ord(char) - 65 num = (num + k) % 26 result += chr(num + 65) # 如果字符不是字母,则直接将它添加到结果字符串 else: result += char return result # 从用户那里获取输入文本密钥k text = input("请输入加密文本: ") k = int(input("请输入密钥k的值: ")) # 执行加密程序,并输出结果 print("加密后的结果为:", caesar_cipher(text, k)) 在这个程序,我们使用了一个for循环来遍历输入文本的每个字符。对于每个字符,我们首先使用islower()和isupper()函数来判断它是否是小写字母或大写字母。如果是,我们使用ord()函数将它转换为数字,并进行移位和转换,然后将加密后的结果添加到结果字符串。如果不是字母,则直接将它添加到结果字符串。最后,我们将加密后的结果返回给用户

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值