【问题标题】:TypeError: 'in <string>' requires string as left operand, not list (Function)TypeError: 'in <string>' 需要字符串作为左操作数,而不是列表(函数)
【发布时间】:2016-03-03 18:04:11
【问题描述】:
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)

我正在尝试创建一个函数来读取您的输入并使用关键字给出答案。但是错误““TypeError:'in'需要字符串作为左操作数,而不是列表“”不断出现,我似乎可以修复它

【问题讨论】:

  • 你希望if (variableName) in Up.lower():做什么?

标签: python


【解决方案1】:

我认为您的 in 语句的逻辑倒退了。你应该检查一下

if Up.lower() in variableName:

反之亦然。

【讨论】:

    【解决方案2】:

    使用

    if (variableName) in Up.lower():
    

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

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

    if any(s in Up.lower() for s in variableName):
    
    if all(s in Up.lower() for s in variableName):
    
    • 如果variableName 中的字符串s 中的anyUp.lower() 中,则any() 选项将返回True
    • 如果variableName 中的字符串s 中的allUp.lower() 中,则all 选项将返回True

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-11
        • 2021-08-22
        • 2021-07-29
        相关资源
        最近更新 更多