“in<string>”要求字符串作为左操作数,而不是元组

2024-05-23 18:43:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数来检查字符串是否包含单词,但我一直运行到这个错误'in <string>' requires string as left operand, not tuple我对python相当陌生,所以我不确定它为什么不工作。感谢您的帮助。提前谢谢

def syntaxCheck(s):
    words = ("for", "if", "else", "elif", "while", "def", "not") 
    if words in s:
        print("true")
    else:
        print("false")
syntaxCheck("if while else")

Tags: 函数字符串instringifdef错误not
2条回答

您可以尝试使用s_list = s.split()将字符串转换为单词列表,并在迭代列表并比较每个值后,如下所示:

flag = False
for i in s_list:
    if i in words:
        flag = True

您必须使用循环检查每个单词,而不是一次检查所有单词

有一些助手可以在内部实现循环并完成工作,而不是自己实现循环。例如:any(x in s for x in words)将返回True,如果字符串中有任何单词。您可以这样使用它:

def syntaxCheck(s):
    words = ("for", "if", "else", "elif", "while", "def", "not") 
    if any(x in s for x in words):
        print("true")
    else:
        print("false")

syntaxCheck("if while else")

注意in的两种用法在语法上是不同的。第一个(x in s)是检查字符串x是否在字符串s中。第二个(for x in words)迭代words中的单词,将每个单词分配给变量x以在前半部分中使用

或者,如果需要检查字符串是否仅包含您感兴趣的单词,可以使用all而不是any

def syntaxCheck(s):
    words = ("for", "if", "else", "elif", "while", "def", "not") 
    if all(x in words for x in s.split()):
        print("true")
    else:
        print("false")

syntaxCheck("if while else")

你应该熟悉一下built-in functions,因为你会发现它们非常有用

相关问题 更多 >