函数只打印列表中最后一项的正确语句?

时间:2016-07-12 21:12:31

标签: python list iteration

所以问题是:

  

编写一个函数is_member(),它接受​​一个值(即一个数字,字符串等)x和一个值列表a,并返回True if {{ 1}}是x的成员,否则为a。 (请注意,这正是in运算符所做的,但是为了练习,你应该假装Python没有这个运算符。)

这是我的代码:

False

如果我将值作为列表中的最后一项放置,我将只得到正确的答案,但在此之前的每个值即使它在列表中也打印出第二个list1 = type(list) value = type(int) def is_member(value, list1): for e in list1: if e == value: ans = 'Yes, the value ' + str(value) + ' is in the list' else: ans = 'No, the value ' + str(value) + ' is not in the list' return ans print is_member(2, [1, 2, 3, 4, 5, 6, 7]) 语句(没有值... )。

如何获取它以便为列表中的任何元素打印正确的语句?

4 个答案:

答案 0 :(得分:3)

def is_member(value, list1):
    for e in list1:
        if e == value:
            ans = 'Yes, the value ' + str(value) + ' is in the list'
            break
        else:
            ans = 'No, the value ' + str(value) + ' is not in the list'
    return ans


print is_member(2, [1, 2, 3, 4, 5, 6, 7])

你太近了,你只需要添加休息时间。 break语句停止循环的执行,并继续执行块之后的下一个可用代码。在这种情况下,您的退货声明

重要的是要注意,在每次迭代中将设置设置为相同的字符串是不必要的。但是,我想将您的代码修改为具有最少修改量的工作表单。

答案 1 :(得分:2)

def is_member(value, list1):
    for e in list1:
        if e == value:
            return 'Yes, the value ' + str(value) + ' is in the list' 
    return 'No, the value ' + str(value) + ' is not in the list'

与其他提议的答案一样有效。

答案 2 :(得分:2)

当您获得匹配时,您需要在for循环中返回,或者除非等于最后一个元素,否则您将始终将ans设置为即使在上一场比赛中,你的其他人也会阻止:

def is_member(value, list1):
    for e in list1:
        if e == value:
            # return on any match
            return  'Yes, the value ' + str(value) + ' is in the list'
    # if we get here we had no match.
    return 'No, the value ' + str(value) + ' is not in the list'

您还可以简化使用 来测试会员资格

def is_member(value, list1):
    if value in list1:
        return  'Yes, the value is in the list'
    return 'No, the value is not in the list'

答案 3 :(得分:0)

您问过州的问题

  

"编写一个函数is_member(),它接受一个值(即数字,字符串等)x和值列表a,如果x是a的成员则返回True,否则返回False。

def is_member(x, a):
    for list_item in a:
        if list_item == x:
            return True
    return False

所以是的,虽然你的代码目前只会根据最后一个值是否等于e返回结果(因为你每次迭代都覆盖ans),整个返回功能目前是不正确的要求。