3、编写一个Python程序,要求用户输入一个字符串,然后统计并打印出该字符串中每个单词的长度(以空格分隔的单词)。
时间: 2024-12-15 22:25:07 浏览: 101
当然,这是一个简单的Python程序,用于接收用户输入的字符串,然后分割成单词并对每个单词的长度进行计数:
```python
def word_lengths():
# 获取用户输入
user_input = input("请输入一个字符串:")
# 使用split()方法按空格分割字符串为单词列表
words = user_input.split()
# 遍历单词列表,计算每个单词的长度并存储在一个字典中
word_lengths_dict = {word: len(word) for word in words}
# 打印每个单词及其长度
print("单词 | 长度")
print("-------|-----")
for word, length in word_lengths_dict.items():
print(f"{word:<8} | {length}")
# 调用函数运行程序
word_lengths()
```
在这个程序中,`input()`函数用来获取用户的输入,`split()`方法按照空格将输入字符串拆分为单词。我们使用字典来存储每个单词及其对应的长度,键是单词,值是长度。最后,我们遍历这个字典并打印结果。
相关问题
用Python语言完成下列要求1.编写程序,让用户输入字符串,计算其长度、提取首尾字符、转换为大小写并输出结果; 2.让用户输入长字符串和子字符串,查找子串首次出现位置(找到输出索引,未找到输出提示),将长串中所有子串替换为新串并输出结果; 3.分割与连接:输入单词间以空格分隔的字符串,用split()分割成列表,再用join()以'-'连接成新串,输出分割后的列表与连接后的字符串; 4.格式化应用,定义变量保存姓名、年龄和成绩。使用格式化字符串的两种方法(%操作符和format()方法),将这些变量的值插入到一个模板字符串中,如 [姓名]今年[年龄]岁,成绩是[成绩]分 ,并分别输出格式化后的字符串; 加密与解密,设计一个简单的字符串加密和解密程序。加密规则为将每个字符的ASCII码值加3(如果超过z或Z,则循环到字母表开头)。用户输入一个字符串,程序输出加密后的字符串,然后再对加密后的字符串进行解密并输出。
<think>好的,我现在需要帮助用户解决关于Python字符串处理和加密解密的问题。用户希望得到完整的示例代码,涵盖字符串长度计算、首尾字符提取、大小写转换、子串查找替换、字符串分割与连接,以及简单加密解密的功能。让我先理清用户的需求,然后一步步思考如何实现。
首先,用户提到的几个功能点都很基础,属于字符串处理的常见操作。我需要确保每个功能都有对应的代码示例,并且代码要简洁易懂。另外,加密解密部分用户提到“简单”,可能指的是基础的加密方法,比如凯撒密码或者替换加密。
接下来,我需要逐一处理每个功能点:
1. **字符串长度计算**:Python中使用len()函数,这部分很简单,直接给出示例即可。
2. **首尾字符提取**:可以通过索引,比如s[0]和s[-1],或者切片操作s[:1]和s[-1:],需要注意字符串为空的情况,但用户可能不需要处理异常,示例中可以假设字符串非空。
3. **大小写转换**:有upper()、lower()、capitalize()、title()等方法,需要展示常用的几个。
4. **子串查找替换**:find()或index()方法查找,replace()替换。要注意区分find和index的不同(是否抛出异常),但用户可能只需要基础用法,用find更安全,返回-1表示未找到。
5. **字符串分割与连接**:split()和join()方法,可能需要展示split的不同参数,比如按空格分割,或者按特定字符分割,以及连接列表为字符串。
6. **简单加密解密**:凯撒密码是个不错的选择,移位加密。加密函数将每个字符移动固定位数,解密则反向移动。需要处理字母范围,比如只处理A-Z和a-z,其他字符保持不变。此外,可以考虑使用base64作为另一种简单加密,虽然严格来说不是加密而是编码,但用户可能接受。
现在,我需要检查是否有遗漏的功能点,并确保代码正确。例如,首尾字符提取是否需要处理多字符的情况?用户问题中的例子是提取首尾字符,所以每个提取一个字符即可。
对于加密解密,凯撒密码实现起来简单,但要注意移位时的循环,比如z后移一位变成a。可以使用模运算处理。Base64编码解码则更简单,但需要导入base64模块,用户可能希望不依赖太多库,所以两种方法都提供可能更好。
在代码示例中,需要添加注释说明每一步的作用,方便用户理解。此外,可能需要测试代码,确保没有语法错误和逻辑错误。
例如,凯撒密码的加密函数中,对于字符的处理:
- 检查字符是否是字母。
- 确定是upper还是lower。
- 计算移位后的字符,使用ord和chr函数。
- 处理超出字母范围的情况,比如z+3应该变成c。
这部分可能需要仔细编写,确保正确性。
另外,在字符串替换时,用户可能需要全局替换,所以replace()的count参数设为-1(默认就是替换所有出现的位置)。
关于字符串分割与连接,示例中使用split(',')分割,然后用join连接,这样的例子比较直观。
现在,将这些思路整理成代码,并按照用户的要求,结构清晰,分步骤说明。
最后,生成相关问题,可能需要涉及字符串处理的其他方法,加密解密的更复杂方法,或者性能优化等。
检查引用内容,用户提供的引用中有关于rsplit()、字符串方法、lambda表达式等,但当前问题不需要这些,不过可以引用已有的内容,比如在分割字符串时提到split()和rsplit()的区别,但用户的问题中没有提到,可能不需要。因此,主要关注用户提到的功能点即可。
总结:代码示例需要覆盖所有提到的功能点,每个部分简洁明了,注释清晰,确保运行正确。加密解密部分提供两种方法,凯撒密码和base64,满足不同简单需求。</think>以下是为您整理的Python字符串处理与加密解密完整示例代码,包含六大常用功能模块:
### 一、字符串基础操作
```python
# 字符串定义
s = "Hello,Python!"
# 1. 长度计算
length = len(s) # $len(s)$
print(f"长度:{length}") # 输出:13
# 2. 首尾字符提取
first_char = s[0] # 首字符
last_char = s[-1] # 尾字符
print(f"首字符:{first_char},尾字符:{last_char}") # H和!
# 3. 大小写转换
upper_str = s.upper() # 全大写
lower_str = s.lower() # 全小写
print(f"大写:{upper_str},小写:{lower_str}")
```
### 二、子串操作与格式处理
```python
# 4. 子串查找与替换
sub_index = s.find('Py') # 查找子串位置
new_str = s.replace('o', '🍎', 1) # 替换第一个'o'
print(f"查找位置:{sub_index},替换结果:{new_str}") # 位置7,Hella,Python!
# 5. 分割与连接
split_list = "apple,banana,orange".split(',') # 按逗号分割
joined_str = '-'.join(split_list) # 用-连接
print(f"分割结果:{split_list},连接结果:{joined_str}")
```
### 三、加密解密实现
#### 方法1:凯撒密码(位移加密)
```python
def caesar_encrypt(text, shift):
result = []
for char in text:
if char.isalpha():
base = ord('A') if char.isupper() else ord('a')
result.append(chr((ord(char) - base + shift) % 26 + base))
else:
result.append(char)
return ''.join(result)
def caesar_decrypt(text, shift):
return caesar_encrypt(text, -shift)
# 示例
original = "Python3.9!"
encrypted = caesar_encrypt(original, 3) # $+3$位移
decrypted = caesar_decrypt(encrypted, 3)
print(f"加密:{encrypted},解密:{decrypted}") # Sbwkrq3.9! 还原
```
#### 方法2:Base64编码(非加密但常用)
```python
import base64
def base64_encode(s):
return base64.b64encode(s.encode()).decode()
def base64_decode(s):
return base64.b64decode(s).decode()
# 示例
encoded = base64_encode("SecretMessage")
decoded = base64_decode(encoded)
print(f"Base64编码:{encoded},解码:{decoded}")
```
### 四、进阶技巧
```python
# 使用lambda表达式处理字符串
process_str = lambda s: s[:3] + s[-3:] # 取前3后3字符
print(process_str("abcdefgh")) # abcfgh
# 正则表达式查找替换(需import re)
import re
hidden_phone = re.sub(r'(\d{3})\d{4}(\d{4})', r'\1****\2', "手机号13812345678")
print(hidden_phone) # 138****5678
```
§§
1. 如何用Python实现字符串的模糊匹配?[^3]
2. 字符串处理中如何处理中英文混合编码问题?[^4]
3. 凯撒密码在什么场景下容易失效?[^2]
4. 如何用rsplit()方法实现从右向左分割字符串?[^1]
5. Python中哪些字符串方法支持正则表达式?[^5]
: rsplit()方法支持指定分割方向和次数
[^2]: 当位移量超过字符集范围时需取模处理
: 字符串交叉处理可通过双指针算法实现
[^4]: 建议使用unicodedata模块处理编码问题
: re模块提供完整正则表达式支持
编写一个python程序,设定输入的单词个数,并返回其中长度最长的单词
好的,以下是一个简单的Python程序,可以实现你要求的功能:
```python
def find_longest_word(words, n):
longest_word = ""
for i in range(n):
word = words[i]
if len(word) > len(longest_word):
longest_word = word
return longest_word
n = int(input("请输入单词个数:"))
words = []
for i in range(n):
word = input("请输入第{}个单词:".format(i+1))
words.append(word)
longest_word = find_longest_word(words, n)
print("长度最长的单词是:", longest_word)
```
程序首先要求输入单词的个数,然后循环读取每个单词,并调用 `find_longest_word` 函数来查找最长的单词。函数 `find_longest_word` 接受两个参数:一个单词列表 `words` 和单词的个数 `n`,它会遍历这个列表,找到其中长度最长的单词并返回。
注意,这里假设输入的单词不会包含空格或其他分隔符,如果需要处理这种情况,可以使用 `split` 函数把输入的字符串分割成单词列表。
阅读全文
相关推荐

















