如何为单个单词中的多个字母分别分配对应数字?
解决单词字母转顺序数字的问题
嘿,我来帮你搞定这个需求~你的思路其实是对的,已经成功创建了字母到数字的映射,但问题出在没有遍历输入单词的每个字符,原代码只能处理单个字符的输入,输入单词自然会报错。
问题分析
你的原代码里,print values[user_entry]是直接拿整个输入去字典里找键,但字典的键是单个字母,所以输入"code"这种单词时,字典里没有"code"这个键,就会抛出KeyError。我们需要做的是遍历输入单词的每一个字母,分别获取对应的数字。
修改后的代码
下面是调整后的代码,完美实现你要的功能:
import string # 先完成字母到数字的映射(这部分你写的没问题) values = dict() for index, letter in enumerate(string.ascii_lowercase): values[letter] = index + 1 # 获取用户输入,转成小写兼容大小写输入 user_entry = raw_input("Enter a word: ").lower() # 遍历每个字符,收集对应的数字(过滤非字母字符) letter_numbers = [values[char] for char in user_entry if char in values] # 直观输出每个字母对应的数字 print("每个字母的对应数字:") for char, num in zip(user_entry, letter_numbers): print(f"{char} 对应 {num}")
关键修改点说明
- 加入
.lower():把用户输入转成小写,这样不管输入大写还是小写字母,都能正确匹配字典里的键; - 遍历输入字符:用列表推导式逐个处理每个字母,收集对应的数字;
- 过滤非字母:
if char in values可以避免用户输入空格、符号等非字母字符时出错; - 友好输出:用
zip把字母和数字配对,逐个打印,和你举的"code"例子输出格式一致。
额外提示
如果你用的是Python 3,记得把raw_input改成input(),因为Python 3已经移除了raw_input函数,统一用input()获取用户输入。
内容的提问来源于stack exchange,提问作者Joey
相关产品推荐
相关产品推荐

