没有IN运算符的List的值如何

时间:2017-01-17 14:58:05

标签: python list function

我有这个问题: 编写一个函数is_member(),它接受一个值(即一个数字,字符串等)x和一个值列表a,如果x是a的成员则返回True,否则返回False。 (注意,这正是in运算符所做的,但是为了练习,你应该假装Python没有这个运算符。) 我的代码:

def is_member(a):
    a = raw_input("Give a Number: ")
    b = ['hallo', '120', 'me']
    for i in a:
        if a[i] == b:
            return True
        else:
            return False
print is_member('a')    

Mit IDLE控制台,我来了:TypeError:字符串索引必须是整数,而不是str。问题是什么? 。非常感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

您的astr(字符串),接下来您使用for循环来迭代该字符串的字符?

你可能想以相反的方式做到这一点。之一:

for i in b:
    if a == i:
        return True
return False

或者:

for i in range(len(b)):
    if a == b[i]:
        return True
return False

请注意return False案例不能 else:这不是因为第一次检查失败,其余检查最终不会产生等效的元素。因此,在确定元素不在列表中之前,您必须循环遍历整个集合

答案 1 :(得分:1)

首先,如果您想使用raw_input,则不需要is_member参数,因为a始终会成为raw_input的返回值。< / p>

同样astring,而不是list,因此istring。 例如:

>>> for i in 'abc':
...     print(i)
...
a
b
c


is_member应该是:

def is_member():
    a = raw_input("Give a Number: ")
    b = ['hallo', '120', 'me']
    return a in b

print is_member()

def is_member(a):
    b = ['hallo', '120', 'me']
    return a in b

print is_member('a')

答案 2 :(得分:0)

你的问题是for循环设置>>> d = Dimension(1, 2) >>> tuple(d) (1, 2) 依次保持i的值,所以当你引用a时,它会尝试查找a[i],它显然不能。您只需将a['hallo']替换为a[i],然后就可以完美运行。