Python删除奇数并且只打印偶数

时间:2014-04-29 18:55:03

标签: python-2.7

user = int(raw_input("Type 5 numbers"))
even = []

def purify(odd):
    for n in odd:
        even.append(n)
        if n % 2 > 0:
            print n



print purify(user)

您好我是初学者,我想了解这段代码有什么问题。 用户选择5个数字,我只想打印偶数。 谢谢你的帮助

5 个答案:

答案 0 :(得分:2)

有一些问题:

您不能将int应用于整个字符串,一次只能应用一个整数。

因此,如果您的数字是以空格分隔的,那么您应该将它们拆分为字符串列表。您可以在输入后立即转换它们,也可以在purify函数中等待它。

此外,您的purify函数会将所有值附加到列表even,而不先对其进行测试。

此外,您的测试是向后的 - 您只打印奇数,甚至不打印。

最后,如果要在函数外部打印它,则应return even的值,而不是在循环时打印它们。

我认为这个编辑过的版本应该可行。

user_raw = raw_input("Type some space-separated numbers")
user = user_raw.split()   # defaults to white space

def purify(odd):
    even = []
    for n in odd:
        if int(n) % 2 == 0:
            even.append(n)
    return even

print purify(user)

答案 1 :(得分:0)

raw_input返回一个字符串,但不能将其转换为int类型。

您可以使用:

user = raw_input("Input 5 numbers separated by commas: ").split(",")
user = [int(i) for i in user]

答案 2 :(得分:0)

def purify(x):
    new_lst = []
    for i in x:
        if i % 2 == 0:
            new_lst.append(i)
    return new_lst

搜索甚至

答案 3 :(得分:0)

filter将是"过滤"的最简单方式。偶数:

output = filter(lambda x:~x&1, input)

答案 4 :(得分:-1)

def purify(list_number):
    s=[]
    for number in list_number:
        if number%2==0:    
            s+=[number]
    return s