为什么字符串对象上出现属性错误?

2024-09-30 00:39:15 发布

您现在位置:Python中文网/ 问答频道 /正文

根据学生所在的教室,我想返回两个值中的一个,并将其分配给变量名“scoremultiplier”,该变量随后将在代码的其他地方使用。然而,我对这一点还是相当陌生,在执行代码的第一个场景之后,我遇到了以下错误消息:AttributeError: 'str' object has no attribute 'isin'

import numpy as np

pupil = 'Tom'

classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John']

classroom_B = ['Steve', 'Joe', 'Jose', 'Pam', 'Paul']

scenario = [((pupil.isin(classroom_A )) & (~pupil.isin(classroom_B ))),
            ((pupil.isin(classroom_B )) & (~pupil.isin(classroom_A )))]

result = [3,1]

scoreMultiplier = np.select(scenario , result, default='')

print(scoreMultiplier)

什么是最好的方式使这项工作

非常感谢


Tags: 代码地方np场景result学生scenariotom
2条回答

您的想法是正确的,但使用了错误的函数。str对象没有isin()函数。您应该使用关键字in,在列表的情况下,检查列表是否包含给定的对象(在其他情况下,它调用对象的__contains__()函数)。在使用boolean而不是按位运算符时,还应该使用Python的二进制运算符(andornot)。因此,这意味着将代码的这一部分更改为以下内容:

scenario = [pupil in classroom_A and pupil not in classroom_B,
            pupil in classroom_B and pupil not in classroom_A]

检查此代码:

import numpy as np

pupil = 'Tom'

classroom_A = ['Peter', 'Greg', 'Susan', 'Tom', 'John']

classroom_B = ['Steve', 'Joe', 'Jose', 'Pam', 'Paul']

scenario = [pupil in classroom_A and pupil not in classroom_B,
            pupil in classroom_B and pupil not in classroom_A]

result = [3,1]

scoreMultiplier = np.select(scenario , result, default='')

print(scoreMultiplier)

相关问题 更多 >

    热门问题