# 4. 格式化字符串应用 name = "liuhongquan" age = 21 score = 100 # 使用%操作符格式化 formatted_string1 = "[ ] 今年 [ ] 岁,成绩是 [ d] 分" % (name, age, score) # 使用format()方法格式化 formatted_string2 = "[{}] 今年 [{}] 岁,成绩是 [{}] 分".format(name, age, score) print(f"使用%操作符格式化后的字符串: {formatted_string1}") print(f"使用format()方法格式化后的字符串: {formatted_string2}") # 5. 字符串加密与解密 def encrypt_string(s):#加密函数,将输入字符串中的字母字符按凯撒密码规则向后移动3位(如 a→d,b→e),非字母字符保持不变。 encrypted = "" for char in s: if char.isalpha(): if char.islower(): encrypted += chr((ord(char) - ord('a') + 3) % 26 + ord('a'))#计算字符相对于 'a' 的偏移量,加3后取模26(保证循环),再转回字符。 else: encrypted += chr((ord(char) - ord('A') + 3) % 26 + ord('A')) else: encrypted += char return encrypted def decrypt_string(s): #解密函数,将加密后的字符串还原,即字母向前移动3位(如 d→a,e→b)。 decrypted = "" for char in s: if char.isalpha(): if char.islower(): decrypted += chr((ord(char) - ord('a') - 3) % 26 + ord('a'))#确保负数取模正确 else: decrypted += chr((ord(char) - ord('A') - 3) % 26 + ord('A')) else: decrypted += char return decrypted user_input = input("请输入一个字符串: ") encrypted_result = encrypt_string(user_input) print(f"加密后的字符串: {encrypted_result}") decrypted_result = decrypt_string(encrypted_result) print(f"解密后的字符串: {decrypted_result}")
时间: 2025-07-13 15:44:47 浏览: 10
<think>好的,我现在要回答用户关于Python字符串格式化和凯撒密码加密解密的问题。首先,我需要回忆一下相关知识,确保信息准确。
关于字符串格式化,用户提到了%操作符和format方法。我记得%是传统的格式化方式,类似于C语言的printf。例如,用%s表示字符串,%d表示整数。而format方法更现代,使用{}作为占位符,可以通过位置或关键字参数来替换。需要举例说明两者的基本用法,可能还要提到格式化选项,比如控制小数位数或对齐方式。
接下来是凯撒密码。凯撒密码是一种替换加密技术,每个字母替换为字母表中后面固定位置的字母。例如,移动3位的话,A变成D,Z绕回成C。用户需要加密和解密函数。需要注意的是,处理大小写字母,以及非字母字符保持不变。Python中可以使用ord()和chr()函数来处理字符的ASCII码,然后计算位移后的字符。加密时,每个字母移动3位;解密时则反向移动3位。需要处理边界情况,比如小写z移动3位应该变成c,大写的Z变成C。同时,对于非字母字符,如数字或符号,直接保留原样。
可能需要注意的问题:位移超过26的情况,但用户的问题中凯撒密码固定移动3位,所以暂时不用考虑可变位移。但用户可能想了解更通用的方法,不过根据引用[1],凯撒密码这里确实用了固定第三个字符,所以按照这个来实现。
现在要组织回答结构,先介绍字符串格式化的两种方法,给出代码示例。然后介绍凯撒密码的加密解密实现,同样给出示例代码。确保代码正确,比如在凯撒密码处理时,检查字符是否在字母范围内,再进行移位。例如,对于大写字母,ASCII码范围是65-90,小写是97-122。移动3位时,需要考虑超过Z或z的情况,需要减去26回到字母表开头。
然后生成相关问题,根据用户提供的示例,可能需要包括字符串处理的其他操作、格式化高级用法、凯撒密码的变种或其他加密方法等。
最后,检查是否有引用需要标注。用户提供的引用[1]提到凯撒密码,引用[2]提到字符串处理包括加密,所以在回答凯撒密码部分需要添加引用标识。同时确保使用中文,LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但这个问题中可能涉及较少数学公式,可能不需要用到,但如果有的话要注意格式。
现在开始编写回答部分,确保结构清晰,分步骤说明,代码正确,并自然添加引用。</think>### Python字符串格式化与凯撒密码实现
#### 一、字符串格式化方法
1. **%操作符(传统方法)**
通过占位符(如`%s`、`%d`)实现,语法格式为:`"格式化字符串" % 值`
```python
name = "Alice"
age = 25
print("姓名:%s,年龄:%d" % (name, age)) # 输出:姓名:Alice,年龄:25
print("浮点数:%.2f" % 3.14159) # 输出:浮点数:3.14
```
2. **format方法(推荐)**
使用`{}`作为占位符,支持索引、关键字和格式化规则:
```python
# 位置参数
print("{}的分数是{}".format("Bob", 90)) # 输出:Bob的分数是90
# 关键字参数
print("{name}喜欢{color}".format(name="Tom", color="蓝色"))
# 格式控制
print("圆周率:{:.3f}".format(3.14159)) # 输出:圆周率:3.142
```
---
#### 二、凯撒密码加密与解密
凯撒密码通过将字母循环位移固定值实现加密[^1]。以下实现位移量为3的加密解密函数:
```python
def caesar_encrypt(text):
encrypted = []
for char in text:
if char.isupper():
# 大写字母处理:A(65) -> D(68)
encrypted.append(chr((ord(char) - 65 + 3) % 26 + 65))
elif char.islower():
# 小写字母处理:a(97) -> d(100)
encrypted.append(chr((ord(char) - 97 + 3) % 26 + 97))
else:
# 非字母字符保留原样
encrypted.append(char)
return ''.join(encrypted)
def caesar_decrypt(text):
decrypted = []
for char in text:
if char.isupper():
# 反向位移3:D(68) -> A(65)
decrypted.append(chr((ord(char) - 65 - 3) % 26 + 65))
elif char.islower():
decrypted.append(chr((ord(char) - 97 - 3) % 26 + 97))
else:
decrypted.append(char)
return ''.join(decrypted)
# 示例
plaintext = "Hello, World 2023!"
ciphertext = caesar_encrypt(plaintext) # Khoor, Zruog 2023!
decrypted_text = caesar_decrypt(ciphertext) # Hello, World 2023!
```
---
阅读全文
相关推荐


















