检查输入中是否有字母
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
我的错误出现在这一行:
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