TypeError:&#39;在<string>&#39;需要字符串作为左操作数,而不是列表(函数)

时间:2016-03-03 18:04:11

标签: python

variableName=["display","screen","sound""audio"]
fileName=["PPP", "Abc"]
P1="PPP"
d="display"
s="screen"
ss="sound"
a="audio"
d=P1
loop=True
def CH(variableName, fileName, loop):
    while loop==True:
        Up=input("What is your problem?\n")
        if (variableName) in Up.lower():
            file = open(fileName + ".txt", "r")
            whole= file.read()
            print(whole)
            file.close()
            loop=False
        else:
            loop=True
            continue**

CH(variableName, fileName, loop)

我正在尝试创建一个函数来读取您的输入并使用关键字给出答案。但错误&#34;&#34; TypeError:&#39; in&#39;需要字符串作为左操作数,而不是列表&#34;&#34;不断上升,我似乎可以解决它

3 个答案:

答案 0 :(得分:2)

我认为你的in陈述的逻辑是向后的。你应该检查

if Up.lower() in variableName:

不是相反。

答案 1 :(得分:0)

如果variableName是一个列表,您可以使用.__contains__()检查成员身份。

尝试将if语句更改为if variableName.__contains__(Up.lower):

答案 2 :(得分:0)

使用

if (variableName) in Up.lower():

....测试字符串tuple中是否存在(variableName) Up.lower()

由于variableName实际上是一个字符串列表,根据您要实现的目标,您可能希望使用以下其中一个:

if any(s in Up.lower() for s in variableName):

if all(s in Up.lower() for s in variableName):
  • 如果any()True的{​​{1}} any位于svariableName选项将返回Up.lower()
  • 如果allTrue的{​​{1}} all位于svariableName选项将返回Up.lower()