为什么在Python中会出现这个错误?类型错误:';在<;字符串>';需要字符串作为左操作数,而不是元组

为什么在Python中会出现这个错误?类型错误:';在<;字符串>';需要字符串作为左操作数,而不是元组,python,Python,我总是遇到同样的错误,我不知道如何使它工作。 这里的问题是您误解了条件 if ('?', '"', ',', '!') in x: 这并不意味着: "If any of these appear in x" 它在x中的意思是“如果这个值元组”。它会给您一个错误,因为“in”不适用于其左侧的元组。您需要将元组分解为值。。。 你可以做: char = ['?', '"', ',', '!'] if any((c in x) for c in char): #do stuff 这将逐个循

我总是遇到同样的错误,我不知道如何使它工作。
这里的问题是您误解了条件

if ('?', '"', ',', '!') in x:
这并不意味着:

"If any of these appear in x"
它在x中的意思是“如果这个值元组”。它会给您一个错误,因为“in”不适用于其左侧的元组。您需要将元组分解为值。。。 你可以做:

char = ['?', '"', ',', '!']
if any((c in x) for c in char):
    #do stuff

这将逐个循环每个值并检查它们是否在x中。在第一眼看到x中的值时,条件将计算为True并进入代码块

您试图检查字符串的元组是否在单个字符串中,python无法理解这一点。您需要类似于
any
all
无代码作为图像的内容。请编辑您的文章,将代码直接复制粘贴到文本中:)您好,欢迎使用stack overflow。有关如何提问和相应更新问题的更多详细信息,请参阅链接。中的
不适用于元组。如果x在(“?”,““,”,“,”,“!”)中,通过将条件中的值交换为
,可以简单地解决此问题
答案的其余部分是一个过多的错误…它不能。这在逻辑上是不合理的。X是一个更大的字符串。除非X是===这些字符中的任何一个,否则它将计算为false。我想指出的是元组不能位于“in”的左侧“我再次不同意你的左右说法,因为它具有误导性。元组可以存在于
运算符中
的左侧,也可以存在于右侧为iterable的情况下。例如,[('1','2')]
中的
('1','2')是有效的语句。希望能有所帮助。运算符左侧可以存在
元组的
列表
,这是对的。不过,这在这里并不太相关,特别是因为x中的
[('1','2')]无论如何都不会做OP希望它做的事情。