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个数字,我只想打印偶数。 谢谢你的帮助
答案 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