Python练习题: 利用chr()与ord()函数实现恺撒密码

本文介绍了一种使用Python编程语言实现恺撒密码加密方法的简易程序。通过利用chr()和ord()函数,程序能够对输入的字符串进行加密,其中大小写字母会根据恺撒密码的规则进行替换,而空格和特殊符号则保持不变。

Python练习题: 利用chr()与ord()函数实现恺撒密码

Python练习题: 利用chr()与ord()函数实现恺撒密码

恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬

假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。

利用字符串处理函数ord()来获取编码,经过运算后,再使用chr() 返回对应字符,简化了程序。但总认为还可以再简化,欢迎大家来讨论。

hanStr = input()
for i in range(len(hanStr)):
    m = ord(hanStr[i])
    if m in range(65,88) or m in range(97,120) :
        print(chr(m+3),end='')
    elif  m in range(88,91) or m in range(120,123) :
        print(chr(m - 23), end='')
    else:
        print(hanStr[i], end='')
### Python `ord()` `chr()` 函数使用方法 #### 1. 函数概述 `ord()` `chr()` 是用于字符整数(通常是ASCII或Unicode码位)之间相互转换的内置函数。这两个函数在处理字符编码时非常有用,尤其是在涉及文本处理的应用程序中[^2]。 #### 2. `ord()` 函数详解 `ord()` 接受单个字符作为参数并返回对应的整数值,该值代表给定字符的Unicode码点,在ASCII范围内即为相应的ASCII码。这意味着对于任何有效的单一字符输入,此函数都会提供一个唯一的数字表示形式[^3]。 ```python print(ord('A')) # 输出: 65 print(ord('a')) # 输出: 97 ``` #### 3. `chr()` 函数详解 相反地,`chr()` 将接受一个整数参数,并返回之相对应的字符。这个过程实际上是`ord()`操作的逆向版本;它能够把由`ord()`产生的整数重新变回原始字符[^4]。 ```python print(chr(65)) # 输出: A print(chr(97)) # 输出: a ``` #### 4. 实际应用场景 为了更直观地展示这两个函数的工作原理及其潜在用途,下面给出了一些具体的例子: - **基本转换** ```python for i in range(65, 68): # ASCII values for 'A' to 'C' char = chr(i) ascii_val = ord(char) print(f"Character {char} has ASCII value {ascii_val}") ``` - **字符串遍历** 当需要逐字分析字符串或将整个字符串映射到其各自的ASCII/Unicode码时,可以组合使用这些功能来实现目标[^1]。 ```python text = "Hello" encoded_text = [str(ord(c)) for c in text] decoded_text = ''.join([chr(int(code)) for code in encoded_text]) print(encoded_text) # ['72', '101', '108', '108', '111'] print(decoded_text) # Hello ``` 通过上述实例可以看出,掌握好`ord()``chr()`不仅有助于加深对Python内部工作机制的理解,而且可以在实际项目开发过程中发挥重要作用。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值