Python 3中用reverse()实现回文判断触发TypeError,如何解决?
嘿,我来帮你排查这个问题!你遇到的TypeError其实是两个小细节没处理对,咱们一步步拆解解决:
问题1:split()方法用错了场景
你写的word.split()是用来按空格分割字符串的,如果输入的是单个单词(比如level),它会返回一个只有一个元素的列表["level"],而不是把每个字符拆成单独的元素。要把字符串转成单个字符组成的列表,应该用list(word),这样每个字符都会成为列表的独立项。
问题2:reverse()方法的返回值是None
list.reverse()是原地修改原列表的方法,它不会返回反转后的新列表。所以你执行b = wordLetters.reverse()时,变量b实际被赋值成了None,这就导致后面''.join(b)报错——join()需要接收可迭代对象(比如列表),但None显然不是。
修正后的两种方案
方案1:修复列表操作的问题
word = input('Give me a word:\n') wordLetters = list(word) # 将字符串转为字符列表 wordLetters.reverse() # 原地反转列表(此时原列表已经被修改) word2 = ''.join(wordLetters) if word == word2: print('Yay') else: print('heck')
方案2:用切片直接反转字符串(更简洁高效)
其实Python里反转字符串根本不需要转列表,用切片语法一步就能搞定:
word = input('Give me a word:\n') word2 = word[::-1] # [::-1]表示从后往前遍历整个字符串,直接得到反转结果 if word == word2: print('Yay') else: print('heck')
内容的提问来源于stack exchange,提问作者SnakesCantWearBoots
相关产品推荐
相关产品推荐

