Grok Learning中Word2sms的Python代码运行报错求助
问题修复方案
错误根源
报错TypeError: 'builtin_function_or_method' object is not iterable的核心原因:
word.split未加括号,split是字符串的内置方法,必须通过()调用才会返回可迭代的列表;否则wordlist存储的是方法对象本身,无法用于循环遍历。- 完全不需要用
split拆分单词——要逐个处理每个字母,直接遍历原字符串word即可,split默认按空格分割字符串,这里完全用不上。
修正后的代码
# A dictionary containing the letter to digit phone keypad mappings. KEYPAD = { 'A': '2', 'B': '2', 'C': '2', 'D': '3', 'E': '3', 'F': '3', 'G': '4', 'H': '4', 'I': '4', 'J': '5', 'K': '5', 'L': '5', 'M': '6', 'N': '6', 'O': '6', 'P': '7', 'Q': '7', 'R': '7', 'S': '7', 'T': '8', 'U': '8', 'V': '8', 'W': '9', 'X': '9', 'Y': '9', 'Z': '9', } word = input('Enter word: ') # 遍历每个字符,转大写避免小写字母找不到映射 for char in word.upper(): print(KEYPAD[char], end='') # 最后换行 print()
额外优化说明
word.upper():处理用户输入小写字母的情况,避免因KEYPAD中仅存大写键映射导致KeyError。end='':让转换后的数字连续输出,符合短信键盘的转换格式(例如输入"HELLO"会输出"43556")。
内容的提问来源于stack exchange,提问作者ShortWaffles
相关产品推荐
相关产品推荐

