检查输入中是否有字母

Checking if input has letters in it

我的错误出现在这一行:

if exclude3 not in Sent:

它是:

TypeError: 'in <string>' requires string as left operand, not set

我的代码是:

import string

Word = input("Please give a word from the sentence")

exclude3 = set(string.ascii_letters)

if exclude3 not in Sent:
    print("")
elif exclude3 not in Word:
    print("")
else:

什么是左操作数?我做错了什么,有没有更简单的方法来完成我想要的?我应该使用 in 以外的东西吗?

exclude3 不是 string,而是 set
您尝试使用 in 运算符来检查 set 是否包含在另一个 set 中,这是错误的。

也许你打算写:if Sent not in exclude3 ?

您需要检查集合和字符串是否重叠。要么

if not exclude3.intersection(Sent):

if not any(x in Sent for x in exclude3):

会有想要的结果。

in 运算符通过测试左侧参数是否是右侧参数的元素来工作。例外是 str1 in str2,它测试左侧 str 是否是另一个 子串

当您使用 in 操作数时,左侧和右侧对象必须是同一类型。在这种情况下 exclude3 是一个 set 对象,您无法检查它在字符串中的成员资格。

示例:

>>> [] in ''
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not list

如果你想检查一个字符串中的所有项目是否存在,你可以使用 set.intersection() 如下:

if exclude3.interection(Sent) == exclude3:
      # do stuff

对于任何交叉点,只需检查 exclude3.interection(Sent):

的验证
if exclude3.interection(Sent):
     # do stuff