Python判断字符串包含列表元素时报TypeError错误求助
问题原因
- 报错
TypeError: 'in ' requires string as left operand, not list是因为你把in运算符的左右操作数写反了:vowels是列表类型,不能作为左操作数判断是否存在于单个字符word1[i]中,应该调整为判断当前字符是否属于元音列表。 - 除此之外你的代码还有几个逻辑问题:
- 函数内没有使用传入的
FirstWord、SecondWord参数,反而直接读全局的word1、word2,不符合函数封装逻辑 - 找到第一个元音就直接
return,没法收集所有元音的位置,和你需要拼接所有元音下标的需求不符 - 大小写元音列表可以合并,不用分开做两次判断
- 函数内没有使用传入的
修正后的代码
# 用集合存储所有元音,判断成员的效率更高 all_vowels = {"A", "E", "I", "O", "U", "a", "e", "i", "o", "u"} word1 = input("Please input 1st word: ") word2 = input("Please input 2nd word: ") def passcode(first_word, second_word): code_parts = [] # 收集第一个单词的所有元音下标 for idx, char in enumerate(first_word): if char in all_vowels: code_parts.append(str(idx)) # 收集第二个单词的所有元音下标 for idx, char in enumerate(second_word): if char in all_vowels: code_parts.append(str(idx)) # 拼接成完整密码返回 return ''.join(code_parts) result = passcode(word1, word2) print(result)
验证效果
输入Python和Snake时,代码会依次收集到Python里o的下标4,Snake里a的下标2、e的下标4,拼接后输出424,和你给出的示例结果完全匹配。
内容的提问来源于stack exchange,提问作者zаѓатhᵾѕтѓа
相关产品推荐
相关产品推荐

