为何这段代码无法判断wordToList[0]是否为元音字母?
问题排查与修复
核心问题
你的代码判断逻辑出错了:
if (wordToList[0] == vowels):
这里是把字符串的第一个字符(单个元素)和整个元音列表(多个元素)做相等比较,这种情况永远不会成立,所以无法触发后续的追加-way逻辑。
修复后的代码
把判断条件改成用in运算符,检查首字符是否存在于元音列表中:
def ecrypt(w): vowels = ["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"] wordToList = list(w) if wordToList[0] in vowels: # 用in替代==,判断字符是否在列表内 w = w + "-way" return w
额外优化建议
- 无需将字符串转成列表,直接通过
w[0]获取首字符,代码更简洁:def ecrypt(w): vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"} # 用集合查询效率更高 if w[0] in vowels: w = w + "-way" return w - 增加空字符串判断,避免输入空值时抛出索引错误:
def ecrypt(w): if not w: return w vowels = {"a", "e", "i", "o", "u", "A", "E", "I", "O", "U"} if w[0] in vowels: w = w + "-way" return w
内容的提问来源于stack exchange,提问作者micheal cay
相关产品推荐
相关产品推荐

